8356 api tests

This commit is contained in:
Arthur 2023-10-20 10:27:27 -07:00
parent 20b0d6f976
commit 30bcd3636b
3 changed files with 54 additions and 4 deletions

View File

@ -2,12 +2,13 @@ from drf_spectacular.utils import extend_schema_serializer
from rest_framework import serializers from rest_framework import serializers
from netbox.api.serializers import WritableNestedSerializer 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__ = [ __all__ = [
'NestedClusterGroupSerializer', 'NestedClusterGroupSerializer',
'NestedClusterSerializer', 'NestedClusterSerializer',
'NestedClusterTypeSerializer', 'NestedClusterTypeSerializer',
'NestedVirtualDiskSerializer',
'NestedVMInterfaceSerializer', 'NestedVMInterfaceSerializer',
'NestedVirtualMachineSerializer', 'NestedVirtualMachineSerializer',
] ]
@ -72,3 +73,12 @@ class NestedVMInterfaceSerializer(WritableNestedSerializer):
class Meta: class Meta:
model = VMInterface model = VMInterface
fields = ['id', 'url', 'display', 'virtual_machine', 'name'] 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']

View File

@ -167,11 +167,11 @@ class VMInterfaceSerializer(NetBoxModelSerializer):
# #
class VirtualDiskSerializer(NetBoxModelSerializer): class VirtualDiskSerializer(NetBoxModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:virtualdisk-detail')
virtual_machine = NestedVirtualMachineSerializer() virtual_machine = NestedVirtualMachineSerializer()
class Meta: class Meta:
model = VirtualDisk model = VirtualDisk
fields = [ fields = [
'id', 'virtual_machine', 'size', 'tags', 'custom_fields', 'id', 'url', 'virtual_machine', 'name', 'size', 'tags', 'custom_fields', 'created', 'last_updated',
'created', 'last_updated',
] ]

View File

@ -6,7 +6,7 @@ from dcim.models import Site
from ipam.models import VLAN, VRF from ipam.models import VLAN, VRF
from utilities.testing import APITestCase, APIViewTestCases, create_test_device from utilities.testing import APITestCase, APIViewTestCases, create_test_device
from virtualization.choices import * 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): class AppTest(APITestCase):
@ -293,3 +293,43 @@ class VMInterfaceTest(APIViewTestCases.APIViewTestCase):
'vrf': vrfs[2].pk, '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,
},
]