Skip to content

Commit 40d8b87

Browse files
committed
fix latest dataset filtering
1 parent 86663f9 commit 40d8b87

3 files changed

Lines changed: 25 additions & 2 deletions

File tree

api/src/feeds/impl/datasets_api_impl.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ def get_datasets_gtfs(query: Query, session: Session, limit: int = None, offset:
5050
offset=offset,
5151
group_by=lambda x: x[0].stable_id,
5252
)
53-
53+
if not dataset_groups:
54+
return []
5455
gtfs_datasets = []
5556
for dataset_group in dataset_groups:
5657
dataset_objects: Tuple[Gtfsdataset, ...]

api/src/feeds/impl/feeds_api_impl.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ def get_gtfs_feed_datasets(
183183
).filter(DatasetsApiImpl.create_dataset_query().filter(FeedOrm.stable_id == gtfs_feed_id))
184184

185185
if latest:
186-
query = query.join(Gtfsdataset.feed).filter(Gtfsdataset.id == FeedOrm.latest_dataset_id)
186+
query = query.join(Gtfsfeed, Gtfsfeed.latest_dataset_id == Gtfsdataset.id)
187187

188188
return DatasetsApiImpl.get_datasets_gtfs(query, session=db_session, limit=limit, offset=offset)
189189

api/tests/integration/test_datasets_api.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,28 @@ def test_feeds_gtfs_id_datasets_get(client: TestClient):
3939
assert response.status_code == 200
4040

4141

42+
def test_feeds_gtfs_datasets_latest_get(client: TestClient):
43+
"""Test case for feeds_gtfs_id_datasets_get"""
44+
params = [
45+
("latest", True),
46+
("limit", 10),
47+
("offset", 0),
48+
("filter", "status=active"),
49+
("sort", "+provider"),
50+
]
51+
response = client.request(
52+
"GET",
53+
"/v1/gtfs_feeds/{id}/datasets".format(id=TEST_GTFS_FEED_STABLE_IDS[0]),
54+
headers=authHeaders,
55+
params=params,
56+
)
57+
58+
assert response.status_code == 200
59+
json_response = response.json()
60+
assert len(json_response) == 1, "Expected only the latest datasets"
61+
assert json_response[0]["id"] == TEST_DATASET_STABLE_IDS[1] # dataset-2
62+
63+
4264
def test_feeds_wrong_gtfs_id_datasets_get(client: TestClient):
4365
"""Test case for feeds_gtfs_id_datasets_get where the gtfs feed id does not exist"""
4466

0 commit comments

Comments
 (0)