112 lines
4.0 KiB
TypeScript
112 lines
4.0 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import {
|
|
buildHydrogenDrillUrl,
|
|
parseHydrogenDrillContext,
|
|
} from './hydrogen-drill-context.js';
|
|
|
|
test('parses a station drill context including station zero', () => {
|
|
assert.deepEqual(
|
|
parseHydrogenDrillContext('?hydrogenLevel=station&hydrogenStation=0&hydrogenStationName=%E6%9C%AA%E5%85%B3%E8%81%94%E7%AB%99%E7%82%B9&hydrogenScope=lingniu&hydrogenStart=2026-08-01&hydrogenEnd=2026-08-07'),
|
|
{
|
|
level: 'station',
|
|
stationId: 0,
|
|
stationName: '未关联站点',
|
|
vehicleScope: 'lingniu',
|
|
startDate: '2026-08-01',
|
|
endDate: '2026-08-07',
|
|
},
|
|
);
|
|
});
|
|
|
|
test('requires a valid entity for station and customer levels', () => {
|
|
assert.equal(parseHydrogenDrillContext('?hydrogenLevel=station&hydrogenStation=-1').level, 'overview');
|
|
assert.equal(parseHydrogenDrillContext('?hydrogenLevel=customer').level, 'overview');
|
|
assert.equal(
|
|
parseHydrogenDrillContext(`?hydrogenLevel=customer&hydrogenCustomer=${'x'.repeat(129)}`).level,
|
|
'overview',
|
|
);
|
|
});
|
|
|
|
test('parses and builds a customer drill context', () => {
|
|
const context = parseHydrogenDrillContext(
|
|
'?hydrogenLevel=customer&hydrogenCustomer=%E6%AD%A6%E6%B1%89%E5%AE%A2%E6%88%B7&hydrogenScope=lingniu&hydrogenStart=2026-01-01&hydrogenEnd=2026-08-07',
|
|
);
|
|
assert.deepEqual(context, {
|
|
level: 'customer',
|
|
customerName: '武汉客户',
|
|
vehicleScope: 'lingniu',
|
|
startDate: '2026-01-01',
|
|
endDate: '2026-08-07',
|
|
});
|
|
|
|
assert.equal(
|
|
buildHydrogenDrillUrl(
|
|
{ pathname: '/energy', search: '', hash: '#hydrogen' },
|
|
{ ...context, year: 2026 },
|
|
),
|
|
'/energy?hydrogenLevel=customer&hydrogenYear=2026&hydrogenCustomer=%E6%AD%A6%E6%B1%89%E5%AE%A2%E6%88%B7&hydrogenScope=lingniu&hydrogenStart=2026-01-01&hydrogenEnd=2026-08-07#hydrogen',
|
|
);
|
|
});
|
|
|
|
test('builds a namespaced station URL and preserves unrelated parameters', () => {
|
|
const url = buildHydrogenDrillUrl(
|
|
{ pathname: '/energy', search: '?company=5', hash: '#hydrogen' },
|
|
{
|
|
level: 'station',
|
|
year: 2026,
|
|
stationId: 18,
|
|
stationName: '测试加氢站',
|
|
vehicleScope: 'lingniu',
|
|
startDate: '2026-08-01',
|
|
endDate: '2026-08-07',
|
|
},
|
|
);
|
|
|
|
assert.equal(
|
|
url,
|
|
'/energy?company=5&hydrogenLevel=station&hydrogenYear=2026&hydrogenStation=18&hydrogenStationName=%E6%B5%8B%E8%AF%95%E5%8A%A0%E6%B0%A2%E7%AB%99&hydrogenScope=lingniu&hydrogenStart=2026-08-01&hydrogenEnd=2026-08-07#hydrogen',
|
|
);
|
|
});
|
|
|
|
test('clears station parameters when returning to overview', () => {
|
|
const url = buildHydrogenDrillUrl(
|
|
{
|
|
pathname: '/energy',
|
|
search: '?hydrogenLevel=station&hydrogenStation=18&hydrogenStationName=test&company=5',
|
|
hash: '#hydrogen',
|
|
},
|
|
{ level: 'overview', vehicleScope: 'lingniu' },
|
|
);
|
|
|
|
assert.equal(url, '/energy?company=5&hydrogenScope=lingniu#hydrogen');
|
|
});
|
|
|
|
test('preserves a selected order date and page in the hydrogen analysis URL', () => {
|
|
const context = parseHydrogenDrillContext(
|
|
'?hydrogenScope=lingniu&hydrogenStart=2026-08-01&hydrogenEnd=2026-08-07&hydrogenDate=2026-08-05&hydrogenPage=3',
|
|
);
|
|
assert.equal(context.selectedDate, '2026-08-05');
|
|
assert.equal(context.orderPage, 3);
|
|
assert.equal(
|
|
buildHydrogenDrillUrl(
|
|
{ pathname: '/energy', search: '?company=5', hash: '#hydrogen' },
|
|
context,
|
|
),
|
|
'/energy?company=5&hydrogenScope=lingniu&hydrogenStart=2026-08-01&hydrogenEnd=2026-08-07&hydrogenDate=2026-08-05&hydrogenPage=3#hydrogen',
|
|
);
|
|
assert.equal(
|
|
parseHydrogenDrillContext('?hydrogenStart=2026-08-01&hydrogenEnd=2026-08-07&hydrogenDate=2026-08-08').selectedDate,
|
|
undefined,
|
|
);
|
|
assert.equal(parseHydrogenDrillContext('?hydrogenPage=3').orderPage, undefined);
|
|
assert.equal(parseHydrogenDrillContext('?hydrogenDate=2026-08-05&hydrogenPage=0').orderPage, undefined);
|
|
assert.equal(
|
|
buildHydrogenDrillUrl(
|
|
{ pathname: '/energy', search: '', hash: '#hydrogen' },
|
|
{ level: 'overview', vehicleScope: 'lingniu', orderPage: 3 },
|
|
),
|
|
'/energy?hydrogenScope=lingniu#hydrogen',
|
|
);
|
|
});
|