Files
Genarrative/src/services/publicWorkCode.test.ts

82 lines
2.2 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
buildCustomWorldPublicWorkCode,
buildJumpHopPublicWorkCode,
buildPuzzleClearPublicWorkCode,
buildWoodenFishPublicWorkCode,
isSameCustomWorldPublicWorkCode,
isSameJumpHopPublicWorkCode,
isSamePuzzleClearPublicWorkCode,
isSameWoodenFishPublicWorkCode,
} from './publicWorkCode';
describe('publicWorkCode', () => {
it('builds and matches jump-hop public work codes from profile ids', () => {
expect(buildJumpHopPublicWorkCode('jump-hop-profile-12345678')).toBe(
'JH-12345678',
);
expect(
isSameJumpHopPublicWorkCode(
'jh-12345678',
'jump-hop-profile-12345678',
),
).toBe(true);
expect(
isSameJumpHopPublicWorkCode(
'jump hop profile 12345678',
'jump-hop-profile-12345678',
),
).toBe(true);
});
it('builds and matches puzzle-clear public work codes from profile ids', () => {
expect(buildPuzzleClearPublicWorkCode('puzzle-clear-profile-12345678')).toBe(
'PC-12345678',
);
expect(
isSamePuzzleClearPublicWorkCode(
'pc-12345678',
'puzzle-clear-profile-12345678',
),
).toBe(true);
expect(
isSamePuzzleClearPublicWorkCode(
'puzzle clear profile 12345678',
'puzzle-clear-profile-12345678',
),
).toBe(true);
});
it('builds wooden fish public work codes with WF prefix', () => {
expect(buildWoodenFishPublicWorkCode('wooden-fish-profile-1234abcd')).toBe(
'WF-1234ABCD',
);
});
it('builds and matches custom world public work codes from profile ids', () => {
expect(buildCustomWorldPublicWorkCode('world-public-1')).toBe('CW-00000001');
expect(isSameCustomWorldPublicWorkCode('cw-00000001', 'world-public-1')).toBe(
true,
);
expect(
isSameCustomWorldPublicWorkCode('world-public-1', 'world-public-1'),
).toBe(true);
});
it('matches wooden fish public work codes and raw profile ids', () => {
expect(
isSameWoodenFishPublicWorkCode(
'wf-1234abcd',
'wooden-fish-profile-1234abcd',
),
).toBe(true);
expect(
isSameWoodenFishPublicWorkCode(
'wooden-fish-profile-1234abcd',
'wooden-fish-profile-1234abcd',
),
).toBe(true);
});
});