aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/tests
diff options
context:
space:
mode:
authorGravatar Johannes Christ <[email protected]>2021-11-26 21:15:42 +0100
committerGravatar GitHub <[email protected]>2021-11-26 21:15:42 +0100
commit053d43e4cecdf60fbd11b4bccac6dbeb28e834d5 (patch)
tree358f03d4735a91391272070c9eb27c60318be70c /pydis_site/apps/api/tests
parentMerge pull request #619 from hedyhli/patch-1 (diff)
parentPatch signals to use post_delete, instead of pre_delete (diff)
Merge pull request #572 from D0rs4n/pr/deleterolesignal
Create a signal to unassign roles from user when the role is deleted
Diffstat (limited to 'pydis_site/apps/api/tests')
-rw-r--r--pydis_site/apps/api/tests/test_roles.py26
1 files changed, 23 insertions, 3 deletions
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,))