From a0ea44f5eba9c6d3e03b48c4c28e9704da5b0788 Mon Sep 17 00:00:00 2001 From: MarkKoz Date: Wed, 18 Dec 2019 20:59:16 -0800 Subject: Add fixtures to create infractions in serializer tests The fixtures are invoked manually because not all cases may need the same infractions. --- pydis_site/apps/api/tests/test_infractions.py | 34 ++++++++++++++------------- 1 file changed, 18 insertions(+), 16 deletions(-) (limited to 'pydis_site') diff --git a/pydis_site/apps/api/tests/test_infractions.py b/pydis_site/apps/api/tests/test_infractions.py index e79bc2dc..cacd4d06 100644 --- a/pydis_site/apps/api/tests/test_infractions.py +++ b/pydis_site/apps/api/tests/test_infractions.py @@ -575,37 +575,39 @@ class ExpandedTests(APISubdomainTestCase): class SerializerTests(APISubdomainTestCase): @classmethod - def setUpTestData(cls): # noqa + def setUpTestData(cls): cls.user = User.objects.create( id=5, name='james', discriminator=1, avatar_hash=None ) - cls.ban_active = Infraction.objects.create( - user_id=cls.user.id, - actor_id=cls.user.id, - type='ban', - reason='He terk my jerb!', - expires_at=dt(5018, 11, 20, 15, 52, tzinfo=timezone.utc) - ) - cls.ban_inactive = Infraction.objects.create( - user_id=cls.user.id, - actor_id=cls.user.id, - type='ban', - reason='James is an ass, and we won\'t be working with him again.', - active=False + + def create_infraction(self, _type: str, active: bool): + return Infraction.objects.create( + user_id=self.user.id, + actor_id=self.user.id, + type=_type, + reason='A reason.', + expires_at=dt(5018, 11, 20, 15, 52, tzinfo=timezone.utc), + active=active ) def test_is_valid_if_active_infraction_with_same_fields_exists(self): + self.create_infraction('ban', active=True) + instance = self.create_infraction('ban', active=False) + data = {'reason': 'hello'} - serializer = InfractionSerializer(self.ban_inactive, data=data, partial=True) + serializer = InfractionSerializer(instance, data=data, partial=True) self.assertTrue(serializer.is_valid()) def test_validation_error_if_active_duplicate(self): + self.create_infraction('ban', active=True) + instance = self.create_infraction('ban', active=False) + data = {'active': True} - serializer = InfractionSerializer(self.ban_inactive, data=data, partial=True) + serializer = InfractionSerializer(instance, data=data, partial=True) msg = 'This user already has an active infraction of this type' with self.assertRaisesRegex(ValidationError, msg): -- cgit v1.2.3