mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-19 21:46:49 +00:00
31 lines
1.3 KiB
TypeScript
31 lines
1.3 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { resolveLegMode } from './legMode';
|
|
|
|
const P = (o?: Partial<{ leg_transport_mode: string | null; incoming_leg_transport_mode: string | null }>) =>
|
|
({ isPlace: true, ...o });
|
|
const B = () => ({ isPlace: false });
|
|
|
|
describe('resolveLegMode', () => {
|
|
it('origin place with outgoing mode wins', () => {
|
|
expect(resolveLegMode(P({ leg_transport_mode: 'cycling' }), P(), 'walking')).toBe('cycling');
|
|
});
|
|
it('origin place, no override -> day default', () => {
|
|
expect(resolveLegMode(P(), P(), 'driving')).toBe('driving');
|
|
});
|
|
it('non-place origin -> destination incoming override', () => {
|
|
expect(resolveLegMode(B(), P({ incoming_leg_transport_mode: 'transit' }), 'walking')).toBe('transit');
|
|
});
|
|
it('non-place origin, no incoming override -> day default', () => {
|
|
expect(resolveLegMode(B(), P(), 'walking')).toBe('walking');
|
|
});
|
|
it('no place endpoint at all -> day default', () => {
|
|
expect(resolveLegMode(B(), B(), 'walking')).toBe('walking');
|
|
});
|
|
it('incoming is inert when origin is a place', () => {
|
|
expect(resolveLegMode(P(), P({ incoming_leg_transport_mode: 'transit' }), 'walking')).toBe('walking');
|
|
});
|
|
it('undefined dest falls back to day default for a non-place origin', () => {
|
|
expect(resolveLegMode(B(), undefined, 'walking')).toBe('walking');
|
|
});
|
|
});
|