This commit is contained in:
Andras Schmelczer 2026-05-12 22:13:07 +01:00
parent 11711c57e6
commit 81a16f543c
21 changed files with 29072 additions and 1913 deletions

View file

@ -9,6 +9,7 @@ import { createElectionVoteShareFilterKey } from './election-filter';
import { createEthnicityFilterKey } from './ethnicity-filter';
import {
POI_COUNT_2KM_FILTER_NAME,
TRANSPORT_DISTANCE_FILTER_NAME,
createPoiDistanceFilterKey,
createPoiFilterKey,
} from './poi-distance-filter';
@ -225,13 +226,13 @@ describe('url-state', () => {
it('round-trips repeated amenity distance filters with dedicated URL params', () => {
const park = createPoiDistanceFilterKey('Distance to nearest park (km)', 3);
const tesco = createPoiDistanceFilterKey('Distance to nearest Tesco (km)', 4);
const grocery = createPoiDistanceFilterKey('Distance to nearest grocery store (km)', 4);
const params = stateToParams(
null,
{
[park]: [0, 0.4],
[tesco]: [0, 1.5],
[grocery]: [0, 1.5],
},
[],
new Set(),
@ -240,7 +241,7 @@ describe('url-state', () => {
expect(params.getAll('amenityDistance')).toEqual([
'Distance%20to%20nearest%20park%20(km):0:0.4',
'Distance%20to%20nearest%20Tesco%20(km):0:1.5',
'Distance%20to%20nearest%20grocery%20store%20(km):0:1.5',
]);
expect(params.getAll('filter')).toEqual([]);
@ -249,7 +250,60 @@ describe('url-state', () => {
expect(state.filters).toEqual({
[createPoiDistanceFilterKey('Distance to nearest park (km)', 0)]: [0, 0.4],
[createPoiDistanceFilterKey('Distance to nearest Tesco (km)', 1)]: [0, 1.5],
[createPoiDistanceFilterKey('Distance to nearest grocery store (km)', 1)]: [0, 1.5],
});
});
it('round-trips transport distance filters with dedicated URL params', () => {
const busStop = createPoiFilterKey(
TRANSPORT_DISTANCE_FILTER_NAME,
'Distance to nearest amenity (Bus stop) (km)',
3
);
const params = stateToParams(
null,
{
[busStop]: [0, 0.3],
},
[],
new Set(),
'area'
);
expect(params.getAll('transportDistance')).toEqual([
'Distance%20to%20nearest%20amenity%20(Bus%20stop)%20(km):0:0.3',
]);
expect(params.getAll('amenityDistance')).toEqual([]);
expect(params.getAll('filter')).toEqual([]);
window.history.replaceState({}, '', `/?${params.toString()}`);
const state = parseUrlState();
expect(state.filters).toEqual({
[createPoiFilterKey(
TRANSPORT_DISTANCE_FILTER_NAME,
'Distance to nearest amenity (Bus stop) (km)',
0
)]: [0, 0.3],
});
});
it('migrates legacy transport distance amenity params into transport filters', () => {
window.history.replaceState(
{},
'',
'/?amenityDistance=Distance%20to%20nearest%20amenity%20(Bus%20stop)%20(km):0:0.3'
);
const state = parseUrlState();
expect(state.filters).toEqual({
[createPoiFilterKey(
TRANSPORT_DISTANCE_FILTER_NAME,
'Distance to nearest amenity (Bus stop) (km)',
0
)]: [0, 0.3],
});
});
@ -279,8 +333,9 @@ describe('url-state', () => {
const state = parseUrlState();
expect(state.filters).toEqual({
[createPoiFilterKey(POI_COUNT_2KM_FILTER_NAME, 'Number of amenities (Cafe) within 2km', 0)]:
[2, 8],
[createPoiFilterKey(POI_COUNT_2KM_FILTER_NAME, 'Number of amenities (Cafe) within 2km', 0)]: [
2, 8,
],
});
});