From 6b7606e093fafa07d7ff3f17bc6d7151ee3e15be Mon Sep 17 00:00:00 2001 From: Mike Bonnet Date: Jan 04 2018 23:34:04 +0000 Subject: sort builds by id This makes the builds API consistent with the events API, and makes pagination work as expected. --- diff --git a/freshmaker/api_utils.py b/freshmaker/api_utils.py index 6a067c5..65ceadf 100644 --- a/freshmaker/api_utils.py +++ b/freshmaker/api_utils.py @@ -107,6 +107,8 @@ def filter_artifact_builds(flask_request): ea = db.aliased(Event) query = query.join(ea).filter(ea.search_key == event_search_key) + query = query.order_by(ArtifactBuild.id) + page = flask_request.args.get('page', 1, type=int) per_page = flask_request.args.get('per_page', 10, type=int) return query.paginate(page, per_page, False) diff --git a/tests/test_views.py b/tests/test_views.py index 769e1a7..4a61415 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -70,6 +70,21 @@ class TestViews(unittest.TestCase): for build_id in [1234, 1235, 1236]: self.assertIn(build_id, [b['build_id'] for b in builds]) + def test_query_builds_order(self): + event = models.Event.create(db.session, "2017-00000000-0000-0000-0000-000000000003", "RHSA-2018-103", events.TestingEvent) + build9 = models.ArtifactBuild.create(db.session, event, "make", "module", 1237) + build9.id = 9 + db.session.commit() + build8 = models.ArtifactBuild.create(db.session, event, "attr", "module", 1238) + build8.id = 8 + db.session.commit() + db.session.expire_all() + resp = self.client.get('/api/1/builds/') + builds = json.loads(resp.data.decode('utf8'))['items'] + self.assertEqual(len(builds), 5) + for id, build in zip([1, 2, 3, 8, 9], builds): + self.assertEqual(id, build['id']) + def test_query_builds_by_name(self): resp = self.client.get('/api/1/builds/?name=ed') builds = json.loads(resp.data.decode('utf8'))['items']