lecheminvert.tech/test/unit/booking.spec.ts
Adam Belkacemi cf6ee64e31
Some checks are pending
CI / tests (push) Waiting to run
CI / deploiement (push) Blocked by required conditions
Import initial : code en production sur Hetzner
2026-09-07 18:21:38 +00:00

65 lines
No EOL
2.5 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { buildBookingLink, buildChargemapLink, buildCheckMyBusLink, buildKomboLink } from '../../shared/booking'
import type { Place } from '../../shared/types'
const lille: Place = { label: 'Lille, France', lat: 50.6292, lon: 3.0573 }
const paris: Place = { label: 'Paris, France', lat: 48.8566, lon: 2.3522 }
const stEtienne: Place = { label: 'Saint-Étienne, France', lat: 45.4397, lon: 4.3872 }
const date = new Date('2026-08-15T00:00:00Z')
describe('buildKomboLink', () => {
it('genere une URL Kombo avec noms de ville en clair', () => {
const { url, provider } = buildKomboLink(lille, paris, date)
expect(url).toContain('/2026-08-15/Lille/Paris/')
expect(url).toContain('/outward/1/1/18/')
expect(url).toContain('/results')
expect(provider).toBe('Kombo')
})
it('gere les accents dans les noms de ville', () => {
const { url } = buildKomboLink(stEtienne, paris, date)
// Saint-Etienne conserve son tiret et son E encode
expect(url).toContain('Saint-')
expect(url).toContain('Paris')
})
})
describe('buildCheckMyBusLink', () => {
it('genere une URL CheckMyBus avec slug + coordonnees + UUID zeros', () => {
const { url, provider } = buildCheckMyBusLink(lille, paris, date)
expect(url).toContain('/lille/paris?')
expect(url).toContain('departureDate=2026-08-15')
expect(url).toContain('50.6292%2C3.0573')
expect(url).toContain('48.8566%2C2.3522')
expect(url).toContain('00000000-0000-0000-0000-000000000000')
expect(provider).toBe('CheckMyBus')
})
it('slugifie les villes avec accents', () => {
const { url } = buildCheckMyBusLink(stEtienne, paris, date)
expect(url).toContain('/saint-etienne/paris?')
})
})
describe('buildChargemapLink', () => {
it('renvoie la page d accueil du planificateur', () => {
const { url, provider } = buildChargemapLink()
expect(url).toBe('https://chargemap.com/map')
expect(provider).toBe('Chargemap')
})
})
describe('buildBookingLink', () => {
it('renvoie Kombo pour train', () => {
expect(buildBookingLink('train', lille, paris, date)?.provider).toBe('Kombo')
})
it('renvoie CheckMyBus pour bus', () => {
expect(buildBookingLink('bus', lille, paris, date)?.provider).toBe('CheckMyBus')
})
it('renvoie Chargemap pour voiture electrique', () => {
expect(buildBookingLink('electric_car', lille, paris, date)?.provider).toBe('Chargemap')
})
it('renvoie null pour velo', () => {
expect(buildBookingLink('bike', lille, paris, date)).toBeNull()
})
})