perf(monitor): skip metadata-only map work
This commit is contained in:
@@ -248,6 +248,33 @@ test('skips unchanged refresh redraws and replaces only a moved vehicle label',
|
||||
expect((replacementLabels[0].options.text as { content: string }).content).toBe('粤A12345');
|
||||
});
|
||||
|
||||
test('does not traverse unchanged point arrays for an asOf-only refresh', async () => {
|
||||
window.__LINGNIU_APP_CONFIG__ = { amapWebJsKey: 'amap-web-key' };
|
||||
window.AMapLoader = { load: vi.fn(async () => amapMock()) };
|
||||
let pointReads = 0;
|
||||
const observedPoints = new Proxy(pointMap.points, {
|
||||
get(target, property, receiver) {
|
||||
if (typeof property === 'string' && /^\d+$/.test(property)) pointReads += 1;
|
||||
return Reflect.get(target, property, receiver);
|
||||
}
|
||||
});
|
||||
const observedMap = { ...pointMap, points: observedPoints };
|
||||
const view = render(<FleetMap vehicles={[]} monitorMap={observedMap} onSelect={() => undefined} />);
|
||||
await waitFor(() => expect(addLabels).toHaveBeenCalled());
|
||||
pointReads = 0;
|
||||
|
||||
await act(async () => {
|
||||
view.rerender(<FleetMap
|
||||
vehicles={[]}
|
||||
monitorMap={{ ...observedMap, asOf: '2026-07-14T01:00:15Z' }}
|
||||
onSelect={() => undefined}
|
||||
/>);
|
||||
await Promise.resolve();
|
||||
});
|
||||
|
||||
expect(pointReads).toBe(0);
|
||||
});
|
||||
|
||||
test('converts AMap GCJ-02 bounds back to WGS-84 before requesting monitor data', async () => {
|
||||
const [west, south] = wgs84ToGcj02(113, 22);
|
||||
const [east, north] = wgs84ToGcj02(114, 24);
|
||||
|
||||
Reference in New Issue
Block a user