diff options
Diffstat (limited to 'pydis_site/apps')
| -rw-r--r-- | pydis_site/apps/api/tests/test_off_topic_channel_names.py | 35 | ||||
| -rw-r--r-- | pydis_site/apps/api/viewsets/bot/off_topic_channel_name.py | 3 | 
2 files changed, 29 insertions, 9 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 2d273756..34098c92 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 @@ -74,6 +74,9 @@ class ListTests(AuthenticatedAPITestCase):          cls.test_name_3 = OffTopicChannelName.objects.create(              name="frozen-with-iceman", used=True, active=False          ) +        cls.test_name_4 = OffTopicChannelName.objects.create( +            name="xith-is-cool", used=True, active=True +        )      def test_returns_name_in_list(self):          """Return all off-topic channel names.""" @@ -86,28 +89,46 @@ class ListTests(AuthenticatedAPITestCase):              {                  self.test_name.name,                  self.test_name_2.name, -                self.test_name_3.name +                self.test_name_3.name, +                self.test_name_4.name              }          ) -    def test_returns_two_items_with_random_items_param_set_to_2(self): -        """Return not-used name instead used.""" +    def test_returns_two_active_items_with_random_items_param_set_to_2(self): +        """Return not-used active names instead used."""          url = reverse('api:bot:offtopicchannelname-list')          response = self.client.get(f'{url}?random_items=2')          self.assertEqual(response.status_code, 200)          self.assertEqual(len(response.json()), 2) -        self.assertEqual(set(response.json()), {self.test_name.name, self.test_name_2.name}) +        self.assertTrue( +            all( +                item in (self.test_name.name, self.test_name_2.name, self.test_name_4.name) +                for item in response.json() +            ) +        ) + +    def test_returns_three_active_items_with_random_items_param_set_to_3(self): +        """Return not-used active names instead used.""" +        url = reverse('api:bot:offtopicchannelname-list') +        response = self.client.get(f'{url}?random_items=3') + +        self.assertEqual(response.status_code, 200) +        self.assertEqual(len(response.json()), 3) +        self.assertEqual( +            set(response.json()), +            {self.test_name.name, self.test_name_2.name, self.test_name_4.name} +        )      def test_running_out_of_names_with_random_parameter(self): -        """Reset names `used` parameter to `False` when running out of names.""" +        """Reset names `used` parameter to `False` when running out of active names."""          url = reverse('api:bot:offtopicchannelname-list')          response = self.client.get(f'{url}?random_items=3')          self.assertEqual(response.status_code, 200)          self.assertEqual(              set(response.json()), -            {self.test_name.name, self.test_name_2.name, self.test_name_3.name} +            {self.test_name.name, self.test_name_2.name, self.test_name_4.name}          )      def test_returns_inactive_ot_names(self): @@ -129,7 +150,7 @@ class ListTests(AuthenticatedAPITestCase):          self.assertEqual(response.status_code, 200)          self.assertEqual(              set(response.json()), -            {self.test_name.name, self.test_name_2.name} +            {self.test_name.name, self.test_name_2.name, self.test_name_4.name}          ) diff --git a/pydis_site/apps/api/viewsets/bot/off_topic_channel_name.py b/pydis_site/apps/api/viewsets/bot/off_topic_channel_name.py index 78f8c340..d0519e86 100644 --- a/pydis_site/apps/api/viewsets/bot/off_topic_channel_name.py +++ b/pydis_site/apps/api/viewsets/bot/off_topic_channel_name.py @@ -108,7 +108,7 @@ class OffTopicChannelNameViewSet(ModelViewSet):                      'random_items': ["Must be a positive integer."]                  }) -            queryset = self.queryset.order_by('used', '?')[:random_count] +            queryset = self.queryset.filter(active=True).order_by('used', '?')[:random_count]              # When any name is used in our listing then this means we reached end of round              # and we need to reset all other names `used` to False @@ -133,7 +133,6 @@ class OffTopicChannelNameViewSet(ModelViewSet):              return Response(serialized.data)          params = {} -          if active_param := request.query_params.get("active"):              params["active"] = active_param.lower() == "true"  |