From 906c3dca8b63dfa9c3ec459346d20e74da3e062c Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 13 May 2022 16:23:44 -0400 Subject: [PATCH] Tests cleanup --- netbox/dcim/api/views.py | 16 ++++++++-------- netbox/dcim/tables/cables.py | 14 ++++++++------ netbox/dcim/tests/test_api.py | 4 ++-- netbox/dcim/tests/test_filtersets.py | 5 ++++- netbox/dcim/tests/test_models.py | 10 ++++------ netbox/dcim/views.py | 4 ++-- 6 files changed, 28 insertions(+), 25 deletions(-) diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index fd5bf13c2..874d0bb09 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -68,15 +68,15 @@ class PathEndpointMixin(object): break # Serialize each object - serializer_a = get_serializer_for_model(near_end, prefix='Nested') - x = serializer_a(near_end, context={'request': request}).data + serializer_a = get_serializer_for_model(near_end[0], prefix='Nested') + x = serializer_a(near_end, many=True, context={'request': request}).data if cable is not None: - y = serializers.TracedCableSerializer(cable, context={'request': request}).data + y = serializers.TracedCableSerializer(cable[0], context={'request': request}).data else: y = None if far_end is not None: - serializer_b = get_serializer_for_model(far_end, prefix='Nested') - z = serializer_b(far_end, context={'request': request}).data + serializer_b = get_serializer_for_model(far_end[0], prefix='Nested') + z = serializer_b(far_end, many=True, context={'request': request}).data else: z = None @@ -745,13 +745,13 @@ class ConnectedDeviceViewSet(ViewSet): device=peer_device, name=peer_interface_name ) - endpoint = peer_interface.connected_endpoint + endpoints = peer_interface.connected_endpoints # If an Interface, return the parent device - if type(endpoint) is Interface: + if endpoints and type(endpoints[0]) is Interface: device = get_object_or_404( Device.objects.restrict(request.user, 'view'), - pk=endpoint.device_id + pk=endpoints[0].device_id ) return Response(serializers.DeviceSerializer(device, context={'request': request}).data) diff --git a/netbox/dcim/tables/cables.py b/netbox/dcim/tables/cables.py index b17cf628e..f3643dd1b 100644 --- a/netbox/dcim/tables/cables.py +++ b/netbox/dcim/tables/cables.py @@ -11,7 +11,7 @@ __all__ = ( ) -class CableTerminationColumn(tables.TemplateColumn): +class CableTerminationsColumn(tables.TemplateColumn): def __init__(self, cable_end, *args, **kwargs): template_code = """ @@ -24,7 +24,7 @@ class CableTerminationColumn(tables.TemplateColumn): super().__init__(template_code=template_code, *args, **kwargs) def value(self, value): - return ', '.join(value.all()) + return ', '.join([str(t.termination) for t in value.all()]) # @@ -56,15 +56,17 @@ class CableTable(NetBoxTable): # linkify=True, # verbose_name='Rack B' # ) - a_terminations = CableTerminationColumn( + a_terminations = CableTerminationsColumn( cable_end='A', accessor=Accessor('terminations'), - orderable=False + orderable=False, + verbose_name='A Side' ) - b_terminations = CableTerminationColumn( + b_terminations = CableTerminationsColumn( cable_end='B', accessor=Accessor('terminations'), - orderable=False + orderable=False, + verbose_name='B Side' ) status = columns.ChoiceFieldColumn() tenant = TenantColumn() diff --git a/netbox/dcim/tests/test_api.py b/netbox/dcim/tests/test_api.py index aaad18577..bdf1f287f 100644 --- a/netbox/dcim/tests/test_api.py +++ b/netbox/dcim/tests/test_api.py @@ -55,9 +55,9 @@ class Mixins: self.assertHttpStatus(response, status.HTTP_200_OK) self.assertEqual(len(response.data), 1) segment1 = response.data[0] - self.assertEqual(segment1[0]['name'], obj.name) + self.assertEqual(segment1[0][0]['name'], obj.name) self.assertEqual(segment1[1]['label'], cable.label) - self.assertEqual(segment1[2]['name'], peer_obj.name) + self.assertEqual(segment1[2][0]['name'], peer_obj.name) class RegionTest(APIViewTestCases.APIViewTestCase): diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index dab19f1e6..174e02e67 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -3668,7 +3668,10 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) def test_termination_ids(self): - interface_ids = Cable.objects.values_list('termination_a_id', flat=True)[:3] + interface_ids = CableTermination.objects.filter( + cable__in=Cable.objects.all()[:3], + cable_end='A' + ).values_list('termination_id', flat=True) params = { 'termination_a_type': 'dcim.interface', 'termination_a_id': list(interface_ids), diff --git a/netbox/dcim/tests/test_models.py b/netbox/dcim/tests/test_models.py index 5a57852c4..d070efad9 100644 --- a/netbox/dcim/tests/test_models.py +++ b/netbox/dcim/tests/test_models.py @@ -501,12 +501,10 @@ class CableTestCase(TestCase): """ When a new Cable is created, it must be cached on either termination point. """ - interface1 = Interface.objects.get(pk=self.interface1.pk) - interface2 = Interface.objects.get(pk=self.interface2.pk) - self.assertEqual(self.cable.termination_a, interface1) - self.assertEqual(interface1._link_peer, interface2) - self.assertEqual(self.cable.termination_b, interface2) - self.assertEqual(interface2._link_peer, interface1) + self.interface1.refresh_from_db() + self.interface2.refresh_from_db() + self.assertEqual(self.interface1._link_peer, self.interface2) + self.assertEqual(self.interface2._link_peer, self.interface1) def test_cable_deletion(self): """ diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 595b8febe..5c27f734e 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -2883,14 +2883,14 @@ class CableBulkImportView(generic.BulkImportView): class CableBulkEditView(generic.BulkEditView): - queryset = Cable.objects.prefetch_related('termination_a', 'termination_b') + queryset = Cable.objects.prefetch_related('terminations') filterset = filtersets.CableFilterSet table = tables.CableTable form = forms.CableBulkEditForm class CableBulkDeleteView(generic.BulkDeleteView): - queryset = Cable.objects.prefetch_related('termination_a', 'termination_b') + queryset = Cable.objects.prefetch_related('terminations') filterset = filtersets.CableFilterSet table = tables.CableTable