Files
ln-bi/src/modules/mileage/mileage-display.test.ts
T
2026-10-13 13:20:14 +08:00

24 lines
1.1 KiB
TypeScript

import assert from 'node:assert/strict';
import test from 'node:test';
import { monitoringMileageValue, recentMileageStats } from './mileage-display';
import type { VehicleRecentDay } from './api';
import type { MonitoringVehicle } from './types';
const day = (dailyKm: number, isDataSynced = true): VehicleRecentDay => ({
date: '2026-10-12', dailyKm, isDataSynced, sourceProtocol: null, sourceCategory: null,
});
test('详情合计、平均值和有数据天排除缺失日,保留真实零里程', () => {
assert.deepEqual(recentMileageStats([day(100), day(900, false), day(200), day(0)]), {
totalKm: 300, synced: 3, avg: 100, max: 200, totalDays: 4,
});
assert.equal(recentMileageStats([day(0, false)]).synced, 0);
});
test('列表全区间缺失时显示横杠,即使存在累计里程', () => {
const vehicle = { dailyKm: 0, isDataSynced: false, totalKm: 64413.6 } as MonitoringVehicle;
assert.equal(monitoringMileageValue(vehicle), '—');
assert.equal(monitoringMileageValue({ ...vehicle, isDataSynced: true }), 0);
assert.equal(monitoringMileageValue({ ...vehicle, isDataSynced: true, dailyKm: 5417 }), 5417);
});