Import initial : code en production sur Hetzner
This commit is contained in:
commit
cf6ee64e31
43 changed files with 14404 additions and 0 deletions
69
test/unit/transitous.spec.ts
Normal file
69
test/unit/transitous.spec.ts
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
import { describe, expect, it } from 'vitest'
|
||||
import { dominant, family, legMin } from '../../server/utils/transitous'
|
||||
|
||||
const leg = (mode: string, minutes: number) => ({
|
||||
mode,
|
||||
duration: minutes * 60,
|
||||
startTime: '2026-07-29T08:00:00Z',
|
||||
endTime: '2026-07-29T08:00:00Z',
|
||||
from: { lat: 0, lon: 0 },
|
||||
to: { lat: 0, lon: 0 },
|
||||
})
|
||||
|
||||
const journey = (legs: ReturnType<typeof leg>[]) => ({ duration: 0, transfers: 0, legs })
|
||||
|
||||
describe('family', () => {
|
||||
it('classe le TGV et le TER dans la meme famille ferroviaire', () => {
|
||||
expect(family('HIGHSPEED_RAIL')).toBe('rail')
|
||||
expect(family('REGIONAL_RAIL')).toBe('rail')
|
||||
})
|
||||
|
||||
it('classe metro, tram et bus comme transport urbain', () => {
|
||||
expect(family('SUBWAY')).toBe('urban')
|
||||
expect(family('TRAM')).toBe('urban')
|
||||
expect(family('BUS')).toBe('urban')
|
||||
})
|
||||
|
||||
it('ne compte pas la marche comme un transport', () => {
|
||||
expect(family('WALK')).toBe('walk')
|
||||
})
|
||||
|
||||
it('traite un mode inconnu comme de la marche plutot que de planter', () => {
|
||||
expect(family('TELEPORTATION')).toBe('walk')
|
||||
})
|
||||
})
|
||||
|
||||
describe('legMin', () => {
|
||||
it('convertit la duree en minutes', () => {
|
||||
expect(legMin(leg('BUS', 12))).toBe(12)
|
||||
})
|
||||
|
||||
it('retombe sur les horodatages quand la duree manque', () => {
|
||||
const l = {
|
||||
mode: 'BUS',
|
||||
startTime: '2026-07-29T08:00:00Z',
|
||||
endTime: '2026-07-29T08:45:00Z',
|
||||
from: { lat: 0, lon: 0 },
|
||||
to: { lat: 0, lon: 0 },
|
||||
}
|
||||
expect(legMin(l)).toBe(45)
|
||||
})
|
||||
})
|
||||
|
||||
describe('dominant', () => {
|
||||
it('classe en ferroviaire un trajet TGV precede d un bus de rabattement', () => {
|
||||
expect(dominant(journey([leg('BUS', 10), leg('HIGHSPEED_RAIL', 100)]))).toBe('rail')
|
||||
})
|
||||
|
||||
it('classe en urbain un trajet ou le bus domine largement', () => {
|
||||
expect(dominant(journey([leg('REGIONAL_RAIL', 5), leg('BUS', 90)]))).toBe('urban')
|
||||
})
|
||||
|
||||
it('ignore la marche dans la ponderation', () => {
|
||||
expect(dominant(journey([leg('WALK', 200), leg('TRAM', 10)]))).toBe('urban')
|
||||
})
|
||||
|
||||
it('renvoie walk quand il n y a aucun transport en commun', () => {
|
||||
expect(dominant(journey([leg('WALK', 30)]))).toBe('walk')
|
||||
})
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue