From d34f735ec8215394fceed331ec19001cb29f988d Mon Sep 17 00:00:00 2001 From: Jan Kaluža Date: Jun 25 2019 10:56:00 +0000 Subject: Merge #387 `Show event dependencies in the REST API` --- diff --git a/freshmaker/models.py b/freshmaker/models.py index 56b940c..6e7d2ac 100644 --- a/freshmaker/models.py +++ b/freshmaker/models.py @@ -289,6 +289,15 @@ class Event(FreshmakerBase): id=dep.event_dependency_id).first()) return events + @property + def depends_on_events(self): + depends_on_events = [] + parents = EventDependency.query.filter_by(event_dependency_id=self.id).all() + for p in parents: + depends_on_events.append(Event.query.filter_by( + id=p.event_id).first()) + return depends_on_events + def has_all_builds_in_state(self, state): """ Returns True when all builds are in the given `state`. @@ -369,6 +378,8 @@ class Event(FreshmakerBase): def json(self): data = self._common_json() data['builds'] = [b.json() for b in self.builds] + data['depends_on_events'] = [event.id for event in self.depends_on_events] + data['depending_events'] = [event.id for event in self.event_dependencies] return data def json_min(self): diff --git a/tests/test_models.py b/tests/test_models.py index c87b244..8f07208 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -380,6 +380,7 @@ class TestEventDependency(helpers.ModelsTestCase): event = Event.create(db.session, "test_msg_id", "test", events.TestingEvent) db.session.commit() self.assertEqual(event.event_dependencies, []) + self.assertEqual(event.depends_on_events, []) def test_add_a_dependent_event(self): event = Event.create(db.session, "test_msg_id", "test", events.TestingEvent) @@ -392,6 +393,8 @@ class TestEventDependency(helpers.ModelsTestCase): self.assertEqual(event.event_dependencies, [event1]) self.assertEqual(event.event_dependencies[0].search_key, "test2") self.assertEqual(event1.event_dependencies, []) + self.assertEqual(event1.depends_on_events, [event]) + self.assertEqual(event.depends_on_events, []) def test_add_existing_dependent_event(self): event = Event.create(db.session, "test_msg_id", "test", events.TestingEvent) @@ -404,6 +407,7 @@ class TestEventDependency(helpers.ModelsTestCase): self.assertIsNone(rel) self.assertEqual(event.event_dependencies, [event1]) + self.assertEqual(event1.depends_on_events, [event]) def test_return_added_dependency_relationship(self): event = Event.create(db.session, "test_msg_id", "test", events.TestingEvent) diff --git a/tests/test_views.py b/tests/test_views.py index d921609..c21b57e 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -486,6 +486,24 @@ class TestViews(helpers.ModelsTestCase): 'images': {'foo-1-1': ['content-set']}, 'msg': 'Found 1 images which are handled by Freshmaker for defined content_sets.'}) + def test_dependencies(self): + event = models.Event.create(db.session, "2017-00000000-0000-0000-0000-000000000003", "RHSA-2018-103", events.TestingEvent) + event1 = models.Event.create(db.session, "2017-00000000-0000-0000-0000-000000000004", "RHSA-2018-104", events.TestingEvent) + db.session.commit() + event.add_event_dependency(db.session, event1) + db.session.commit() + resp = self.client.get('/api/1/events/4') + data = json.loads(resp.get_data(as_text=True)) + self.assertEqual(data['id'], event1.id) + self.assertEqual(data['depends_on_events'], [event.id]) + self.assertEqual(data['depending_events'], []) + + resp = self.client.get('/api/1/events/3') + data = json.loads(resp.get_data(as_text=True)) + self.assertEqual(data['id'], event.id) + self.assertEqual(data['depends_on_events'], []) + self.assertEqual(data['depending_events'], [event1.id]) + class TestViewsMultipleFilterValues(helpers.ModelsTestCase): def setUp(self): @@ -552,6 +570,8 @@ class TestManualTriggerRebuild(helpers.ModelsTestCase): # Other fields are predictible. self.assertEqual(data, { u'builds': [], + u'depending_events': [], + u'depends_on_events': [], u'event_type_id': 13, u'id': 1, u'message_id': u'manual_rebuild_123',