diff options
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'); + }); +}); |
