[PATCH 2/3] tests: Add tests for 'patch-relation-changed' events
Daniel Axtens
dja at axtens.net
Wed Oct 7 23:34:19 AEDT 2020
Stephen Finucane <stephen at that.guru> writes:
> 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.
D'oh.
Given that we're bumping the major version of patchwork, couldn't we
also bump the API version? I don't think there are many users of the
relations events so we might as well try to get this cleaned up before
they get popular.
Kind regards,
Daniel
> Signed-off-by: Stephen Finucane <stephen at that.guru>
> ---
> patchwork/tests/test_events.py | 47 ++++++++++++++++++++++++++++++++++
> 1 file changed, 47 insertions(+)
>
> diff --git patchwork/tests/test_events.py patchwork/tests/test_events.py
> index 415237f9..5bac7789 100644
> --- patchwork/tests/test_events.py
> +++ 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):
>
> --
> 2.25.4
>
> _______________________________________________
> Patchwork mailing list
> Patchwork at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/patchwork
More information about the Patchwork
mailing list