diff options
| author | Somhairle H. Marisol <[email protected]> | 2026-09-17 14:32:37 +0800 |
|---|---|---|
| committer | Somhairle H. Marisol <[email protected]> | 2026-09-17 14:32:37 +0800 |
| commit | 5c0ba37eda80d39e6ceca59bb1d5f4942f858995 (patch) | |
| tree | 948723f9cedf7ccb0707fa6ee516bd30fe20fd10 /frontend/src/lib/router.test.ts | |
| download | strategy-lab-5c0ba37eda80d39e6ceca59bb1d5f4942f858995.tar.gz | |
chore: establish Strategy Lab source baseline (development, not release)
Diffstat (limited to 'frontend/src/lib/router.test.ts')
| -rw-r--r-- | frontend/src/lib/router.test.ts | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/frontend/src/lib/router.test.ts b/frontend/src/lib/router.test.ts new file mode 100644 index 0000000..944e342 --- /dev/null +++ b/frontend/src/lib/router.test.ts @@ -0,0 +1,51 @@ +import { describe, expect, it } from 'vitest'; +import { routeFromHash, projectPath } from './router'; + +function setHash(h: string) { + window.location.hash = h; +} + +describe('router', () => { + it('routes auth pages', () => { + setHash('#/login'); + expect(routeFromHash().name).toBe('login'); + setHash('#/register'); + expect(routeFromHash().name).toBe('register'); + setHash('#/reset'); + expect(routeFromHash().name).toBe('reset'); + }); + + it('routes protected areas', () => { + setHash('#/projects'); + expect(routeFromHash().name).toBe('projects'); + setHash('#/datasets'); + expect(routeFromHash().name).toBe('datasets'); + setHash('#/runs'); + expect(routeFromHash().name).toBe('runs'); + setHash('#/usage'); + expect(routeFromHash().name).toBe('usage'); + setHash('#/account'); + expect(routeFromHash().name).toBe('account'); + setHash('#/admin'); + expect(routeFromHash().name).toBe('admin'); + }); + + it('routes project tabs', () => { + setHash('#/projects/abc-1/strategy'); + const r = routeFromHash(); + expect(r.name).toBe('project-strategy'); + expect(r.params.id).toBe('abc-1'); + setHash('#/projects/abc-1'); + expect(routeFromHash().name).toBe('project-data'); + setHash('#/projects/abc-1/backtest'); + expect(routeFromHash().name).toBe('project-backtest'); + setHash('#/projects/abc-1/results?run=r9'); + const rr = routeFromHash(); + expect(rr.name).toBe('project-results'); + expect(rr.query.get('run')).toBe('r9'); + }); + + it('projects deep path builder', () => { + expect(projectPath('id1', 'strategy')).toBe('/projects/id1/strategy'); + }); +}); |
