Files
Train/apps/api/src/search/search.service.spec.ts
T
2026-06-16 00:55:20 +08:00

42 lines
1.1 KiB
TypeScript

import Database from 'better-sqlite3';
import { SearchService } from './search.service';
import { seedDatabase } from '../testing/seed';
/** SearchService 单元测试 — 对应 T-1.4 UT。*/
describe('SearchService', () => {
let service: SearchService;
let db: Database.Database;
beforeAll(() => {
db = new Database(':memory:');
seedDatabase(db);
service = new SearchService({ db } as any);
});
afterAll(() => db.close());
it('空查询返回空结果', () => {
expect(service.search('').results).toEqual([]);
});
it('按型号命中', () => {
const res = service.search('CR400');
expect(res.results.length).toBeGreaterThan(0);
expect(res.results[0].model_code).toBe('CR400AF');
});
it('按生产商命中', () => {
const res = service.search('株洲');
expect(res.results.some((r) => r.model_code === 'HXD1型')).toBe(true);
});
it('精确匹配排在前', () => {
const res = service.search('CR400AF');
expect(res.results[0].rank).toBe(0);
});
it('特殊字符不崩溃', () => {
expect(() => service.search("%_'")).not.toThrow();
});
});