perf(tracks): coalesce address lookups

This commit is contained in:
lingniu
2026-07-16 06:22:37 +08:00
parent 41e2b1ab97
commit e6d26faad9
4 changed files with 52 additions and 9 deletions

View File

@@ -74,3 +74,20 @@ test('renders a map-first replay workspace and connects stop, event, and panel i
await waitFor(() => expect(client.getQueryCache().findAll({ queryKey: ['track-playback'] })).toHaveLength(0));
await waitFor(() => expect(client.getQueryCache().findAll({ queryKey: ['track-address'] })).toHaveLength(0));
});
test('coalesces rapid track scrubbing into one address lookup for the final point', async () => {
const client = new QueryClient({ defaultOptions: { queries: { retry: false } } });
render(<QueryClientProvider client={client}><MemoryRouter future={ROUTER_FUTURE} initialEntries={['/tracks?keyword=LTEST000000000001&dateFrom=2026-07-15T00:00&dateTo=2026-07-15T23:59']}><TrackPage /></MemoryRouter></QueryClientProvider>);
expect((await screen.findAllByText('粤A12345')).length).toBeGreaterThan(0);
await waitFor(() => expect(mocks.reverseGeocode).toHaveBeenCalledTimes(1));
const progress = screen.getByRole('slider', { name: '轨迹播放进度' });
fireEvent.change(progress, { target: { value: '1' } });
fireEvent.change(progress, { target: { value: '2' } });
expect(screen.getByText('位置已变化,等待地址解析…')).toBeInTheDocument();
await waitFor(() => expect(mocks.reverseGeocode).toHaveBeenCalledTimes(2));
expect(mocks.reverseGeocode.mock.calls[1][0].get('longitude')).toBe('113.3000');
expect(mocks.reverseGeocode.mock.calls[1][0].get('latitude')).toBe('23.3000');
});