Files
WebDrop/web/src/app/navigation.test.ts
T
2026-10-02 00:59:37 +08:00

23 lines
972 B
TypeScript

import { describe, expect, it } from 'vitest';
// navigation.ts 在模块加载时读 location/window,这里只测纯函数,用最小的桩
Object.assign(globalThis, {
location: { pathname: '/', origin: 'http://x' },
window: { addEventListener: () => {} },
history: { state: null },
});
const { parseRoute } = await import('./navigation');
describe('parseRoute', () => {
it('根路径是首页', () => expect(parseRoute('/')).toEqual({ name: 'home' }));
it('/c/:id 是频道', () => {
expect(parseRoute('/c/k3Fq9xWm2LpA7sTdQ8vZ1n')).toEqual({ name: 'channel', id: 'k3Fq9xWm2LpA7sTdQ8vZ1n' });
});
it('/s/:id 是便捷分享', () => {
expect(parseRoute('/s/k3Fq9xWm2LpA7sTdQ8vZ1n')).toEqual({ name: 'share', id: 'k3Fq9xWm2LpA7sTdQ8vZ1n' });
});
it('id 格式不对回到首页', () => expect(parseRoute('/c/short')).toEqual({ name: 'home' }));
it('未知路径回到首页', () => expect(parseRoute('/other')).toEqual({ name: 'home' }));
});