feat(mileage): compact mobile results and add date presets

This commit is contained in:
lingniu
2026-07-16 12:53:32 +08:00
parent c1b4703810
commit 4877c3fe8f
3 changed files with 69 additions and 31 deletions

View File

@@ -58,6 +58,33 @@ test('renders only the desktop matrix with dates as columns and a period total',
expect(mocks.dailyMileage.mock.calls[0][0].get('protocols')).toBe('GB32960,JT808,YUTONG_MQTT');
});
test('defaults to seven days and supports today and yesterday shortcuts', async () => {
prepareData();
renderPage();
const localDate = (value: Date) => new Date(value.getTime() - value.getTimezoneOffset() * 60_000).toISOString().slice(0, 10);
const today = localDate(new Date());
const yesterday = localDate(new Date(Date.now() - 86_400_000));
const sevenDaysAgo = localDate(new Date(Date.now() - 6 * 86_400_000));
await waitFor(() => expect(mocks.mileageStatistics).toHaveBeenCalled());
expect(mocks.mileageStatistics.mock.calls[0][0].get('dateFrom')).toBe(sevenDaysAgo);
expect(mocks.mileageStatistics.mock.calls[0][0].get('dateTo')).toBe(today);
fireEvent.click(screen.getByRole('button', { name: '昨天' }));
await waitFor(() => {
const params = mocks.mileageStatistics.mock.calls[mocks.mileageStatistics.mock.calls.length - 1]?.[0];
expect(params.get('dateFrom')).toBe(yesterday);
expect(params.get('dateTo')).toBe(yesterday);
});
fireEvent.click(screen.getByRole('button', { name: '今天' }));
await waitFor(() => {
const params = mocks.mileageStatistics.mock.calls[mocks.mileageStatistics.mock.calls.length - 1]?.[0];
expect(params.get('dateFrom')).toBe(today);
expect(params.get('dateTo')).toBe(today);
});
});
test('rejects overlong mileage ranges before querying or rendering a huge matrix', async () => {
prepareData();
const view = renderPage('/statistics?vins=LTEST000000000001&dateFrom=2025-01-01&dateTo=2026-07-14');