fix(web): preserve route state and cancel stale reads
This commit is contained in:
@@ -105,6 +105,34 @@ test('high-volume history, track, and mileage requests forward AbortSignal', asy
|
||||
for (const [, init] of fetchMock.mock.calls) expect(init).toEqual({ signal: controller.signal });
|
||||
});
|
||||
|
||||
test('route-scoped platform reads forward AbortSignal on navigation cleanup', async () => {
|
||||
const fetchMock = vi.spyOn(globalThis, 'fetch').mockResolvedValue({ ok: true, json: async () => ({ data: {} }) } as Response);
|
||||
const controller = new AbortController();
|
||||
const signal = controller.signal;
|
||||
|
||||
await api.session(signal);
|
||||
await api.metricCatalog(signal);
|
||||
await api.historyMetricCatalog(signal);
|
||||
await api.historyExports(signal);
|
||||
await api.accessSummary({}, signal);
|
||||
await api.accessVehicles({ limit: 50, offset: 0 }, signal);
|
||||
await api.accessUnresolvedIdentities({ limit: 20, offset: 0 }, signal);
|
||||
await api.accessThresholds(signal);
|
||||
await api.alertSummaryV2({}, signal);
|
||||
await api.alertEventsV2({ limit: 20, offset: 0 }, signal);
|
||||
await api.alertEventV2('event-1', signal);
|
||||
await api.alertRulesV2(signal);
|
||||
await api.alertNotificationsV2(new URLSearchParams({ limit: '100' }), signal);
|
||||
await api.vehicleDetail(new URLSearchParams({ keyword: 'VIN001' }), signal);
|
||||
await api.latestTelemetry('VIN001', signal);
|
||||
await api.reverseGeocode(new URLSearchParams({ longitude: '113', latitude: '23' }), signal);
|
||||
await api.opsHealth(signal);
|
||||
await api.sourceReadiness(signal);
|
||||
|
||||
expect(fetchMock).toHaveBeenCalledTimes(18);
|
||||
for (const [, init] of fetchMock.mock.calls) expect(init?.signal).toBe(signal);
|
||||
});
|
||||
|
||||
test('rawFramesQuery posts structured JSON instead of URL query strings', async () => {
|
||||
const fetchMock = vi.spyOn(globalThis, 'fetch').mockResolvedValue({
|
||||
ok: true,
|
||||
|
||||
Reference in New Issue
Block a user