refactor: 收口公开码搜索计划
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import { describe, expect, test } from 'vitest';
|
||||
|
||||
import {
|
||||
type PlatformPublicCodeSearchStep,
|
||||
resolvePlatformPublicCodeSearchPlan,
|
||||
} from './platformPublicCodeSearchModel';
|
||||
|
||||
function expectSearchSteps(
|
||||
keyword: string,
|
||||
steps: readonly PlatformPublicCodeSearchStep[],
|
||||
) {
|
||||
expect(resolvePlatformPublicCodeSearchPlan(keyword)?.steps).toEqual(steps);
|
||||
}
|
||||
|
||||
describe('platformPublicCodeSearchModel', () => {
|
||||
test('ignores empty public code search input', () => {
|
||||
expect(resolvePlatformPublicCodeSearchPlan(' ')).toBeNull();
|
||||
});
|
||||
|
||||
test('normalizes public code search keyword before planning', () => {
|
||||
expect(resolvePlatformPublicCodeSearchPlan(' PZ-00000001 ')).toEqual({
|
||||
normalizedKeyword: 'PZ-00000001',
|
||||
steps: ['puzzle-work'],
|
||||
});
|
||||
});
|
||||
|
||||
test('searches internal user ids directly without work fallback', () => {
|
||||
expectSearchSteps('user_00000001', ['user-id']);
|
||||
expectSearchSteps('USER-profile-1', ['user-id']);
|
||||
});
|
||||
|
||||
test('routes known public work prefixes to their play-specific lookup', () => {
|
||||
const cases: Array<
|
||||
[keyword: string, step: PlatformPublicCodeSearchStep]
|
||||
> = [
|
||||
['PZ-EPUBLIC1', 'puzzle-work'],
|
||||
['BF-NPUBLIC1', 'big-fish-work'],
|
||||
['JH-EPUBLIC1', 'jump-hop-work'],
|
||||
['WF-EPUBLIC1', 'wooden-fish-work'],
|
||||
['BO-EPUBLIC1', 'baby-object-match-work'],
|
||||
['M3-EPUBLIC1', 'match3d-work'],
|
||||
['M3D-LEGACY1', 'match3d-work'],
|
||||
['SH-EPUBLIC1', 'square-hole-work'],
|
||||
['VN-EPUBLIC1', 'visual-novel-work'],
|
||||
['BB-EPUBLIC1', 'bark-battle-work'],
|
||||
];
|
||||
|
||||
for (const [keyword, step] of cases) {
|
||||
expectSearchSteps(keyword, [step]);
|
||||
}
|
||||
});
|
||||
|
||||
test('searches RPG public works before public user codes for CW and numeric codes', () => {
|
||||
expectSearchSteps('CW-00000001', ['rpg-work', 'public-user-code']);
|
||||
expectSearchSteps('12345678', ['rpg-work', 'public-user-code']);
|
||||
});
|
||||
|
||||
test('keeps legacy user-code-first fallback for SY and ordinary keywords', () => {
|
||||
const legacyFallbackSteps = [
|
||||
'public-user-code',
|
||||
'rpg-work',
|
||||
'bark-battle-work',
|
||||
'public-user-code',
|
||||
] as const;
|
||||
|
||||
expectSearchSteps('SY-00000001', legacyFallbackSteps);
|
||||
expectSearchSteps('月井守望', legacyFallbackSteps);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user