import assert from 'node:assert/strict'; import test from 'node:test'; import { buildMileageDrillUrl, parseMileageDrillContext } from './drill-context.js'; test('parses a vehicle drill context', () => { const context = parseMileageDrillContext( '?mileageLevel=vehicle&mileagePlate=%E7%B2%A4A08190F&mileageStart=2026-08-01&mileageEnd=2026-08-07&mileageSource=instrument,gps', ); assert.deepEqual(context, { level: 'vehicle', plate: '粤A08190F', startDate: '2026-08-01', endDate: '2026-08-07', sourcePriority: ['instrument', 'gps'], }); }); test('requires complete context for breakdown and vehicle levels', () => { assert.equal(parseMileageDrillContext('?mileageLevel=vehicle').level, 'overview'); assert.equal(parseMileageDrillContext('?mileageLevel=breakdown&mileageDimension=region').level, 'overview'); }); test('builds a namespaced URL and preserves unrelated parameters', () => { const url = buildMileageDrillUrl( { pathname: '/asset', search: '?company=5&legacy=1', hash: '#mileage' }, { level: 'vehicle', plate: '粤A08190F', startDate: '2026-08-01', endDate: '2026-08-07', sourcePriority: ['instrument'], }, ); assert.equal( url, '/asset?company=5&legacy=1&mileageLevel=vehicle&mileagePlate=%E7%B2%A4A08190F&mileageStart=2026-08-01&mileageEnd=2026-08-07&mileageSource=instrument#mileage', ); }); test('clears entity drill parameters when returning to overview', () => { const url = buildMileageDrillUrl( { pathname: '/asset', search: '?mileageLevel=vehicle&mileagePlate=%E7%B2%A4A08190F&company=5', hash: '#mileage', }, { level: 'overview', sourcePriority: ['instrument'] }, ); assert.equal(url, '/asset?company=5&mileageSource=instrument#mileage'); });