From 101ec6b97d2a8c721a82f0435c946303ee0c2c43 Mon Sep 17 00:00:00 2001 From: Qixiang Wan Date: Apr 24 2020 03:54:44 +0000 Subject: Support querying events with requester names With this change, we can query events with requester names, like: /api/1/events/?requester=bob /api/1/events/?requester=bob&state=alice --- diff --git a/freshmaker/api_utils.py b/freshmaker/api_utils.py index 2dcb0a2..9b063da 100644 --- a/freshmaker/api_utils.py +++ b/freshmaker/api_utils.py @@ -192,7 +192,7 @@ def filter_events(flask_request): query = Event.query - for key in ['message_id', 'search_key', 'event_type_id']: + for key in ['message_id', 'search_key', 'event_type_id', 'requester']: values = flask_request.args.getlist(key) if not values: continue diff --git a/tests/test_views.py b/tests/test_views.py index 2a77bc1..1cd1ad8 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -431,6 +431,51 @@ class TestViews(helpers.ModelsTestCase): self.assertEqual(len(building_events), 1) self.assertEqual(len(complete_events), 2) + def test_query_event_by_requester(self): + ev1 = models.Event.create( + db.session, + "2018-00000000-0000-0000-0123-000000000001", + "0123001", + events.ManualRebuildWithAdvisoryEvent, + state=EventState['COMPLETE'].value, + requester="bob", + requested_rebuilds="foo-1-1 bar-1-1" + ) + resp = self.client.get('/api/1/events/?requester=bob') + evs = resp.json['items'] + self.assertEqual(len(evs), 1) + self.assertEqual(evs[0]['requester'], ev1.requester) + self.assertEqual(evs[0]['search_key'], ev1.search_key) + + resp = self.client.get('/api/1/events/?requester=alice') + evs = resp.json['items'] + self.assertEqual(len(evs), 0) + + def test_query_event_by_multiple_requesters(self): + models.Event.create( + db.session, + "2018-00000000-0000-0000-0123-000000000001", + "0123001", + events.ManualRebuildWithAdvisoryEvent, + state=EventState['COMPLETE'].value, + requester="bob", + requested_rebuilds="foo-1-1 bar-1-1" + ), + models.Event.create( + db.session, + "2018-00000000-0000-0000-0123-000000000002", + "0123002", + events.ManualRebuildWithAdvisoryEvent, + state=EventState['COMPLETE'].value, + requester="alice", + requested_rebuilds="foo-1-2 bar-1-2" + ), + resp = self.client.get('/api/1/events/?requester=alice&requester=bob') + evs = resp.json['items'] + self.assertEqual(len(evs), 2) + self.assertTrue(('bob', '0123001') in [(e['requester'], e['search_key']) for e in evs]) + self.assertTrue(('alice', '0123002') in [(e['requester'], e['search_key']) for e in evs]) + def test_query_event_order_by_default(self): resp = self.client.get('/api/1/events/') evs = resp.json['items']