From 52b0c6e9569dfdebba72d4ecf054c8dab34d979f Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Fri, 19 Jul 2024 17:27:48 +0700 Subject: [PATCH] 7025 CircuitGroupAssignment tests --- netbox/circuits/models/circuits.py | 2 +- netbox/circuits/tests/test_api.py | 71 +++++++++++++++ netbox/circuits/tests/test_filtersets.py | 56 ++++++++++++ netbox/circuits/tests/test_views.py | 106 +++++++++++++++++++++++ 4 files changed, 234 insertions(+), 1 deletion(-) diff --git a/netbox/circuits/models/circuits.py b/netbox/circuits/models/circuits.py index efe7069a9..3ca77c092 100644 --- a/netbox/circuits/models/circuits.py +++ b/netbox/circuits/models/circuits.py @@ -211,7 +211,7 @@ class CircuitGroupAssignment(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, def __str__(self): if self.priority: - return f"{self.group} ({self.priority}) -> {self.circuit}" + return f"{self.group} ({self.get_priority_display()}) -> {self.circuit}" return str(f"{self.group} -> {self.circuit}") def get_absolute_url(self): diff --git a/netbox/circuits/tests/test_api.py b/netbox/circuits/tests/test_api.py index 2a195c4ff..311bd65ee 100644 --- a/netbox/circuits/tests/test_api.py +++ b/netbox/circuits/tests/test_api.py @@ -281,6 +281,77 @@ class ProviderAccountTest(APIViewTestCases.APIViewTestCase): } +class CircuitGroupAssignmentTest(APIViewTestCases.APIViewTestCase): + model = CircuitGroupAssignment + brief_fields = ['group', 'circuit', 'display', 'id', 'priority', 'url'] + bulk_update_data = { + 'priority': CircuitPriorityChoices.PRIORITY_INACTIVE, + } + + @classmethod + def setUpTestData(cls): + + circuit_groups = ( + CircuitGroup(name='Circuit Group 1', slug='circuit-group-1'), + CircuitGroup(name='Circuit Group 2', slug='circuit-group-2'), + CircuitGroup(name='Circuit Group 3', slug='circuit-group-3'), + CircuitGroup(name='Circuit Group 4', slug='circuit-group-4'), + CircuitGroup(name='Circuit Group 5', slug='circuit-group-5'), + CircuitGroup(name='Circuit Group 6', slug='circuit-group-6'), + ) + CircuitGroup.objects.bulk_create(circuit_groups) + + provider = Provider.objects.create(name='Provider 1', slug='provider-1') + circuittype = CircuitType.objects.create(name='Circuit Type 1', slug='circuit-type-1') + + circuits = ( + Circuit(cid='Circuit 1', provider=provider, type=circuittype), + Circuit(cid='Circuit 2', provider=provider, type=circuittype), + Circuit(cid='Circuit 3', provider=provider, type=circuittype), + Circuit(cid='Circuit 4', provider=provider, type=circuittype), + Circuit(cid='Circuit 5', provider=provider, type=circuittype), + Circuit(cid='Circuit 6', provider=provider, type=circuittype), + ) + Circuit.objects.bulk_create(circuits) + + assignments = ( + CircuitGroupAssignment( + group=circuit_groups[0], + circuit=circuits[0], + priority=CircuitPriorityChoices.PRIORITY_PRIMARY + ), + CircuitGroupAssignment( + group=circuit_groups[1], + circuit=circuits[1], + priority=CircuitPriorityChoices.PRIORITY_SECONDARY + ), + CircuitGroupAssignment( + group=circuit_groups[2], + circuit=circuits[2], + priority=CircuitPriorityChoices.PRIORITY_TERTIARY + ), + ) + CircuitGroupAssignment.objects.bulk_create(assignments) + + cls.create_data = [ + { + 'group_id': groups[3].pk, + 'circuit_id': circuits[3].pk + 'priority': CircuitPriorityChoices.PRIORITY_PRIMARY, + }, + { + 'group_id': groups[4].pk, + 'circuit_id': circuits[4].pk + 'priority': CircuitPriorityChoices.PRIORITY_SECONDARY, + }, + { + 'group_id': groups[5].pk, + 'circuit_id': circuits[5].pk + 'priority': CircuitPriorityChoices.PRIORITY_TERTIARY, + }, + ] + + class ProviderNetworkTest(APIViewTestCases.APIViewTestCase): model = ProviderNetwork brief_fields = ['description', 'display', 'id', 'name', 'url'] diff --git a/netbox/circuits/tests/test_filtersets.py b/netbox/circuits/tests/test_filtersets.py index 518827620..c0a547de5 100644 --- a/netbox/circuits/tests/test_filtersets.py +++ b/netbox/circuits/tests/test_filtersets.py @@ -509,6 +509,62 @@ class CircuitGroupTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) +class CircuitGroupAssignmentTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = CircuitGroupAssignment.objects.all() + filterset = CircuitGroupAssignmentFilterSet + + @classmethod + def setUpTestData(cls): + + circuit_groups = ( + CircuitGroup(name='Circuit Group 1', slug='circuit-group-1'), + CircuitGroup(name='Circuit Group 2', slug='circuit-group-2'), + CircuitGroup(name='Circuit Group 3', slug='circuit-group-3'), + CircuitGroup(name='Circuit Group 4', slug='circuit-group-4'), + ) + CircuitGroup.objects.bulk_create(circuit_groups) + + provider = Provider.objects.create(name='Provider 1', slug='provider-1') + circuittype = CircuitType.objects.create(name='Circuit Type 1', slug='circuit-type-1') + + circuits = ( + Circuit(cid='Circuit 1', provider=provider, type=circuittype), + Circuit(cid='Circuit 2', provider=provider, type=circuittype), + Circuit(cid='Circuit 3', provider=provider, type=circuittype), + Circuit(cid='Circuit 4', provider=provider, type=circuittype), + ) + Circuit.objects.bulk_create(circuits) + + assignments = ( + CircuitGroupAssignment( + group=circuit_groups[0], + circuit=circuits[0], + priority=CircuitPriorityChoices.PRIORITY_PRIMARY + ), + CircuitGroupAssignment( + group=circuit_groups[1], + circuit=circuits[1], + priority=CircuitPriorityChoices.PRIORITY_SECONDARY + ), + CircuitGroupAssignment( + group=circuit_groups[2], + circuit=circuits[2], + priority=CircuitPriorityChoices.PRIORITY_TERTIARY + ), + ) + CircuitGroupAssignment.objects.bulk_create(assignments) + + def test_group_id(self): + groups = CircuitGroup.objects.filter(name__in=['Circuit Group 1', 'Circuit Group 2']) + params = {'goup_id': [groups[0].pk, groups[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_circuit_id(self): + circuits = Circuit.objects.filter(cid__in=['Circuit 1', 'Circuit 2']) + params = {'circuit_id': [circuits[0].pk, circuits[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + class ProviderNetworkTestCase(TestCase, ChangeLoggedFilterSetTests): queryset = ProviderNetwork.objects.all() filterset = ProviderNetworkFilterSet diff --git a/netbox/circuits/tests/test_views.py b/netbox/circuits/tests/test_views.py index 577548703..931392a1d 100644 --- a/netbox/circuits/tests/test_views.py +++ b/netbox/circuits/tests/test_views.py @@ -404,3 +404,109 @@ class CircuitTerminationTestCase(ViewTestCases.PrimaryObjectViewTestCase): response = self.client.get(reverse('circuits:circuittermination_trace', kwargs={'pk': circuittermination.pk})) self.assertHttpStatus(response, 200) + + +class CircuitGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase): + model = CircuitGroup + + @classmethod + def setUpTestData(cls): + + circuit_groups = ( + CircuitGroup(name='Circuit Group 1', slug='circuit-group-1'), + CircuitGroup(name='Circuit Group 2', slug='circuit-group-2'), + CircuitGroup(name='Circuit Group 3', slug='circuit-group-3'), + ) + CircuitGroup.objects.bulk_create(circuit_groups) + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'name': 'Circuit Group X', + 'slug': 'circuit-group-x', + 'description': 'A new Circuit Group', + 'tags': [t.pk for t in tags], + } + + cls.csv_data = ( + "name,slug", + "Circuit Group 4,circuit-group-4", + "Circuit Group 5,circuit-group-5", + "Circuit Group 6,circuit-group-6", + ) + + cls.csv_update_data = ( + "id,name,description", + f"{circuit_groups[0].pk},Circuit Group 7,New description7", + f"{circuit_groups[1].pk},Circuit Group 8,New description8", + f"{circuit_groups[2].pk},Circuit Group 9,New description9", + ) + + cls.bulk_edit_data = { + 'description': 'Foo', + } + + +class CircuitGroupAssignmentTestCase( + ViewTestCases.CreateObjectViewTestCase, + ViewTestCases.EditObjectViewTestCase, + ViewTestCases.DeleteObjectViewTestCase, + ViewTestCases.ListObjectsViewTestCase, + ViewTestCases.BulkEditObjectsViewTestCase, + ViewTestCases.BulkDeleteObjectsViewTestCase +): + model = CircuitGroupAssignment + + @classmethod + def setUpTestData(cls): + + circuit_groups = ( + CircuitGroup(name='Circuit Group 1', slug='circuit-group-1'), + CircuitGroup(name='Circuit Group 2', slug='circuit-group-2'), + CircuitGroup(name='Circuit Group 3', slug='circuit-group-3'), + CircuitGroup(name='Circuit Group 4', slug='circuit-group-4'), + ) + CircuitGroup.objects.bulk_create(circuit_groups) + + provider = Provider.objects.create(name='Provider 1', slug='provider-1') + circuittype = CircuitType.objects.create(name='Circuit Type 1', slug='circuit-type-1') + + circuits = ( + Circuit(cid='Circuit 1', provider=provider, type=circuittype), + Circuit(cid='Circuit 2', provider=provider, type=circuittype), + Circuit(cid='Circuit 3', provider=provider, type=circuittype), + Circuit(cid='Circuit 4', provider=provider, type=circuittype), + ) + Circuit.objects.bulk_create(circuits) + + assignments = ( + CircuitGroupAssignment( + group=circuit_groups[0], + circuit=circuits[0], + priority=CircuitPriorityChoices.PRIORITY_PRIMARY + ), + CircuitGroupAssignment( + group=circuit_groups[1], + circuit=circuits[1], + priority=CircuitPriorityChoices.PRIORITY_SECONDARY + ), + CircuitGroupAssignment( + group=circuit_groups[2], + circuit=circuits[2], + priority=CircuitPriorityChoices.PRIORITY_TERTIARY + ), + ) + CircuitGroupAssignment.objects.bulk_create(assignments) + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'group': circuit_groups[3], + 'circuit': circuits[3], + 'priority': CircuitPriorityChoices.PRIORITY_INACTIVE, + 'tags': [t.pk for t in tags], + } + + cls.bulk_edit_data = { + 'priority': CircuitPriorityChoices.PRIORITY_INACTIVE, + }