You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

39 lines
1.2 KiB

import { describe, expect, it } from 'vitest'
import {
filterPubkeysByListSearch,
profileMatchesListSearch,
pubkeyMatchesListSearch
} from './filter-pubkeys-by-profile-search'
import type { TProfile } from '@/types'
const PK_A = 'a'.repeat(64)
const PK_B = 'b'.repeat(64)
describe('pubkeyMatchesListSearch', () => {
it('matches hex pubkey prefix', () => {
expect(pubkeyMatchesListSearch(PK_A, PK_A.slice(0, 8))).toBe(true)
expect(pubkeyMatchesListSearch(PK_B, PK_A.slice(0, 8))).toBe(false)
})
})
describe('profileMatchesListSearch', () => {
it('matches display name and nip05', () => {
const profile: TProfile = {
pubkey: PK_A,
npub: 'npub1test',
username: 'Alice Display',
original_username: 'Alice Display',
nip05: 'alice@example.com'
}
expect(profileMatchesListSearch(profile, 'alice')).toBe(true)
expect(profileMatchesListSearch(profile, 'example.com')).toBe(true)
expect(profileMatchesListSearch(profile, 'bob')).toBe(false)
})
})
describe('filterPubkeysByListSearch', () => {
it('returns only exact pubkey when query decodes to hex', () => {
const out = filterPubkeysByListSearch([PK_A, PK_B], new Map(), PK_A)
expect(out).toEqual([PK_A])
})
})