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_off_topic_channel_names.py59
-rw-r--r--pydis_site/apps/api/tests/test_offensive_message.py2
-rw-r--r--pydis_site/apps/api/tests/test_roles.py26
-rw-r--r--pydis_site/apps/api/tests/test_users.py2
4 files changed, 71 insertions, 18 deletions
diff --git a/pydis_site/apps/api/tests/test_off_topic_channel_names.py b/pydis_site/apps/api/tests/test_off_topic_channel_names.py
index 63993978..2d273756 100644
--- a/pydis_site/apps/api/tests/test_off_topic_channel_names.py
+++ b/pydis_site/apps/api/tests/test_off_topic_channel_names.py
@@ -65,8 +65,15 @@ class EmptyDatabaseTests(AuthenticatedAPITestCase):
class ListTests(AuthenticatedAPITestCase):
@classmethod
def setUpTestData(cls):
- cls.test_name = OffTopicChannelName.objects.create(name='lemons-lemonade-stand', used=False)
- cls.test_name_2 = OffTopicChannelName.objects.create(name='bbq-with-bisk', used=True)
+ cls.test_name = OffTopicChannelName.objects.create(
+ name='lemons-lemonade-stand', used=False, active=True
+ )
+ cls.test_name_2 = OffTopicChannelName.objects.create(
+ name='bbq-with-bisk', used=False, active=True
+ )
+ cls.test_name_3 = OffTopicChannelName.objects.create(
+ name="frozen-with-iceman", used=True, active=False
+ )
def test_returns_name_in_list(self):
"""Return all off-topic channel names."""
@@ -75,29 +82,55 @@ class ListTests(AuthenticatedAPITestCase):
self.assertEqual(response.status_code, 200)
self.assertEqual(
- response.json(),
- [
+ set(response.json()),
+ {
self.test_name.name,
- self.test_name_2.name
- ]
+ self.test_name_2.name,
+ self.test_name_3.name
+ }
)
- def test_returns_single_item_with_random_items_param_set_to_1(self):
+ def test_returns_two_items_with_random_items_param_set_to_2(self):
"""Return not-used name instead used."""
url = reverse('api:bot:offtopicchannelname-list')
- response = self.client.get(f'{url}?random_items=1')
+ response = self.client.get(f'{url}?random_items=2')
self.assertEqual(response.status_code, 200)
- self.assertEqual(len(response.json()), 1)
- self.assertEqual(response.json(), [self.test_name.name])
+ self.assertEqual(len(response.json()), 2)
+ self.assertEqual(set(response.json()), {self.test_name.name, self.test_name_2.name})
def test_running_out_of_names_with_random_parameter(self):
"""Reset names `used` parameter to `False` when running out of names."""
url = reverse('api:bot:offtopicchannelname-list')
- response = self.client.get(f'{url}?random_items=2')
+ response = self.client.get(f'{url}?random_items=3')
self.assertEqual(response.status_code, 200)
- self.assertEqual(response.json(), [self.test_name.name, self.test_name_2.name])
+ self.assertEqual(
+ set(response.json()),
+ {self.test_name.name, self.test_name_2.name, self.test_name_3.name}
+ )
+
+ def test_returns_inactive_ot_names(self):
+ """Return inactive off topic names."""
+ url = reverse('api:bot:offtopicchannelname-list')
+ response = self.client.get(f"{url}?active=false")
+
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(
+ response.json(),
+ [self.test_name_3.name]
+ )
+
+ def test_returns_active_ot_names(self):
+ """Return active off topic names."""
+ url = reverse('api:bot:offtopicchannelname-list')
+ response = self.client.get(f"{url}?active=true")
+
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(
+ set(response.json()),
+ {self.test_name.name, self.test_name_2.name}
+ )
class CreationTests(AuthenticatedAPITestCase):
@@ -154,7 +187,7 @@ class DeletionTests(AuthenticatedAPITestCase):
cls.test_name_2 = OffTopicChannelName.objects.create(name='bbq-with-bisk')
def test_deleting_unknown_name_returns_404(self):
- """Return 404 reponse when trying to delete unknown name."""
+ """Return 404 response when trying to delete unknown name."""
url = reverse('api:bot:offtopicchannelname-detail', args=('unknown-name',))
response = self.client.delete(url)
diff --git a/pydis_site/apps/api/tests/test_offensive_message.py b/pydis_site/apps/api/tests/test_offensive_message.py
index 9b79b38c..3cf95b75 100644
--- a/pydis_site/apps/api/tests/test_offensive_message.py
+++ b/pydis_site/apps/api/tests/test_offensive_message.py
@@ -58,7 +58,7 @@ class CreationTests(AuthenticatedAPITestCase):
)
for field, invalid_value in cases:
- with self.subTest(fied=field, invalid_value=invalid_value):
+ with self.subTest(field=field, invalid_value=invalid_value):
test_data = data.copy()
test_data.update({field: invalid_value})
diff --git a/pydis_site/apps/api/tests/test_roles.py b/pydis_site/apps/api/tests/test_roles.py
index d39cea4d..73c80c77 100644
--- a/pydis_site/apps/api/tests/test_roles.py
+++ b/pydis_site/apps/api/tests/test_roles.py
@@ -1,7 +1,7 @@
from django.urls import reverse
from .base import AuthenticatedAPITestCase
-from ..models import Role
+from ..models import Role, User
class CreationTests(AuthenticatedAPITestCase):
@@ -35,6 +35,20 @@ class CreationTests(AuthenticatedAPITestCase):
permissions=6,
position=0,
)
+ cls.role_to_delete = Role.objects.create(
+ id=7,
+ name="role to delete",
+ colour=7,
+ permissions=7,
+ position=0,
+ )
+ cls.role_unassigned_test_user = User.objects.create(
+ id=8,
+ name="role_unassigned_test_user",
+ discriminator="0000",
+ roles=[cls.role_to_delete.id],
+ in_guild=True
+ )
def _validate_roledict(self, role_dict: dict) -> None:
"""Helper method to validate a dict representing a role."""
@@ -81,11 +95,11 @@ class CreationTests(AuthenticatedAPITestCase):
url = reverse('api:bot:role-list')
response = self.client.get(url)
- self.assertContains(response, text="id", count=4, status_code=200)
+ self.assertContains(response, text="id", count=5, status_code=200)
roles = response.json()
self.assertIsInstance(roles, list)
- self.assertEqual(len(roles), 4)
+ self.assertEqual(len(roles), 5)
for role in roles:
self._validate_roledict(role)
@@ -181,6 +195,12 @@ class CreationTests(AuthenticatedAPITestCase):
response = self.client.delete(url)
self.assertEqual(response.status_code, 204)
+ def test_role_delete_unassigned(self):
+ """Tests if the deleted Role gets unassigned from the user."""
+ self.role_to_delete.delete()
+ self.role_unassigned_test_user.refresh_from_db()
+ self.assertEqual(self.role_unassigned_test_user.roles, [])
+
def test_role_detail_404_all_methods(self):
"""Tests detail view with non-existing ID."""
url = reverse('api:bot:role-detail', args=(20190815,))
diff --git a/pydis_site/apps/api/tests/test_users.py b/pydis_site/apps/api/tests/test_users.py
index 295bcf64..9b91380b 100644
--- a/pydis_site/apps/api/tests/test_users.py
+++ b/pydis_site/apps/api/tests/test_users.py
@@ -421,7 +421,7 @@ class UserMetricityTests(AuthenticatedAPITestCase):
# Then
self.assertEqual(response.status_code, 200)
- self.assertEqual(response.json(), {
+ self.assertCountEqual(response.json(), {
"joined_at": joined_at,
"total_messages": total_messages,
"voice_banned": False,