Просмотр исходного кода

15809 Mark unions as nullable in GraphQL where appropriate (#15824)

* 15809 mark unions as nullable where appropriate

* 15809 fix tests

* 15809 fix tests
Arthur Hanson 1 год назад
Родитель
Сommit
ded2fe9471
3 измененных файлов с 8 добавлено и 5 удалено
  1. 3 3
      netbox/dcim/graphql/types.py
  2. 2 2
      netbox/ipam/graphql/types.py
  3. 3 0
      netbox/utilities/testing/api.py

+ 3 - 3
netbox/dcim/graphql/types.py

@@ -130,7 +130,7 @@ class CableTerminationType(NetBoxObjectType):
         Annotated["PowerOutletType", strawberry.lazy('dcim.graphql.types')],
         Annotated["PowerPortType", strawberry.lazy('dcim.graphql.types')],
         Annotated["RearPortType", strawberry.lazy('dcim.graphql.types')],
-    ], strawberry.union("CableTerminationTerminationType")]
+    ], strawberry.union("CableTerminationTerminationType")] | None
 
 
 @strawberry_django.type(
@@ -302,7 +302,7 @@ class InventoryItemTemplateType(ComponentTemplateType):
         Annotated["PowerOutletType", strawberry.lazy('dcim.graphql.types')],
         Annotated["PowerPortType", strawberry.lazy('dcim.graphql.types')],
         Annotated["RearPortType", strawberry.lazy('dcim.graphql.types')],
-    ], strawberry.union("InventoryItemTemplateComponentType")]
+    ], strawberry.union("InventoryItemTemplateComponentType")] | None
 
 
 @strawberry_django.type(
@@ -431,7 +431,7 @@ class InventoryItemType(ComponentType):
         Annotated["PowerOutletType", strawberry.lazy('dcim.graphql.types')],
         Annotated["PowerPortType", strawberry.lazy('dcim.graphql.types')],
         Annotated["RearPortType", strawberry.lazy('dcim.graphql.types')],
-    ], strawberry.union("InventoryItemComponentType")]
+    ], strawberry.union("InventoryItemComponentType")] | None
 
 
 @strawberry_django.type(

+ 2 - 2
netbox/ipam/graphql/types.py

@@ -133,7 +133,7 @@ class IPAddressType(NetBoxObjectType, BaseIPAddressFamilyType):
         Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')],
         Annotated["FHRPGroupType", strawberry.lazy('ipam.graphql.types')],
         Annotated["VMInterfaceType", strawberry.lazy('virtualization.graphql.types')],
-    ], strawberry.union("IPAddressAssignmentType")]:
+    ], strawberry.union("IPAddressAssignmentType")] | None:
         return self.assigned_object
 
 
@@ -261,7 +261,7 @@ class VLANGroupType(OrganizationalObjectType):
         Annotated["RegionType", strawberry.lazy('dcim.graphql.types')],
         Annotated["SiteType", strawberry.lazy('dcim.graphql.types')],
         Annotated["SiteGroupType", strawberry.lazy('dcim.graphql.types')],
-    ], strawberry.union("VLANGroupScopeType")]:
+    ], strawberry.union("VLANGroupScopeType")] | None:
         return self.scope
 
 

+ 3 - 0
netbox/utilities/testing/api.py

@@ -469,6 +469,9 @@ class APIViewTestCases:
                 elif type(field.type) is StrawberryUnion:
                     # this would require a fragment query
                     continue
+                elif type(field.type) is StrawberryOptional and type(field.type.of_type) is StrawberryUnion:
+                    # this would require a fragment query
+                    continue
                 elif type(field.type) is StrawberryOptional and type(field.type.of_type) is LazyType:
                     fields_string += f'{field.name} {{ id }}\n'
                 elif hasattr(field, 'is_relation') and field.is_relation: