aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/tests
diff options
context:
space:
mode:
Diffstat (limited to 'pydis_site/apps/api/tests')
-rw-r--r--pydis_site/apps/api/tests/test_offensive_message.py68
1 files changed, 47 insertions, 21 deletions
diff --git a/pydis_site/apps/api/tests/test_offensive_message.py b/pydis_site/apps/api/tests/test_offensive_message.py
index f45b5a66..d01231f1 100644
--- a/pydis_site/apps/api/tests/test_offensive_message.py
+++ b/pydis_site/apps/api/tests/test_offensive_message.py
@@ -6,6 +6,17 @@ from .base import AuthenticatedAPITestCase
from pydis_site.apps.api.models import OffensiveMessage
+def create_offensive_message() -> OffensiveMessage:
+ """Creates and returns an `OffensiveMessgage` record for tests."""
+ delete_at = datetime.datetime.now(tz=datetime.UTC) + datetime.timedelta(days=1)
+
+ return OffensiveMessage.objects.create(
+ id=602951077675139072,
+ channel_id=291284109232308226,
+ delete_date=delete_at,
+ )
+
+
class CreationTests(AuthenticatedAPITestCase):
def test_accept_valid_data(self):
url = reverse('api:bot:offensivemessage-list')
@@ -111,13 +122,7 @@ class ListTests(AuthenticatedAPITestCase):
class DeletionTests(AuthenticatedAPITestCase):
@classmethod
def setUpTestData(cls):
- delete_at = datetime.datetime.now(tz=datetime.UTC) + datetime.timedelta(days=1)
-
- cls.valid_offensive_message = OffensiveMessage.objects.create(
- id=602951077675139072,
- channel_id=291284109232308226,
- delete_date=delete_at.isoformat()
- )
+ cls.valid_offensive_message = create_offensive_message()
def test_delete_data(self):
url = reverse(
@@ -132,24 +137,45 @@ class DeletionTests(AuthenticatedAPITestCase):
)
-class NotAllowedMethodsTests(AuthenticatedAPITestCase):
+class UpdateOffensiveMessageTestCase(AuthenticatedAPITestCase):
@classmethod
def setUpTestData(cls):
- delete_at = datetime.datetime.now(tz=datetime.UTC) + datetime.timedelta(days=1)
+ cls.message = create_offensive_message()
+ cls.in_one_week = datetime.datetime.now(tz=datetime.UTC) + datetime.timedelta(days=7)
- cls.valid_offensive_message = OffensiveMessage.objects.create(
- id=602951077675139072,
- channel_id=291284109232308226,
- delete_date=delete_at.isoformat()
+ def test_updating_message(self):
+ url = reverse('api:bot:offensivemessage-detail', args=(self.message.id,))
+ data = {'delete_date': self.in_one_week.isoformat()}
+ update_response = self.client.patch(url, data=data)
+ self.assertEqual(update_response.status_code, 200)
+
+ self.message.refresh_from_db()
+ self.assertAlmostEqual(
+ self.message.delete_date,
+ self.in_one_week,
+ delta=datetime.timedelta(seconds=1),
)
- def test_returns_405_for_patch_and_put_requests(self):
- url = reverse(
- 'api:bot:offensivemessage-detail', args=(self.valid_offensive_message.id,)
+ def test_updating_nonexistent_message(self):
+ url = reverse('api:bot:offensivemessage-detail', args=(self.message.id + 1,))
+ data = {'delete_date': self.in_one_week}
+
+ response = self.client.patch(url, data=data)
+ self.assertEqual(response.status_code, 404)
+ self.message.refresh_from_db()
+ self.assertNotAlmostEqual(
+ self.message.delete_date,
+ self.in_one_week,
+ delta=datetime.timedelta(seconds=1),
)
- not_allowed_methods = (self.client.patch, self.client.put)
- for method in not_allowed_methods:
- with self.subTest(method=method):
- response = method(url, {})
- self.assertEqual(response.status_code, 405)
+
+class NotAllowedMethodsTests(AuthenticatedAPITestCase):
+ @classmethod
+ def setUpTestData(cls):
+ cls.message = create_offensive_message()
+
+ def test_returns_405_for_get(self):
+ url = reverse('api:bot:offensivemessage-detail', args=(self.message.id,))
+ response = self.client.get(url)
+ self.assertEqual(response.status_code, 405)