mirror of
https://wget.la/https://github.com/Wxw-Gu/WechatExplorer
synced 2026-10-04 03:01:42 +08:00
45 lines
1.6 KiB
TypeScript
45 lines
1.6 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import type { Contact } from '../../src/shared/types'
|
|
import { buildContactSearchIndex, filterContactSearchIndex } from '../../src/shared/contact-search'
|
|
|
|
/**
|
|
* Issue #51 regression guard for the *shared* search primitives.
|
|
*
|
|
* The bug report claims that when one keyword matches a private contact AND a
|
|
* group chat, the API returns nothing. These tests pin down that multi-match is
|
|
* itself NOT the problem: the shared index/filter pair already returns every
|
|
* match. The real defect lived in the data the HTTP layer fed into it.
|
|
*/
|
|
|
|
const user: Contact = {
|
|
m_nsUsrName: 'wxid_fixture_user',
|
|
m_nsNickName: '张三',
|
|
md5: 'fixture-user-md5',
|
|
type: 'user',
|
|
remark: '张三'
|
|
}
|
|
|
|
const group: Contact = {
|
|
m_nsUsrName: 'fixture_group@chatroom',
|
|
m_nsNickName: '张三的测试群',
|
|
md5: 'fixture-group-md5',
|
|
type: 'group'
|
|
}
|
|
|
|
describe('filterContactSearchIndex with a keyword hitting a contact and a group', () => {
|
|
it('returns both matches instead of collapsing to an empty list', () => {
|
|
const index = buildContactSearchIndex([user, group])
|
|
expect(filterContactSearchIndex(index, '张三')).toEqual([user, group])
|
|
})
|
|
|
|
it('still isolates the results with type=user', () => {
|
|
const index = buildContactSearchIndex([user, group])
|
|
expect(filterContactSearchIndex(index, '张三', 'user')).toEqual([user])
|
|
})
|
|
|
|
it('still isolates the results with type=group', () => {
|
|
const index = buildContactSearchIndex([user, group])
|
|
expect(filterContactSearchIndex(index, '张三', 'group')).toEqual([group])
|
|
})
|
|
})
|