add tests

This commit is contained in:
Arthur 2026-07-24 17:55:07 -07:00
parent f8e7950004
commit 567940ebd7
1 changed files with 35 additions and 0 deletions

View File

@ -352,6 +352,41 @@ class GraphQLAPITestCase(APITestCase):
self.assertEqual(len(data['data']['rack_reservation_list']), 1)
self.assertEqual(data['data']['rack_reservation_list'][0]['units'], [1, 2])
def test_graphql_array_lookups(self):
"""
The ``contains``, ``contained_by``, and ``overlap`` array lookups share their name with the
corresponding ORM transform. Verify they still resolve after #22766 replaced the auto-generated
filter fields with a manual ``filter()`` method.
"""
self.add_permissions('dcim.view_rackreservation')
url = reverse('graphql')
site = Site.objects.first()
rack = Rack.objects.create(name='Array Lookup Rack', site=site)
RackReservation.objects.create(rack=rack, units=[1, 2], user=self.user, description='Low units')
RackReservation.objects.create(rack=rack, units=[3, 4, 5], user=self.user, description='High units')
def run(lookup):
query = f"""
{{
rack_reservation_list(filters: {{units: {lookup}}}) {{
id units
}}
}}
"""
response = self.client.post(url, data={'query': query}, format='json', **self.header)
self.assertHttpStatus(response, status.HTTP_200_OK)
data = json.loads(response.content)
self.assertNotIn('errors', data)
return [r['units'] for r in data['data']['rack_reservation_list']]
# contains: arrays that include all of the given elements
self.assertEqual(run('{contains: [1]}'), [[1, 2]])
# contained_by: arrays whose elements all fall within the given set
self.assertEqual(run('{contained_by: [1, 2, 3]}'), [[1, 2]])
# overlap: arrays sharing at least one element with the given set
self.assertCountEqual(run('{overlap: [2, 3]}'), [[1, 2], [3, 4, 5]])
def test_graphql_tableconfig_object_type_exposes_id(self):
"""TableConfigType.object_type must expose ContentType fields (e.g. id)."""
self.add_permissions('extras.view_tableconfig')