diff options
author | 2019-04-25 20:31:57 +0200 | |
---|---|---|
committer | 2019-04-25 20:31:57 +0200 | |
commit | 0ebfb8e2c7b037ecbfabf1db7fe8803401ce38f6 (patch) | |
tree | 502b3d76487c152800810b676678097169b2a218 /pydis_site | |
parent | Adding OrderingFilter to infraction ViewSet (diff) |
Adding initial tests for nomination endpoint
Diffstat (limited to 'pydis_site')
-rw-r--r-- | pydis_site/apps/api/tests/test_nominations.py | 87 |
1 files changed, 59 insertions, 28 deletions
diff --git a/pydis_site/apps/api/tests/test_nominations.py b/pydis_site/apps/api/tests/test_nominations.py index 1f03d1b0..99a3fe69 100644 --- a/pydis_site/apps/api/tests/test_nominations.py +++ b/pydis_site/apps/api/tests/test_nominations.py @@ -1,41 +1,72 @@ +from datetime import datetime as dt, timedelta, timezone + from django_hosts.resolvers import reverse from .base import APISubdomainTestCase from ..models import Nomination, User -class NominationTests(APISubdomainTestCase): +# class NominationTests(APISubdomainTestCase): +# @classmethod +# def setUpTestData(cls): # noqa +# cls.actor = User.objects.create( +# id=5152, +# name='Ro Bert', +# discriminator=256, +# avatar_hash=None +# ) +# cls.user = cls.actor + +# cls.nomination = Nomination.objects.create( +# actor=cls.actor, +# reason="he's good", +# user=cls.actor +# ) + +# def test_returns_400_on_attempt_to_update_frozen_field(self): +# url = reverse('bot:nomination-detail', args=(self.user.id,), host='api') +# response = self.client.put( +# url, +# data={'inserted_at': 'something bad'} +# ) +# self.assertEqual(response.status_code, 400) +# self.assertEqual(response.json(), { +# 'inserted_at': ['This field cannot be updated.'] +# }) + +# def test_returns_200_on_successful_update(self): +# url = reverse('bot:nomination-detail', args=(self.user.id,), host='api') +# response = self.client.patch( +# url, +# data={'reason': 'there are many like it, but this test is mine'} +# ) +# self.assertEqual(response.status_code, 200) + + +class CreationTests(APISubdomainTestCase): @classmethod def setUpTestData(cls): # noqa - cls.author = User.objects.create( - id=5152, - name='Ro Bert', - discriminator=256, + cls.user = User.objects.create( + id=1234, + name='joe dart', + discriminator=1111, avatar_hash=None ) - cls.user = cls.author - cls.nomination = Nomination.objects.create( - author=cls.author, - reason="he's good", - user=cls.author - ) + def test_accepts_valid_data(self): + url = reverse('bot:nomination-list', host='api') + data = { + 'actor': self.user.id, + 'reason': 'Joe Dart on Fender Bass', + 'user': self.user.id, + } - def test_returns_400_on_attempt_to_update_frozen_field(self): - url = reverse('bot:nomination-detail', args=(self.user.id,), host='api') - response = self.client.put( - url, - data={'inserted_at': 'something bad'} - ) - self.assertEqual(response.status_code, 400) - self.assertEqual(response.json(), { - 'inserted_at': ['This field cannot be updated.'] - }) - - def test_returns_200_on_successful_update(self): - url = reverse('bot:nomination-detail', args=(self.user.id,), host='api') - response = self.client.patch( - url, - data={'reason': 'there are many like it, but this test is mine'} + response = self.client.post(url, data=data) + self.assertEqual(response.status_code, 201) + + nomination = Nomination.objects.get(id=response.json()['id']) + self.assertAlmostEqual( + nomination.inserted_at, + dt.now(timezone.utc), + delta=timedelta(seconds=2) ) - self.assertEqual(response.status_code, 200) |