summaryrefslogtreecommitdiff
path: root/frontend/src/lib/router.test.ts
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-17 14:32:37 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-17 14:32:37 +0800
commit5c0ba37eda80d39e6ceca59bb1d5f4942f858995 (patch)
tree948723f9cedf7ccb0707fa6ee516bd30fe20fd10 /frontend/src/lib/router.test.ts
downloadstrategy-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.ts51
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');
+ });
+});