aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site
diff options
context:
space:
mode:
authorGravatar bast <[email protected]>2021-05-30 16:00:24 -0700
committerGravatar bast <[email protected]>2021-05-30 16:00:24 -0700
commit45dfba505e04eec968a3be701e868753b8e4a849 (patch)
treebc4ba3be9827b1ea2589bf723a1629791acd5587 /pydis_site
parentRaise ValidationError for new bot/infractions filter if the types are invalid (diff)
Fix bot/infractions after and before filter check being inverted
The check was backwards, enforcing that no results must ever be returned Relevant tests have been added that actually fetch an infraction with the right times so that I'm sure it's not still broken
Diffstat (limited to 'pydis_site')
-rw-r--r--pydis_site/apps/api/tests/test_infractions.py19
-rw-r--r--pydis_site/apps/api/viewsets/bot/infraction.py2
2 files changed, 17 insertions, 4 deletions
diff --git a/pydis_site/apps/api/tests/test_infractions.py b/pydis_site/apps/api/tests/test_infractions.py
index f2641492..d717ab48 100644
--- a/pydis_site/apps/api/tests/test_infractions.py
+++ b/pydis_site/apps/api/tests/test_infractions.py
@@ -177,15 +177,28 @@ class InfractionTests(APISubdomainTestCase):
self.assertEqual(response.status_code, 400)
self.assertEqual(list(response.json())[0], "expires_before")
- def test_after_before_before_invalid(self):
+ def test_after_before_before(self):
url = reverse('bot:infraction-list', host='api')
- target_time = datetime.datetime.utcnow() + datetime.timedelta(hours=5)
- target_time_late = datetime.datetime.utcnow() + datetime.timedelta(hours=9)
+ target_time = datetime.datetime.utcnow() + datetime.timedelta(hours=4)
+ target_time_late = datetime.datetime.utcnow() + datetime.timedelta(hours=6)
response = self.client.get(
f'{url}?expires_before={target_time_late.isoformat()}'
f'&expires_after={target_time.isoformat()}'
)
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(len(response.json()), 1)
+ self.assertEqual(response.json()[0]["id"], self.superstar_expires_soon.id)
+
+ def test_after_after_before_invalid(self):
+ url = reverse('bot:infraction-list', host='api')
+ target_time = datetime.datetime.utcnow() + datetime.timedelta(hours=5)
+ target_time_late = datetime.datetime.utcnow() + datetime.timedelta(hours=9)
+ response = self.client.get(
+ f'{url}?expires_before={target_time.isoformat()}'
+ f'&expires_after={target_time_late.isoformat()}'
+ )
+
self.assertEqual(response.status_code, 400)
errors = list(response.json())
self.assertIn("expires_before", errors)
diff --git a/pydis_site/apps/api/viewsets/bot/infraction.py b/pydis_site/apps/api/viewsets/bot/infraction.py
index 00dd05b8..0baab6fd 100644
--- a/pydis_site/apps/api/viewsets/bot/infraction.py
+++ b/pydis_site/apps/api/viewsets/bot/infraction.py
@@ -195,7 +195,7 @@ class InfractionViewSet(
raise ValidationError({'expires_before': ['failed to convert to datetime']})
if 'expires_at__lte' in additional_filters and 'expires_at__gte' in additional_filters:
- if additional_filters['expires_at__gte'] < additional_filters['expires_at__lte']:
+ if additional_filters['expires_at__gte'] > additional_filters['expires_at__lte']:
raise ValidationError({
'expires_before': ['cannot be after expires_after'],
'expires_after': ['cannot be before expires_before'],