summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Finucane <stephen@that.guru>2020-10-04 12:03:19 +0100
committerStephen Finucane <stephen@that.guru>2020-12-13 18:22:12 +0000
commit8092f8f4f59ea5581180a13994eb090d24394206 (patch)
treeecce500c53dd4f41bd7c839141ed489779309b14
parent87e9f510b2670d199ab2930900c357c3ecda761d (diff)
downloadpatchwork-8092f8f4f59ea5581180a13994eb090d24394206.tar
patchwork-8092f8f4f59ea5581180a13994eb090d24394206.tar.gz
tests: Add tests for 'patch-relation-changed' events
This event is rather odd. If you have two patches then the way a relation is created is by creating a 'PatchRelation' instance and then setting the 'related' attribute on the first patch followed by the second patch. Because the event uses the 'Patch' model's 'pre_save' signal, we'll only see events for the patch being currently saved. This means no event will be raised for the first patch and only one event, the one for the second patch, will be raised when the second patch is being added to the relationship. In hindsight, the structure of the event is off. We should have had something like a 'patch-added-to-relationship' and a 'patch-removed-from-relationship' event, both with the same fields: 'project', 'actor', 'patch' and 'related', the latter of which would have listed all of the _other_ patches in the relationship. Sadly, this is an API change which means we can't do it now. We may well wish to do so in the future though. Signed-off-by: Stephen Finucane <stephen@that.guru>
-rw-r--r--patchwork/tests/test_events.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/patchwork/tests/test_events.py b/patchwork/tests/test_events.py
index 415237f..5bac778 100644
--- a/patchwork/tests/test_events.py
+++ b/patchwork/tests/test_events.py
@@ -172,6 +172,53 @@ class PatchChangedTest(_BaseTestCase):
Event.CATEGORY_PATCH_DELEGATED)
self.assertEventFields(events[3], previous_delegate=delegate_b)
+ def test_patch_relations_changed(self):
+ # purposefully setting series to None to minimize additional events
+ relation = utils.create_relation()
+ patches = utils.create_patches(3, series=None)
+
+ # mark the first two patches as related; the second patch should be the
+ # one that the event is raised for
+
+ patches[0].related = relation
+ patches[0].save()
+ patches[1].related = relation
+ patches[1].save()
+
+ events = _get_events(patch=patches[1])
+ self.assertEqual(events.count(), 2)
+ self.assertEqual(
+ events[1].category, Event.CATEGORY_PATCH_RELATION_CHANGED)
+ self.assertEqual(events[1].project, patches[1].project)
+ self.assertEqual(events[1].previous_relation, None)
+ self.assertEqual(events[1].current_relation, relation)
+
+ # add the third patch
+
+ patches[2].related = relation
+ patches[2].save()
+
+ events = _get_events(patch=patches[2])
+ self.assertEqual(events.count(), 2)
+ self.assertEqual(
+ events[1].category, Event.CATEGORY_PATCH_RELATION_CHANGED)
+ self.assertEqual(events[1].project, patches[1].project)
+ self.assertEqual(events[1].previous_relation, None)
+ self.assertEqual(events[1].current_relation, relation)
+
+ # drop the third patch
+
+ patches[2].related = None
+ patches[2].save()
+
+ events = _get_events(patch=patches[2])
+ self.assertEqual(events.count(), 3)
+ self.assertEqual(
+ events[2].category, Event.CATEGORY_PATCH_RELATION_CHANGED)
+ self.assertEqual(events[2].project, patches[1].project)
+ self.assertEqual(events[2].previous_relation, relation)
+ self.assertEqual(events[2].current_relation, None)
+
class CheckCreatedTest(_BaseTestCase):