From 30bcd3636ba66b6ec73cfd2a4c6e4fb92639358a Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 20 Oct 2023 10:27:27 -0700 Subject: [PATCH] 8356 api tests --- .../virtualization/api/nested_serializers.py | 12 +++++- netbox/virtualization/api/serializers.py | 4 +- netbox/virtualization/tests/test_api.py | 42 ++++++++++++++++++- 3 files changed, 54 insertions(+), 4 deletions(-) diff --git a/netbox/virtualization/api/nested_serializers.py b/netbox/virtualization/api/nested_serializers.py index 8c3f57c1d..8812f4405 100644 --- a/netbox/virtualization/api/nested_serializers.py +++ b/netbox/virtualization/api/nested_serializers.py @@ -2,12 +2,13 @@ from drf_spectacular.utils import extend_schema_serializer from rest_framework import serializers from netbox.api.serializers import WritableNestedSerializer -from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface +from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualDisk, VirtualMachine, VMInterface __all__ = [ 'NestedClusterGroupSerializer', 'NestedClusterSerializer', 'NestedClusterTypeSerializer', + 'NestedVirtualDiskSerializer', 'NestedVMInterfaceSerializer', 'NestedVirtualMachineSerializer', ] @@ -72,3 +73,12 @@ class NestedVMInterfaceSerializer(WritableNestedSerializer): class Meta: model = VMInterface fields = ['id', 'url', 'display', 'virtual_machine', 'name'] + + +class NestedVirtualDiskSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:virtualdisk-detail') + virtual_machine = NestedVirtualMachineSerializer(read_only=True) + + class Meta: + model = VirtualDisk + fields = ['id', 'url', 'virtual_machine', 'name', 'size'] diff --git a/netbox/virtualization/api/serializers.py b/netbox/virtualization/api/serializers.py index 84dcd5407..0b36d37f0 100644 --- a/netbox/virtualization/api/serializers.py +++ b/netbox/virtualization/api/serializers.py @@ -167,11 +167,11 @@ class VMInterfaceSerializer(NetBoxModelSerializer): # class VirtualDiskSerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:virtualdisk-detail') virtual_machine = NestedVirtualMachineSerializer() class Meta: model = VirtualDisk fields = [ - 'id', 'virtual_machine', 'size', 'tags', 'custom_fields', - 'created', 'last_updated', + 'id', 'url', 'virtual_machine', 'name', 'size', 'tags', 'custom_fields', 'created', 'last_updated', ] diff --git a/netbox/virtualization/tests/test_api.py b/netbox/virtualization/tests/test_api.py index b2ae68860..1e11fc36a 100644 --- a/netbox/virtualization/tests/test_api.py +++ b/netbox/virtualization/tests/test_api.py @@ -6,7 +6,7 @@ from dcim.models import Site from ipam.models import VLAN, VRF from utilities.testing import APITestCase, APIViewTestCases, create_test_device from virtualization.choices import * -from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface +from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualDisk, VirtualMachine, VMInterface class AppTest(APITestCase): @@ -293,3 +293,43 @@ class VMInterfaceTest(APIViewTestCases.APIViewTestCase): 'vrf': vrfs[2].pk, }, ] + + +class VirtualDiskTest(APIViewTestCases.APIViewTestCase): + model = VirtualDisk + brief_fields = ['id', 'name', 'size', 'url', 'virtual_machine'] + bulk_update_data = { + 'name': 'New name', + } + graphql_base_name = 'virtual_disk' + + @classmethod + def setUpTestData(cls): + clustertype = ClusterType.objects.create(name='Test Cluster Type 1', slug='test-cluster-type-1') + cluster = Cluster.objects.create(name='Test Cluster 1', type=clustertype) + virtualmachine = VirtualMachine.objects.create(cluster=cluster, name='Test VM 1') + + disks = ( + VirtualDisk(virtual_machine=virtualmachine, name='Disk 1', size=123), + VirtualDisk(virtual_machine=virtualmachine, name='Disk 2', size=456), + VirtualDisk(virtual_machine=virtualmachine, name='Disk 3', size=789), + ) + VirtualDisk.objects.bulk_create(disks) + + cls.create_data = [ + { + 'virtual_machine': virtualmachine.pk, + 'name': 'Disk 4', + 'size': 111, + }, + { + 'virtual_machine': virtualmachine.pk, + 'name': 'Disk 5', + 'size': 222, + }, + { + 'virtual_machine': virtualmachine.pk, + 'name': 'Disk 6', + 'size': 333, + }, + ]