This commit is contained in:
parent
84f466877d
commit
25bc127d93
|
|
@ -204,6 +204,7 @@ class SubscriptionType(ObjectType):
|
|||
pagination=True
|
||||
)
|
||||
class TableConfigType(ObjectType):
|
||||
object_type: Annotated["ContentTypeType", strawberry.lazy('netbox.graphql.types')] | None
|
||||
user: Annotated["UserType", strawberry.lazy('users.graphql.types')] | None
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import json
|
||||
|
||||
import strawberry
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.test import override_settings
|
||||
from django.urls import reverse
|
||||
from rest_framework import status
|
||||
|
|
@ -9,8 +10,10 @@ from strawberry.schema.config import StrawberryConfig
|
|||
|
||||
from dcim.choices import LocationStatusChoices
|
||||
from dcim.models import Device, DeviceRole, DeviceType, Location, Manufacturer, Site, VirtualChassis
|
||||
from extras.models import TableConfig
|
||||
from netbox.graphql.scalars import BigInt, BigIntScalar
|
||||
from netbox.graphql.schema import Query, get_schema_extensions
|
||||
from utilities.tables import get_table_for_model
|
||||
from utilities.testing import APITestCase, TestCase, disable_warnings
|
||||
|
||||
|
||||
|
|
@ -216,6 +219,26 @@ class GraphQLAPITestCase(APITestCase):
|
|||
self.assertNotIn('errors', data)
|
||||
self.assertEqual(len(data['data']['device_list']), 3)
|
||||
|
||||
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')
|
||||
url = reverse('graphql')
|
||||
|
||||
site_ct = ContentType.objects.get_for_model(Site)
|
||||
table_config = TableConfig.objects.create(
|
||||
object_type=site_ct,
|
||||
table=get_table_for_model(Site).__name__,
|
||||
name='Test config',
|
||||
columns=['name'],
|
||||
)
|
||||
|
||||
query = '{ table_config(id: ' + str(table_config.pk) + ') { object_type { id } } }'
|
||||
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)
|
||||
self.assertEqual(int(data['data']['table_config']['object_type']['id']), site_ct.pk)
|
||||
|
||||
def test_offset_pagination(self):
|
||||
self.add_permissions('dcim.view_site')
|
||||
url = reverse('graphql')
|
||||
|
|
|
|||
Loading…
Reference in New Issue