diff options
| -rw-r--r-- | pydis_site/apps/api/tests/test_users.py | 66 | 
1 files changed, 64 insertions, 2 deletions
| diff --git a/pydis_site/apps/api/tests/test_users.py b/pydis_site/apps/api/tests/test_users.py index affc2c48..fb22c627 100644 --- a/pydis_site/apps/api/tests/test_users.py +++ b/pydis_site/apps/api/tests/test_users.py @@ -123,7 +123,7 @@ class CreationTests(APISubdomainTestCase):          self.assertEqual(response.status_code, 400)      def test_returns_400_for_user_recreation(self): -        """Return 400 if User is already present in database.""" +        """Return 201 if User is already present in database as it skips User creation."""          url = reverse('bot:user-list', host='api')          data = [{              'id': 11, @@ -132,6 +132,26 @@ class CreationTests(APISubdomainTestCase):              'in_guild': True          }]          response = self.client.post(url, data=data) +        self.assertEqual(response.status_code, 201) + +    def test_returns_400_for_duplicate_request_users(self): +        """Return 400 if 2 Users with same ID is passed in the request data.""" +        url = reverse('bot:user-list', host='api') +        data = [ +            { +                'id': 11, +                'name': 'You saw nothing.', +                'discriminator': 112, +                'in_guild': True +            }, +            { +                'id': 11, +                'name': 'You saw nothing part 2.', +                'discriminator': 1122, +                'in_guild': False +            } +        ] +        response = self.client.post(url, data=data)          self.assertEqual(response.status_code, 400) @@ -213,7 +233,7 @@ class MultiPatchTests(APISubdomainTestCase):              }          ]          response = self.client.patch(url, data=data) -        self.assertEqual(response.status_code, 400) +        self.assertEqual(response.status_code, 404)      def test_returns_400_for_bad_data(self):          url = reverse("bot:user-bulk-patch", host="api") @@ -286,3 +306,45 @@ class UserModelTests(APISubdomainTestCase):      def test_correct_username_formatting(self):          """Tests the username property with both name and discriminator formatted together."""          self.assertEqual(self.user_with_roles.username, "Test User with two roles#0001") + + +class UserPaginatorTests(APISubdomainTestCase): +    @classmethod +    def setUpTestData(cls): +        users = [] +        for i in range(1, 10_001): +            users.append(User( +                id=i, +                name=f"user{i}", +                discriminator=1111, +                in_guild=True +            )) +        cls.users = User.objects.bulk_create(users) + +    def test_returns_single_page_response(self): +        url = reverse("bot:user-list", host="api") +        response = self.client.get(url).json() +        self.assertIsNone(response["next_page_no"]) +        self.assertIsNone(response["previous_page_no"]) + +    def test_returns_next_page_number(self): +        User.objects.create( +            id=10_001, +            name="user10001", +            discriminator=1111, +            in_guild=True +        ) +        url = reverse("bot:user-list", host="api") +        response = self.client.get(url).json() +        self.assertEqual(2, response["next_page_no"]) + +    def test_returns_previous_page_number(self): +        User.objects.create( +            id=10_001, +            name="user10001", +            discriminator=1111, +            in_guild=True +        ) +        url = reverse("bot:user-list", host="api") +        response = self.client.get(url, {"page": 2}).json() +        self.assertEqual(1, response["previous_page_no"]) | 
