From 29de7eb54a0a2ec24a39d7ed338786f9ae1e02e5 Mon Sep 17 00:00:00 2001 From: Jan Kaluža Date: Feb 22 2019 06:16:48 +0000 Subject: Merge #366 `Ensure that Event.id is always set after `Event.get_or_create_from_event()`.` --- diff --git a/freshmaker/models.py b/freshmaker/models.py index cec9e93..65a774d 100644 --- a/freshmaker/models.py +++ b/freshmaker/models.py @@ -201,8 +201,11 @@ class Event(FreshmakerBase): instance = cls.get(session, message_id) if instance: return instance - return cls.create(session, message_id, search_key, event_type, - released=released, manual=manual, dry_run=dry_run) + instance = cls.create( + session, message_id, search_key, event_type, + released=released, manual=manual, dry_run=dry_run) + session.commit() + return instance @classmethod def get_or_create_from_event(cls, session, event, released=True): diff --git a/tests/test_models.py b/tests/test_models.py index 5d2194a..123649d 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -31,6 +31,14 @@ from tests import helpers class TestModels(helpers.ModelsTestCase): + def test_get_or_create_from_event(self): + event = events.TestingEvent('msg-1') + # First call creates new event, second call returns the same one. + for i in range(2): + db_event = Event.get_or_create_from_event(db.session, event) + self.assertEqual(db_event.id, 1) + self.assertEqual(db_event.message_id, 'msg-1') + def test_creating_event_and_builds(self): event = Event.create(db.session, "test_msg_id", "RHSA-2017-284", events.TestingEvent) build = ArtifactBuild.create(db.session, event, "ed", "module", 1234)