summaryrefslogtreecommitdiff
path: root/frontend/src/lib/router.test.ts
blob: 944e342097d7e775d291387935d147c46e1c2ac4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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');
  });
});