Skip to content

Commit c1c11f6

Browse files
committed
filter gtfs_rt from search payload
1 parent 0a083f4 commit c1c11f6

File tree

3 files changed

+44
-24
lines changed

3 files changed

+44
-24
lines changed

web-app/src/app/screens/Feeds/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ export default function Feed(): React.ReactElement {
128128
search_query: activeSearch,
129129
data_type: getDataTypeParamFromSelectedFeedTypes(
130130
selectedFeedTypes,
131+
selectedStatuses.length > 0 && areStatusFiltersEnabled,
131132
config.enableGbfsInSearchPage,
132133
),
133134
is_official: isOfficialTagFilterEnabled

web-app/src/app/screens/Feeds/utility.spec.ts

Lines changed: 38 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,67 +6,81 @@ import {
66

77
describe('utility.ts', () => {
88
describe('getDataTypeParamFromSelectedFeedTypes', () => {
9-
test('returns gtfs when only gtfs is selected', () => {
9+
test('returns gtfs when hasStatusFilters is true regardless of selection', () => {
10+
const selected = { gtfs: false, gtfs_rt: true, gbfs: true };
11+
expect(getDataTypeParamFromSelectedFeedTypes(selected, true, true)).toBe(
12+
'gtfs',
13+
);
14+
});
15+
16+
test('returns gtfs when hasStatusFilters is true even with GBFS disabled', () => {
17+
const selected = { gtfs: true, gtfs_rt: true, gbfs: false };
18+
expect(getDataTypeParamFromSelectedFeedTypes(selected, true, false)).toBe(
19+
'gtfs',
20+
);
21+
});
22+
23+
test('returns gtfs when only gtfs is selected and no status filters', () => {
1024
const selected = { gtfs: true, gtfs_rt: false, gbfs: false };
11-
expect(getDataTypeParamFromSelectedFeedTypes(selected, true)).toBe(
25+
expect(getDataTypeParamFromSelectedFeedTypes(selected, false, true)).toBe(
1226
'gtfs',
1327
);
1428
});
1529

16-
test('returns gtfs_rt when only gtfs_rt is selected', () => {
30+
test('returns gtfs_rt when only gtfs_rt is selected and no status filters', () => {
1731
const selected = { gtfs: false, gtfs_rt: true, gbfs: false };
18-
expect(getDataTypeParamFromSelectedFeedTypes(selected, true)).toBe(
32+
expect(getDataTypeParamFromSelectedFeedTypes(selected, false, true)).toBe(
1933
'gtfs_rt',
2034
);
2135
});
2236

23-
test('returns gbfs when only gbfs is selected and GBFS enabled', () => {
37+
test('returns gbfs when only gbfs is selected, GBFS enabled, and no status filters', () => {
2438
const selected = { gtfs: false, gtfs_rt: false, gbfs: true };
25-
expect(getDataTypeParamFromSelectedFeedTypes(selected, true)).toBe(
39+
expect(getDataTypeParamFromSelectedFeedTypes(selected, false, true)).toBe(
2640
'gbfs',
2741
);
2842
});
2943

30-
test('ignores gbfs when GBFS is disabled', () => {
44+
test('ignores gbfs when GBFS is disabled and no status filters', () => {
3145
const selected = { gtfs: false, gtfs_rt: false, gbfs: true };
32-
expect(getDataTypeParamFromSelectedFeedTypes(selected, false)).toBe(
33-
'gtfs,gtfs_rt',
34-
);
46+
expect(
47+
getDataTypeParamFromSelectedFeedTypes(selected, false, false),
48+
).toBe('gtfs,gtfs_rt');
3549
});
3650

37-
test('returns combined gtfs,gtfs_rt when both selected', () => {
51+
test('returns combined gtfs,gtfs_rt when both selected and no status filters', () => {
3852
const selected = { gtfs: true, gtfs_rt: true, gbfs: false };
39-
expect(getDataTypeParamFromSelectedFeedTypes(selected, true)).toBe(
53+
expect(getDataTypeParamFromSelectedFeedTypes(selected, false, true)).toBe(
4054
'gtfs,gtfs_rt',
4155
);
4256
});
4357

44-
test('returns combined gtfs,gtfs_rt,gbfs when all selected and GBFS enabled', () => {
58+
test('returns combined gtfs,gtfs_rt,gbfs when all selected, GBFS enabled, and no status filters', () => {
4559
const selected = { gtfs: true, gtfs_rt: true, gbfs: true };
46-
expect(getDataTypeParamFromSelectedFeedTypes(selected, true)).toBe(
60+
expect(getDataTypeParamFromSelectedFeedTypes(selected, false, true)).toBe(
4761
'gtfs,gtfs_rt,gbfs',
4862
);
4963
});
5064

51-
test('returns default all when none selected and GBFS enabled', () => {
65+
test('returns default all when none selected, GBFS enabled, and no status filters', () => {
5266
const selected = { gtfs: false, gtfs_rt: false, gbfs: false };
53-
expect(getDataTypeParamFromSelectedFeedTypes(selected, true)).toBe(
67+
expect(getDataTypeParamFromSelectedFeedTypes(selected, false, true)).toBe(
5468
'gtfs,gtfs_rt,gbfs',
5569
);
5670
});
5771

58-
test('returns default gtfs,gtfs_rt when none selected and GBFS disabled', () => {
72+
test('returns default gtfs,gtfs_rt when none selected, GBFS disabled, and no status filters', () => {
5973
const selected = { gtfs: false, gtfs_rt: false, gbfs: false };
60-
expect(getDataTypeParamFromSelectedFeedTypes(selected, false)).toBe(
61-
'gtfs,gtfs_rt',
62-
);
74+
expect(
75+
getDataTypeParamFromSelectedFeedTypes(selected, false, false),
76+
).toBe('gtfs,gtfs_rt');
6377
});
6478

65-
test('includes gtfs even if gbfs disabled', () => {
79+
test('returns only gtfs when gtfs selected, gbfs selected but disabled, and no status filters', () => {
6680
const selected = { gtfs: true, gtfs_rt: false, gbfs: true };
67-
expect(getDataTypeParamFromSelectedFeedTypes(selected, false)).toBe(
68-
'gtfs',
69-
);
81+
expect(
82+
getDataTypeParamFromSelectedFeedTypes(selected, false, false),
83+
).toBe('gtfs');
7084
});
7185
});
7286

web-app/src/app/screens/Feeds/utility.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,13 @@ export type AllowedFeedSearchStatus = (typeof ALLOWED_FEED_STATUSES)[number];
33

44
export function getDataTypeParamFromSelectedFeedTypes(
55
selectedFeedTypes: Record<string, boolean>,
6+
hasStatusFilters: boolean,
67
isGbfsEnabled: boolean,
78
): string | undefined {
9+
if (hasStatusFilters) {
10+
return 'gtfs';
11+
}
12+
813
let dataTypeQueryParam = '';
914
if (selectedFeedTypes.gtfs) {
1015
dataTypeQueryParam += 'gtfs';

0 commit comments

Comments
 (0)