aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Akarys42 <[email protected]>2019-10-26 17:03:57 +0200
committerGravatar Akarys42 <[email protected]>2019-10-26 17:03:57 +0200
commit57992886c53977fca7b3034d648a94cf4b4d4df1 (patch)
tree1c9b932ef0eb0c0426062421e64f2bf09619cad8
parentDelete unnecessary search filter (diff)
Write tests for the offensive message model.
-rw-r--r--pydis_site/apps/api/tests/test_models.py6
-rw-r--r--pydis_site/apps/api/tests/test_offensive_message.py61
-rw-r--r--pydis_site/apps/api/tests/test_validators.py6
3 files changed, 70 insertions, 3 deletions
diff --git a/pydis_site/apps/api/tests/test_models.py b/pydis_site/apps/api/tests/test_models.py
index b4a766d0..a97d3251 100644
--- a/pydis_site/apps/api/tests/test_models.py
+++ b/pydis_site/apps/api/tests/test_models.py
@@ -12,6 +12,7 @@ from ..models import (
ModelReprMixin,
Nomination,
OffTopicChannelName,
+ OffensiveMessage,
Reminder,
Role,
Tag,
@@ -69,6 +70,11 @@ class StringDunderMethodTests(SimpleTestCase):
DocumentationLink(
'test', 'http://example.com', 'http://example.com'
),
+ OffensiveMessage(
+ id=602951077675139072,
+ channel_id=291284109232308226,
+ delete_date=dt(3000, 1, 1)
+ ),
OffTopicChannelName(name='bob-the-builders-playground'),
Role(
id=5, name='test role',
diff --git a/pydis_site/apps/api/tests/test_offensive_message.py b/pydis_site/apps/api/tests/test_offensive_message.py
new file mode 100644
index 00000000..4ef9201e
--- /dev/null
+++ b/pydis_site/apps/api/tests/test_offensive_message.py
@@ -0,0 +1,61 @@
+import datetime
+
+from django_hosts.resolvers import reverse
+
+from .base import APISubdomainTestCase
+from ..models import OffensiveMessage
+
+
+class CreationTests(APISubdomainTestCase):
+ def test_accept_valid_data(self):
+ url = reverse('bot:offensivemessage-list', host='api')
+ delete_at = datetime.datetime.now() + datetime.timedelta(days=1)
+ data = {
+ 'id': '602951077675139072',
+ 'channel_id': '291284109232308226',
+ 'delete_date': delete_at.isoformat()[:-1]
+ }
+
+ aware_delete_at = delete_at.replace(tzinfo=datetime.timezone.utc)
+
+ response = self.client.post(url, data=data)
+ self.assertEqual(response.status_code, 201)
+
+ offensive_message = OffensiveMessage.objects.get(id=response.json()['id'])
+ self.assertAlmostEqual(
+ aware_delete_at,
+ offensive_message.delete_date,
+ delta=datetime.timedelta(seconds=1)
+ )
+ self.assertEqual(data['id'], str(offensive_message.id))
+ self.assertEqual(data['channel_id'], str(offensive_message.channel_id))
+
+ def test_returns_400_on_non_future_date(self):
+ url = reverse('bot:offensivemessage-list', host='api')
+ delete_at = datetime.datetime.now() - datetime.timedelta(days=1)
+ data = {
+ 'id': '602951077675139072',
+ 'channel_id': '291284109232308226',
+ 'delete_date': delete_at.isoformat()[:-1]
+ }
+ response = self.client.post(url, data=data)
+ self.assertEqual(response.status_code, 400)
+
+ def test_returns_400_on_negative_id_or_channel_id(self):
+ url = reverse('bot:offensivemessage-list', host='api')
+ delete_at = datetime.datetime.now() + datetime.timedelta(days=1)
+ data = {
+ 'id': '-602951077675139072',
+ 'channel_id': '291284109232308226',
+ 'delete_date': delete_at.isoformat()[:-1]
+ }
+ response = self.client.post(url, data=data)
+ self.assertEqual(response.status_code, 400)
+
+ data = {
+ 'id': '602951077675139072',
+ 'channel_id': '-291284109232308226',
+ 'delete_date': delete_at.isoformat()[:-1]
+ }
+ response = self.client.post(url, data=data)
+ self.assertEqual(response.status_code, 400)
diff --git a/pydis_site/apps/api/tests/test_validators.py b/pydis_site/apps/api/tests/test_validators.py
index 9d993839..241af08c 100644
--- a/pydis_site/apps/api/tests/test_validators.py
+++ b/pydis_site/apps/api/tests/test_validators.py
@@ -1,4 +1,4 @@
-from datetime import datetime
+from datetime import datetime, timezone
from django.core.exceptions import ValidationError
from django.test import TestCase
@@ -252,8 +252,8 @@ class TagEmbedValidatorTests(TestCase):
class OffensiveMessageValidatorsTests(TestCase):
def test_accepts_future_date(self):
- future_date_validator(datetime(3000, 1, 1))
+ future_date_validator(datetime(3000, 1, 1, tzinfo=timezone.utc))
def test_rejects_non_future_date(self):
with self.assertRaises(ValidationError):
- future_date_validator(datetime(1000, 1, 1))
+ future_date_validator(datetime(1000, 1, 1, tzinfo=timezone.utc))