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

Introduce BaseFilterSetTests to standardize testing of PK filters

jeremystretch 4 лет назад
Родитель
Сommit
ffa4cd134b

+ 6 - 21
netbox/circuits/tests/test_filtersets.py

@@ -5,9 +5,10 @@ from circuits.filtersets import *
 from circuits.models import *
 from circuits.models import *
 from dcim.models import Cable, Region, Site, SiteGroup
 from dcim.models import Cable, Region, Site, SiteGroup
 from tenancy.models import Tenant, TenantGroup
 from tenancy.models import Tenant, TenantGroup
+from utilities.testing import BaseFilterSetTests
 
 
 
 
-class ProviderTestCase(TestCase):
+class ProviderTestCase(TestCase, BaseFilterSetTests):
     queryset = Provider.objects.all()
     queryset = Provider.objects.all()
     filterset = ProviderFilterSet
     filterset = ProviderFilterSet
 
 
@@ -61,10 +62,6 @@ class ProviderTestCase(TestCase):
             CircuitTermination(circuit=circuits[1], site=sites[0], term_side='A'),
             CircuitTermination(circuit=circuits[1], site=sites[0], term_side='A'),
         ))
         ))
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Provider 1', 'Provider 2']}
         params = {'name': ['Provider 1', 'Provider 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -103,7 +100,7 @@ class ProviderTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class CircuitTypeTestCase(TestCase):
+class CircuitTypeTestCase(TestCase, BaseFilterSetTests):
     queryset = CircuitType.objects.all()
     queryset = CircuitType.objects.all()
     filterset = CircuitTypeFilterSet
     filterset = CircuitTypeFilterSet
 
 
@@ -116,10 +113,6 @@ class CircuitTypeTestCase(TestCase):
             CircuitType(name='Circuit Type 3', slug='circuit-type-3'),
             CircuitType(name='Circuit Type 3', slug='circuit-type-3'),
         ))
         ))
 
 
-    def test_id(self):
-        params = {'id': [self.queryset.first().pk]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Circuit Type 1']}
         params = {'name': ['Circuit Type 1']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
@@ -129,7 +122,7 @@ class CircuitTypeTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
 
 
 
 
-class CircuitTestCase(TestCase):
+class CircuitTestCase(TestCase, BaseFilterSetTests):
     queryset = Circuit.objects.all()
     queryset = Circuit.objects.all()
     filterset = CircuitFilterSet
     filterset = CircuitFilterSet
 
 
@@ -213,10 +206,6 @@ class CircuitTestCase(TestCase):
         ))
         ))
         CircuitTermination.objects.bulk_create(circuit_terminations)
         CircuitTermination.objects.bulk_create(circuit_terminations)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_cid(self):
     def test_cid(self):
         params = {'cid': ['Test Circuit 1', 'Test Circuit 2']}
         params = {'cid': ['Test Circuit 1', 'Test Circuit 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -288,7 +277,7 @@ class CircuitTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
 
 
 
 
-class CircuitTerminationTestCase(TestCase):
+class CircuitTerminationTestCase(TestCase, BaseFilterSetTests):
     queryset = CircuitTermination.objects.all()
     queryset = CircuitTermination.objects.all()
     filterset = CircuitTerminationFilterSet
     filterset = CircuitTerminationFilterSet
 
 
@@ -382,7 +371,7 @@ class CircuitTerminationTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class ProviderNetworkTestCase(TestCase):
+class ProviderNetworkTestCase(TestCase, BaseFilterSetTests):
     queryset = ProviderNetwork.objects.all()
     queryset = ProviderNetwork.objects.all()
     filterset = ProviderNetworkFilterSet
     filterset = ProviderNetworkFilterSet
 
 
@@ -403,10 +392,6 @@ class ProviderNetworkTestCase(TestCase):
         )
         )
         ProviderNetwork.objects.bulk_create(provider_networks)
         ProviderNetwork.objects.bulk_create(provider_networks)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Provider Network 1', 'Provider Network 2']}
         params = {'name': ['Provider Network 1', 'Provider Network 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

+ 34 - 165
netbox/dcim/tests/test_filtersets.py

@@ -6,10 +6,11 @@ from dcim.filtersets import *
 from dcim.models import *
 from dcim.models import *
 from ipam.models import IPAddress
 from ipam.models import IPAddress
 from tenancy.models import Tenant, TenantGroup
 from tenancy.models import Tenant, TenantGroup
+from utilities.testing import BaseFilterSetTests
 from virtualization.models import Cluster, ClusterType
 from virtualization.models import Cluster, ClusterType
 
 
 
 
-class RegionTestCase(TestCase):
+class RegionTestCase(TestCase, BaseFilterSetTests):
     queryset = Region.objects.all()
     queryset = Region.objects.all()
     filterset = RegionFilterSet
     filterset = RegionFilterSet
 
 
@@ -35,10 +36,6 @@ class RegionTestCase(TestCase):
         for region in child_regions:
         for region in child_regions:
             region.save()
             region.save()
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Region 1', 'Region 2']}
         params = {'name': ['Region 1', 'Region 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -59,7 +56,7 @@ class RegionTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
 
 
 
 
-class SiteGroupTestCase(TestCase):
+class SiteGroupTestCase(TestCase, BaseFilterSetTests):
     queryset = SiteGroup.objects.all()
     queryset = SiteGroup.objects.all()
     filterset = SiteGroupFilterSet
     filterset = SiteGroupFilterSet
 
 
@@ -85,10 +82,6 @@ class SiteGroupTestCase(TestCase):
         for sitegroup in child_sitegroups:
         for sitegroup in child_sitegroups:
             sitegroup.save()
             sitegroup.save()
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Site Group 1', 'Site Group 2']}
         params = {'name': ['Site Group 1', 'Site Group 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -109,7 +102,7 @@ class SiteGroupTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
 
 
 
 
-class SiteTestCase(TestCase):
+class SiteTestCase(TestCase, BaseFilterSetTests):
     queryset = Site.objects.all()
     queryset = Site.objects.all()
     filterset = SiteFilterSet
     filterset = SiteFilterSet
 
 
@@ -154,10 +147,6 @@ class SiteTestCase(TestCase):
         )
         )
         Site.objects.bulk_create(sites)
         Site.objects.bulk_create(sites)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Site 1', 'Site 2']}
         params = {'name': ['Site 1', 'Site 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -227,7 +216,7 @@ class SiteTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class LocationTestCase(TestCase):
+class LocationTestCase(TestCase, BaseFilterSetTests):
     queryset = Location.objects.all()
     queryset = Location.objects.all()
     filterset = LocationFilterSet
     filterset = LocationFilterSet
 
 
@@ -273,10 +262,6 @@ class LocationTestCase(TestCase):
         for location in locations:
         for location in locations:
             location.save()
             location.save()
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Location 1', 'Location 2']}
         params = {'name': ['Location 1', 'Location 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -318,7 +303,7 @@ class LocationTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class RackRoleTestCase(TestCase):
+class RackRoleTestCase(TestCase, BaseFilterSetTests):
     queryset = RackRole.objects.all()
     queryset = RackRole.objects.all()
     filterset = RackRoleFilterSet
     filterset = RackRoleFilterSet
 
 
@@ -332,10 +317,6 @@ class RackRoleTestCase(TestCase):
         )
         )
         RackRole.objects.bulk_create(rack_roles)
         RackRole.objects.bulk_create(rack_roles)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Rack Role 1', 'Rack Role 2']}
         params = {'name': ['Rack Role 1', 'Rack Role 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -349,7 +330,7 @@ class RackRoleTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class RackTestCase(TestCase):
+class RackTestCase(TestCase, BaseFilterSetTests):
     queryset = Rack.objects.all()
     queryset = Rack.objects.all()
     filterset = RackFilterSet
     filterset = RackFilterSet
 
 
@@ -416,10 +397,6 @@ class RackTestCase(TestCase):
         )
         )
         Rack.objects.bulk_create(racks)
         Rack.objects.bulk_create(racks)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Rack 1', 'Rack 2']}
         params = {'name': ['Rack 1', 'Rack 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -523,7 +500,7 @@ class RackTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class RackReservationTestCase(TestCase):
+class RackReservationTestCase(TestCase, BaseFilterSetTests):
     queryset = RackReservation.objects.all()
     queryset = RackReservation.objects.all()
     filterset = RackReservationFilterSet
     filterset = RackReservationFilterSet
 
 
@@ -581,10 +558,6 @@ class RackReservationTestCase(TestCase):
         )
         )
         RackReservation.objects.bulk_create(reservations)
         RackReservation.objects.bulk_create(reservations)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_site(self):
     def test_site(self):
         sites = Site.objects.all()[:2]
         sites = Site.objects.all()[:2]
         params = {'site_id': [sites[0].pk, sites[1].pk]}
         params = {'site_id': [sites[0].pk, sites[1].pk]}
@@ -621,7 +594,7 @@ class RackReservationTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class ManufacturerTestCase(TestCase):
+class ManufacturerTestCase(TestCase, BaseFilterSetTests):
     queryset = Manufacturer.objects.all()
     queryset = Manufacturer.objects.all()
     filterset = ManufacturerFilterSet
     filterset = ManufacturerFilterSet
 
 
@@ -635,10 +608,6 @@ class ManufacturerTestCase(TestCase):
         )
         )
         Manufacturer.objects.bulk_create(manufacturers)
         Manufacturer.objects.bulk_create(manufacturers)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Manufacturer 1', 'Manufacturer 2']}
         params = {'name': ['Manufacturer 1', 'Manufacturer 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -652,7 +621,7 @@ class ManufacturerTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class DeviceTypeTestCase(TestCase):
+class DeviceTypeTestCase(TestCase, BaseFilterSetTests):
     queryset = DeviceType.objects.all()
     queryset = DeviceType.objects.all()
     filterset = DeviceTypeFilterSet
     filterset = DeviceTypeFilterSet
 
 
@@ -708,10 +677,6 @@ class DeviceTypeTestCase(TestCase):
             DeviceBayTemplate(device_type=device_types[1], name='Device Bay 2'),
             DeviceBayTemplate(device_type=device_types[1], name='Device Bay 2'),
         ))
         ))
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_model(self):
     def test_model(self):
         params = {'model': ['Model 1', 'Model 2']}
         params = {'model': ['Model 1', 'Model 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -788,7 +753,7 @@ class DeviceTypeTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
 
 
 
 
-class ConsolePortTemplateTestCase(TestCase):
+class ConsolePortTemplateTestCase(TestCase, BaseFilterSetTests):
     queryset = ConsolePortTemplate.objects.all()
     queryset = ConsolePortTemplate.objects.all()
     filterset = ConsolePortTemplateFilterSet
     filterset = ConsolePortTemplateFilterSet
 
 
@@ -810,10 +775,6 @@ class ConsolePortTemplateTestCase(TestCase):
             ConsolePortTemplate(device_type=device_types[2], name='Console Port 3'),
             ConsolePortTemplate(device_type=device_types[2], name='Console Port 3'),
         ))
         ))
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Console Port 1', 'Console Port 2']}
         params = {'name': ['Console Port 1', 'Console Port 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -824,7 +785,7 @@ class ConsolePortTemplateTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class ConsoleServerPortTemplateTestCase(TestCase):
+class ConsoleServerPortTemplateTestCase(TestCase, BaseFilterSetTests):
     queryset = ConsoleServerPortTemplate.objects.all()
     queryset = ConsoleServerPortTemplate.objects.all()
     filterset = ConsoleServerPortTemplateFilterSet
     filterset = ConsoleServerPortTemplateFilterSet
 
 
@@ -846,10 +807,6 @@ class ConsoleServerPortTemplateTestCase(TestCase):
             ConsoleServerPortTemplate(device_type=device_types[2], name='Console Server Port 3'),
             ConsoleServerPortTemplate(device_type=device_types[2], name='Console Server Port 3'),
         ))
         ))
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Console Server Port 1', 'Console Server Port 2']}
         params = {'name': ['Console Server Port 1', 'Console Server Port 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -860,7 +817,7 @@ class ConsoleServerPortTemplateTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class PowerPortTemplateTestCase(TestCase):
+class PowerPortTemplateTestCase(TestCase, BaseFilterSetTests):
     queryset = PowerPortTemplate.objects.all()
     queryset = PowerPortTemplate.objects.all()
     filterset = PowerPortTemplateFilterSet
     filterset = PowerPortTemplateFilterSet
 
 
@@ -882,10 +839,6 @@ class PowerPortTemplateTestCase(TestCase):
             PowerPortTemplate(device_type=device_types[2], name='Power Port 3', maximum_draw=300, allocated_draw=150),
             PowerPortTemplate(device_type=device_types[2], name='Power Port 3', maximum_draw=300, allocated_draw=150),
         ))
         ))
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Power Port 1', 'Power Port 2']}
         params = {'name': ['Power Port 1', 'Power Port 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -904,7 +857,7 @@ class PowerPortTemplateTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class PowerOutletTemplateTestCase(TestCase):
+class PowerOutletTemplateTestCase(TestCase, BaseFilterSetTests):
     queryset = PowerOutletTemplate.objects.all()
     queryset = PowerOutletTemplate.objects.all()
     filterset = PowerOutletTemplateFilterSet
     filterset = PowerOutletTemplateFilterSet
 
 
@@ -926,10 +879,6 @@ class PowerOutletTemplateTestCase(TestCase):
             PowerOutletTemplate(device_type=device_types[2], name='Power Outlet 3', feed_leg=PowerOutletFeedLegChoices.FEED_LEG_C),
             PowerOutletTemplate(device_type=device_types[2], name='Power Outlet 3', feed_leg=PowerOutletFeedLegChoices.FEED_LEG_C),
         ))
         ))
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Power Outlet 1', 'Power Outlet 2']}
         params = {'name': ['Power Outlet 1', 'Power Outlet 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -944,7 +893,7 @@ class PowerOutletTemplateTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class InterfaceTemplateTestCase(TestCase):
+class InterfaceTemplateTestCase(TestCase, BaseFilterSetTests):
     queryset = InterfaceTemplate.objects.all()
     queryset = InterfaceTemplate.objects.all()
     filterset = InterfaceTemplateFilterSet
     filterset = InterfaceTemplateFilterSet
 
 
@@ -966,10 +915,6 @@ class InterfaceTemplateTestCase(TestCase):
             InterfaceTemplate(device_type=device_types[2], name='Interface 3', type=InterfaceTypeChoices.TYPE_1GE_SFP, mgmt_only=False),
             InterfaceTemplate(device_type=device_types[2], name='Interface 3', type=InterfaceTypeChoices.TYPE_1GE_SFP, mgmt_only=False),
         ))
         ))
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Interface 1', 'Interface 2']}
         params = {'name': ['Interface 1', 'Interface 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -990,7 +935,7 @@ class InterfaceTemplateTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class FrontPortTemplateTestCase(TestCase):
+class FrontPortTemplateTestCase(TestCase, BaseFilterSetTests):
     queryset = FrontPortTemplate.objects.all()
     queryset = FrontPortTemplate.objects.all()
     filterset = FrontPortTemplateFilterSet
     filterset = FrontPortTemplateFilterSet
 
 
@@ -1019,10 +964,6 @@ class FrontPortTemplateTestCase(TestCase):
             FrontPortTemplate(device_type=device_types[2], name='Front Port 3', rear_port=rear_ports[2], type=PortTypeChoices.TYPE_BNC),
             FrontPortTemplate(device_type=device_types[2], name='Front Port 3', rear_port=rear_ports[2], type=PortTypeChoices.TYPE_BNC),
         ))
         ))
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Front Port 1', 'Front Port 2']}
         params = {'name': ['Front Port 1', 'Front Port 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -1037,7 +978,7 @@ class FrontPortTemplateTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class RearPortTemplateTestCase(TestCase):
+class RearPortTemplateTestCase(TestCase, BaseFilterSetTests):
     queryset = RearPortTemplate.objects.all()
     queryset = RearPortTemplate.objects.all()
     filterset = RearPortTemplateFilterSet
     filterset = RearPortTemplateFilterSet
 
 
@@ -1059,10 +1000,6 @@ class RearPortTemplateTestCase(TestCase):
             RearPortTemplate(device_type=device_types[2], name='Rear Port 3', type=PortTypeChoices.TYPE_BNC, positions=3),
             RearPortTemplate(device_type=device_types[2], name='Rear Port 3', type=PortTypeChoices.TYPE_BNC, positions=3),
         ))
         ))
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Rear Port 1', 'Rear Port 2']}
         params = {'name': ['Rear Port 1', 'Rear Port 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -1081,7 +1018,7 @@ class RearPortTemplateTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class DeviceBayTemplateTestCase(TestCase):
+class DeviceBayTemplateTestCase(TestCase, BaseFilterSetTests):
     queryset = DeviceBayTemplate.objects.all()
     queryset = DeviceBayTemplate.objects.all()
     filterset = DeviceBayTemplateFilterSet
     filterset = DeviceBayTemplateFilterSet
 
 
@@ -1103,10 +1040,6 @@ class DeviceBayTemplateTestCase(TestCase):
             DeviceBayTemplate(device_type=device_types[2], name='Device Bay 3'),
             DeviceBayTemplate(device_type=device_types[2], name='Device Bay 3'),
         ))
         ))
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Device Bay 1', 'Device Bay 2']}
         params = {'name': ['Device Bay 1', 'Device Bay 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -1117,7 +1050,7 @@ class DeviceBayTemplateTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class DeviceRoleTestCase(TestCase):
+class DeviceRoleTestCase(TestCase, BaseFilterSetTests):
     queryset = DeviceRole.objects.all()
     queryset = DeviceRole.objects.all()
     filterset = DeviceRoleFilterSet
     filterset = DeviceRoleFilterSet
 
 
@@ -1131,10 +1064,6 @@ class DeviceRoleTestCase(TestCase):
         )
         )
         DeviceRole.objects.bulk_create(device_roles)
         DeviceRole.objects.bulk_create(device_roles)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Device Role 1', 'Device Role 2']}
         params = {'name': ['Device Role 1', 'Device Role 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -1154,7 +1083,7 @@ class DeviceRoleTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
 
 
 
 
-class PlatformTestCase(TestCase):
+class PlatformTestCase(TestCase, BaseFilterSetTests):
     queryset = Platform.objects.all()
     queryset = Platform.objects.all()
     filterset = PlatformFilterSet
     filterset = PlatformFilterSet
 
 
@@ -1175,10 +1104,6 @@ class PlatformTestCase(TestCase):
         )
         )
         Platform.objects.bulk_create(platforms)
         Platform.objects.bulk_create(platforms)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Platform 1', 'Platform 2']}
         params = {'name': ['Platform 1', 'Platform 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -1203,7 +1128,7 @@ class PlatformTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class DeviceTestCase(TestCase):
+class DeviceTestCase(TestCase, BaseFilterSetTests):
     queryset = Device.objects.all()
     queryset = Device.objects.all()
     filterset = DeviceFilterSet
     filterset = DeviceFilterSet
 
 
@@ -1356,10 +1281,6 @@ class DeviceTestCase(TestCase):
         Device.objects.filter(pk=devices[0].pk).update(virtual_chassis=virtual_chassis, vc_position=1, vc_priority=1)
         Device.objects.filter(pk=devices[0].pk).update(virtual_chassis=virtual_chassis, vc_position=1, vc_priority=1)
         Device.objects.filter(pk=devices[1].pk).update(virtual_chassis=virtual_chassis, vc_position=2, vc_priority=2)
         Device.objects.filter(pk=devices[1].pk).update(virtual_chassis=virtual_chassis, vc_position=2, vc_priority=2)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Device 1', 'Device 2']}
         params = {'name': ['Device 1', 'Device 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -1549,7 +1470,7 @@ class DeviceTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class ConsolePortTestCase(TestCase):
+class ConsolePortTestCase(TestCase, BaseFilterSetTests):
     queryset = ConsolePort.objects.all()
     queryset = ConsolePort.objects.all()
     filterset = ConsolePortFilterSet
     filterset = ConsolePortFilterSet
 
 
@@ -1608,10 +1529,6 @@ class ConsolePortTestCase(TestCase):
         Cable(termination_a=console_ports[1], termination_b=console_server_ports[1]).save()
         Cable(termination_a=console_ports[1], termination_b=console_server_ports[1]).save()
         # Third port is not connected
         # Third port is not connected
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Console Port 1', 'Console Port 2']}
         params = {'name': ['Console Port 1', 'Console Port 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -1665,7 +1582,7 @@ class ConsolePortTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
 
 
 
 
-class ConsoleServerPortTestCase(TestCase):
+class ConsoleServerPortTestCase(TestCase, BaseFilterSetTests):
     queryset = ConsoleServerPort.objects.all()
     queryset = ConsoleServerPort.objects.all()
     filterset = ConsoleServerPortFilterSet
     filterset = ConsoleServerPortFilterSet
 
 
@@ -1724,10 +1641,6 @@ class ConsoleServerPortTestCase(TestCase):
         Cable(termination_a=console_server_ports[1], termination_b=console_ports[1]).save()
         Cable(termination_a=console_server_ports[1], termination_b=console_ports[1]).save()
         # Third port is not connected
         # Third port is not connected
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Console Server Port 1', 'Console Server Port 2']}
         params = {'name': ['Console Server Port 1', 'Console Server Port 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -1781,7 +1694,7 @@ class ConsoleServerPortTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
 
 
 
 
-class PowerPortTestCase(TestCase):
+class PowerPortTestCase(TestCase, BaseFilterSetTests):
     queryset = PowerPort.objects.all()
     queryset = PowerPort.objects.all()
     filterset = PowerPortFilterSet
     filterset = PowerPortFilterSet
 
 
@@ -1840,10 +1753,6 @@ class PowerPortTestCase(TestCase):
         Cable(termination_a=power_ports[1], termination_b=power_outlets[1]).save()
         Cable(termination_a=power_ports[1], termination_b=power_outlets[1]).save()
         # Third port is not connected
         # Third port is not connected
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Power Port 1', 'Power Port 2']}
         params = {'name': ['Power Port 1', 'Power Port 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -1905,7 +1814,7 @@ class PowerPortTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
 
 
 
 
-class PowerOutletTestCase(TestCase):
+class PowerOutletTestCase(TestCase, BaseFilterSetTests):
     queryset = PowerOutlet.objects.all()
     queryset = PowerOutlet.objects.all()
     filterset = PowerOutletFilterSet
     filterset = PowerOutletFilterSet
 
 
@@ -1964,10 +1873,6 @@ class PowerOutletTestCase(TestCase):
         Cable(termination_a=power_outlets[1], termination_b=power_ports[1]).save()
         Cable(termination_a=power_outlets[1], termination_b=power_ports[1]).save()
         # Third port is not connected
         # Third port is not connected
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Power Outlet 1', 'Power Outlet 2']}
         params = {'name': ['Power Outlet 1', 'Power Outlet 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -2025,7 +1930,7 @@ class PowerOutletTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
 
 
 
 
-class InterfaceTestCase(TestCase):
+class InterfaceTestCase(TestCase, BaseFilterSetTests):
     queryset = Interface.objects.all()
     queryset = Interface.objects.all()
     filterset = InterfaceFilterSet
     filterset = InterfaceFilterSet
 
 
@@ -2081,10 +1986,6 @@ class InterfaceTestCase(TestCase):
         Cable(termination_a=interfaces[1], termination_b=interfaces[4]).save()
         Cable(termination_a=interfaces[1], termination_b=interfaces[4]).save()
         # Third pair is not connected
         # Third pair is not connected
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Interface 1', 'Interface 2']}
         params = {'name': ['Interface 1', 'Interface 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -2200,7 +2101,7 @@ class InterfaceTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class FrontPortTestCase(TestCase):
+class FrontPortTestCase(TestCase, BaseFilterSetTests):
     queryset = FrontPort.objects.all()
     queryset = FrontPort.objects.all()
     filterset = FrontPortFilterSet
     filterset = FrontPortFilterSet
 
 
@@ -2266,10 +2167,6 @@ class FrontPortTestCase(TestCase):
         Cable(termination_a=front_ports[1], termination_b=front_ports[4]).save()
         Cable(termination_a=front_ports[1], termination_b=front_ports[4]).save()
         # Third port is not connected
         # Third port is not connected
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Front Port 1', 'Front Port 2']}
         params = {'name': ['Front Port 1', 'Front Port 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -2321,7 +2218,7 @@ class FrontPortTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class RearPortTestCase(TestCase):
+class RearPortTestCase(TestCase, BaseFilterSetTests):
     queryset = RearPort.objects.all()
     queryset = RearPort.objects.all()
     filterset = RearPortFilterSet
     filterset = RearPortFilterSet
 
 
@@ -2377,10 +2274,6 @@ class RearPortTestCase(TestCase):
         Cable(termination_a=rear_ports[1], termination_b=rear_ports[4]).save()
         Cable(termination_a=rear_ports[1], termination_b=rear_ports[4]).save()
         # Third port is not connected
         # Third port is not connected
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Rear Port 1', 'Rear Port 2']}
         params = {'name': ['Rear Port 1', 'Rear Port 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -2436,7 +2329,7 @@ class RearPortTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class DeviceBayTestCase(TestCase):
+class DeviceBayTestCase(TestCase, BaseFilterSetTests):
     queryset = DeviceBay.objects.all()
     queryset = DeviceBay.objects.all()
     filterset = DeviceBayFilterSet
     filterset = DeviceBayFilterSet
 
 
@@ -2483,10 +2376,6 @@ class DeviceBayTestCase(TestCase):
         )
         )
         DeviceBay.objects.bulk_create(device_bays)
         DeviceBay.objects.bulk_create(device_bays)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Device Bay 1', 'Device Bay 2']}
         params = {'name': ['Device Bay 1', 'Device Bay 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -2528,7 +2417,7 @@ class DeviceBayTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class InventoryItemTestCase(TestCase):
+class InventoryItemTestCase(TestCase, BaseFilterSetTests):
     queryset = InventoryItem.objects.all()
     queryset = InventoryItem.objects.all()
     filterset = InventoryItemFilterSet
     filterset = InventoryItemFilterSet
 
 
@@ -2591,10 +2480,6 @@ class InventoryItemTestCase(TestCase):
         for i in child_inventory_items:
         for i in child_inventory_items:
             i.save()
             i.save()
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Inventory Item 1', 'Inventory Item 2']}
         params = {'name': ['Inventory Item 1', 'Inventory Item 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -2666,7 +2551,7 @@ class InventoryItemTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
 
 
 
 
-class VirtualChassisTestCase(TestCase):
+class VirtualChassisTestCase(TestCase, BaseFilterSetTests):
     queryset = VirtualChassis.objects.all()
     queryset = VirtualChassis.objects.all()
     filterset = VirtualChassisFilterSet
     filterset = VirtualChassisFilterSet
 
 
@@ -2721,10 +2606,6 @@ class VirtualChassisTestCase(TestCase):
         Device.objects.filter(pk=devices[3].pk).update(virtual_chassis=virtual_chassis[1])
         Device.objects.filter(pk=devices[3].pk).update(virtual_chassis=virtual_chassis[1])
         Device.objects.filter(pk=devices[5].pk).update(virtual_chassis=virtual_chassis[2])
         Device.objects.filter(pk=devices[5].pk).update(virtual_chassis=virtual_chassis[2])
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_domain(self):
     def test_domain(self):
         params = {'domain': ['Domain 1', 'Domain 2']}
         params = {'domain': ['Domain 1', 'Domain 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -2762,7 +2643,7 @@ class VirtualChassisTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class CableTestCase(TestCase):
+class CableTestCase(TestCase, BaseFilterSetTests):
     queryset = Cable.objects.all()
     queryset = Cable.objects.all()
     filterset = CableFilterSet
     filterset = CableFilterSet
 
 
@@ -2827,10 +2708,6 @@ class CableTestCase(TestCase):
         Cable(termination_a=interfaces[9], termination_b=interfaces[10], label='Cable 5', type=CableTypeChoices.TYPE_CAT6, status=CableStatusChoices.STATUS_PLANNED, color='e91e63', length=10, length_unit=CableLengthUnitChoices.UNIT_METER).save()
         Cable(termination_a=interfaces[9], termination_b=interfaces[10], label='Cable 5', type=CableTypeChoices.TYPE_CAT6, status=CableStatusChoices.STATUS_PLANNED, color='e91e63', length=10, length_unit=CableLengthUnitChoices.UNIT_METER).save()
         Cable(termination_a=interfaces[11], termination_b=interfaces[0], label='Cable 6', type=CableTypeChoices.TYPE_CAT6, status=CableStatusChoices.STATUS_PLANNED, color='e91e63', length=20, length_unit=CableLengthUnitChoices.UNIT_METER).save()
         Cable(termination_a=interfaces[11], termination_b=interfaces[0], label='Cable 6', type=CableTypeChoices.TYPE_CAT6, status=CableStatusChoices.STATUS_PLANNED, color='e91e63', length=20, length_unit=CableLengthUnitChoices.UNIT_METER).save()
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_label(self):
     def test_label(self):
         params = {'label': ['Cable 1', 'Cable 2']}
         params = {'label': ['Cable 1', 'Cable 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -2886,7 +2763,7 @@ class CableTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
 
 
 
 
-class PowerPanelTestCase(TestCase):
+class PowerPanelTestCase(TestCase, BaseFilterSetTests):
     queryset = PowerPanel.objects.all()
     queryset = PowerPanel.objects.all()
     filterset = PowerPanelFilterSet
     filterset = PowerPanelFilterSet
 
 
@@ -2931,10 +2808,6 @@ class PowerPanelTestCase(TestCase):
         )
         )
         PowerPanel.objects.bulk_create(power_panels)
         PowerPanel.objects.bulk_create(power_panels)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Power Panel 1', 'Power Panel 2']}
         params = {'name': ['Power Panel 1', 'Power Panel 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -2966,7 +2839,7 @@ class PowerPanelTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class PowerFeedTestCase(TestCase):
+class PowerFeedTestCase(TestCase, BaseFilterSetTests):
     queryset = PowerFeed.objects.all()
     queryset = PowerFeed.objects.all()
     filterset = PowerFeedFilterSet
     filterset = PowerFeedFilterSet
 
 
@@ -3029,10 +2902,6 @@ class PowerFeedTestCase(TestCase):
         Cable(termination_a=power_feeds[0], termination_b=power_ports[0]).save()
         Cable(termination_a=power_feeds[0], termination_b=power_ports[0]).save()
         Cable(termination_a=power_feeds[1], termination_b=power_ports[1]).save()
         Cable(termination_a=power_feeds[1], termination_b=power_ports[1]).save()
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Power Feed 1', 'Power Feed 2']}
         params = {'name': ['Power Feed 1', 'Power Feed 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

+ 9 - 40
netbox/extras/tests/test_filtersets.py

@@ -10,10 +10,11 @@ from extras.filtersets import *
 from extras.models import *
 from extras.models import *
 from ipam.models import IPAddress
 from ipam.models import IPAddress
 from tenancy.models import Tenant, TenantGroup
 from tenancy.models import Tenant, TenantGroup
+from utilities.testing import BaseFilterSetTests
 from virtualization.models import Cluster, ClusterGroup, ClusterType
 from virtualization.models import Cluster, ClusterGroup, ClusterType
 
 
 
 
-class WebhookTestCase(TestCase):
+class WebhookTestCase(TestCase, BaseFilterSetTests):
     queryset = Webhook.objects.all()
     queryset = Webhook.objects.all()
     filterset = WebhookFilterSet
     filterset = WebhookFilterSet
 
 
@@ -52,10 +53,6 @@ class WebhookTestCase(TestCase):
         webhooks[1].content_types.add(content_types[1])
         webhooks[1].content_types.add(content_types[1])
         webhooks[2].content_types.add(content_types[2])
         webhooks[2].content_types.add(content_types[2])
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Webhook 1', 'Webhook 2']}
         params = {'name': ['Webhook 1', 'Webhook 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -89,7 +86,7 @@ class WebhookTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class CustomLinkTestCase(TestCase):
+class CustomLinkTestCase(TestCase, BaseFilterSetTests):
     queryset = CustomLink.objects.all()
     queryset = CustomLink.objects.all()
     filterset = CustomLinkFilterSet
     filterset = CustomLinkFilterSet
 
 
@@ -125,10 +122,6 @@ class CustomLinkTestCase(TestCase):
         )
         )
         CustomLink.objects.bulk_create(custom_links)
         CustomLink.objects.bulk_create(custom_links)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Custom Link 1', 'Custom Link 2']}
         params = {'name': ['Custom Link 1', 'Custom Link 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -148,7 +141,7 @@ class CustomLinkTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
 
 
 
 
-class ExportTemplateTestCase(TestCase):
+class ExportTemplateTestCase(TestCase, BaseFilterSetTests):
     queryset = ExportTemplate.objects.all()
     queryset = ExportTemplate.objects.all()
     filterset = ExportTemplateFilterSet
     filterset = ExportTemplateFilterSet
 
 
@@ -164,10 +157,6 @@ class ExportTemplateTestCase(TestCase):
         )
         )
         ExportTemplate.objects.bulk_create(export_templates)
         ExportTemplate.objects.bulk_create(export_templates)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Export Template 1', 'Export Template 2']}
         params = {'name': ['Export Template 1', 'Export Template 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -177,7 +166,7 @@ class ExportTemplateTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
 
 
 
 
-class ImageAttachmentTestCase(TestCase):
+class ImageAttachmentTestCase(TestCase, BaseFilterSetTests):
     queryset = ImageAttachment.objects.all()
     queryset = ImageAttachment.objects.all()
     filterset = ImageAttachmentFilterSet
     filterset = ImageAttachmentFilterSet
 
 
@@ -235,10 +224,6 @@ class ImageAttachmentTestCase(TestCase):
         )
         )
         ImageAttachment.objects.bulk_create(image_attachments)
         ImageAttachment.objects.bulk_create(image_attachments)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Image Attachment 1', 'Image Attachment 2']}
         params = {'name': ['Image Attachment 1', 'Image Attachment 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -255,7 +240,7 @@ class ImageAttachmentTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
 
 
 
 
-class JournalEntryTestCase(TestCase):
+class JournalEntryTestCase(TestCase, BaseFilterSetTests):
     queryset = JournalEntry.objects.all()
     queryset = JournalEntry.objects.all()
     filterset = JournalEntryFilterSet
     filterset = JournalEntryFilterSet
 
 
@@ -320,10 +305,6 @@ class JournalEntryTestCase(TestCase):
         )
         )
         JournalEntry.objects.bulk_create(journal_entries)
         JournalEntry.objects.bulk_create(journal_entries)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_created_by(self):
     def test_created_by(self):
         users = User.objects.filter(username__in=['Alice', 'Bob'])
         users = User.objects.filter(username__in=['Alice', 'Bob'])
         params = {'created_by': [users[0].username, users[1].username]}
         params = {'created_by': [users[0].username, users[1].username]}
@@ -349,7 +330,7 @@ class JournalEntryTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
 
 
 
 
-class ConfigContextTestCase(TestCase):
+class ConfigContextTestCase(TestCase, BaseFilterSetTests):
     queryset = ConfigContext.objects.all()
     queryset = ConfigContext.objects.all()
     filterset = ConfigContextFilterSet
     filterset = ConfigContextFilterSet
 
 
@@ -449,10 +430,6 @@ class ConfigContextTestCase(TestCase):
             c.tenant_groups.set([tenant_groups[i]])
             c.tenant_groups.set([tenant_groups[i]])
             c.tenants.set([tenants[i]])
             c.tenants.set([tenants[i]])
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Config Context 1', 'Config Context 2']}
         params = {'name': ['Config Context 1', 'Config Context 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -530,7 +507,7 @@ class ConfigContextTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class TagTestCase(TestCase):
+class TagTestCase(TestCase, BaseFilterSetTests):
     queryset = Tag.objects.all()
     queryset = Tag.objects.all()
     filterset = TagFilterSet
     filterset = TagFilterSet
 
 
@@ -544,10 +521,6 @@ class TagTestCase(TestCase):
         )
         )
         Tag.objects.bulk_create(tags)
         Tag.objects.bulk_create(tags)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Tag 1', 'Tag 2']}
         params = {'name': ['Tag 1', 'Tag 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -561,7 +534,7 @@ class TagTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class ObjectChangeTestCase(TestCase):
+class ObjectChangeTestCase(TestCase, BaseFilterSetTests):
     queryset = ObjectChange.objects.all()
     queryset = ObjectChange.objects.all()
     filterset = ObjectChangeFilterSet
     filterset = ObjectChangeFilterSet
 
 
@@ -635,10 +608,6 @@ class ObjectChangeTestCase(TestCase):
         )
         )
         ObjectChange.objects.bulk_create(object_changes)
         ObjectChange.objects.bulk_create(object_changes)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:3]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
-
     def test_user(self):
     def test_user(self):
         params = {'user_id': User.objects.filter(username__in=['user1', 'user2']).values_list('pk', flat=True)}
         params = {'user_id': User.objects.filter(username__in=['user1', 'user2']).values_list('pk', flat=True)}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)

+ 11 - 50
netbox/ipam/tests/test_filtersets.py

@@ -4,11 +4,12 @@ from dcim.models import Device, DeviceRole, DeviceType, Interface, Location, Man
 from ipam.choices import *
 from ipam.choices import *
 from ipam.filtersets import *
 from ipam.filtersets import *
 from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, RouteTarget, Service, VLAN, VLANGroup, VRF
 from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, RouteTarget, Service, VLAN, VLANGroup, VRF
+from utilities.testing import BaseFilterSetTests
 from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
 from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
 from tenancy.models import Tenant, TenantGroup
 from tenancy.models import Tenant, TenantGroup
 
 
 
 
-class VRFTestCase(TestCase):
+class VRFTestCase(TestCase, BaseFilterSetTests):
     queryset = VRF.objects.all()
     queryset = VRF.objects.all()
     filterset = VRFFilterSet
     filterset = VRFFilterSet
 
 
@@ -53,10 +54,6 @@ class VRFTestCase(TestCase):
         vrfs[2].import_targets.add(route_targets[2])
         vrfs[2].import_targets.add(route_targets[2])
         vrfs[2].export_targets.add(route_targets[2])
         vrfs[2].export_targets.add(route_targets[2])
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['VRF 1', 'VRF 2']}
         params = {'name': ['VRF 1', 'VRF 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -100,7 +97,7 @@ class VRFTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
 
 
 
 
-class RouteTargetTestCase(TestCase):
+class RouteTargetTestCase(TestCase, BaseFilterSetTests):
     queryset = RouteTarget.objects.all()
     queryset = RouteTarget.objects.all()
     filterset = RouteTargetFilterSet
     filterset = RouteTargetFilterSet
 
 
@@ -149,10 +146,6 @@ class RouteTargetTestCase(TestCase):
         vrfs[1].import_targets.add(route_targets[4], route_targets[5])
         vrfs[1].import_targets.add(route_targets[4], route_targets[5])
         vrfs[1].export_targets.add(route_targets[6], route_targets[7])
         vrfs[1].export_targets.add(route_targets[6], route_targets[7])
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['65000:1001', '65000:1002', '65000:1003']}
         params = {'name': ['65000:1001', '65000:1002', '65000:1003']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
@@ -186,7 +179,7 @@ class RouteTargetTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 8)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 8)
 
 
 
 
-class RIRTestCase(TestCase):
+class RIRTestCase(TestCase, BaseFilterSetTests):
     queryset = RIR.objects.all()
     queryset = RIR.objects.all()
     filterset = RIRFilterSet
     filterset = RIRFilterSet
 
 
@@ -203,10 +196,6 @@ class RIRTestCase(TestCase):
         )
         )
         RIR.objects.bulk_create(rirs)
         RIR.objects.bulk_create(rirs)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['RIR 1', 'RIR 2']}
         params = {'name': ['RIR 1', 'RIR 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -226,7 +215,7 @@ class RIRTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
 
 
 
 
-class AggregateTestCase(TestCase):
+class AggregateTestCase(TestCase, BaseFilterSetTests):
     queryset = Aggregate.objects.all()
     queryset = Aggregate.objects.all()
     filterset = AggregateFilterSet
     filterset = AggregateFilterSet
 
 
@@ -265,10 +254,6 @@ class AggregateTestCase(TestCase):
         )
         )
         Aggregate.objects.bulk_create(aggregates)
         Aggregate.objects.bulk_create(aggregates)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_family(self):
     def test_family(self):
         params = {'family': '4'}
         params = {'family': '4'}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
@@ -304,7 +289,7 @@ class AggregateTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
 
 
 
 
-class RoleTestCase(TestCase):
+class RoleTestCase(TestCase, BaseFilterSetTests):
     queryset = Role.objects.all()
     queryset = Role.objects.all()
     filterset = RoleFilterSet
     filterset = RoleFilterSet
 
 
@@ -318,10 +303,6 @@ class RoleTestCase(TestCase):
         )
         )
         Role.objects.bulk_create(roles)
         Role.objects.bulk_create(roles)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Role 1', 'Role 2']}
         params = {'name': ['Role 1', 'Role 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -331,7 +312,7 @@ class RoleTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class PrefixTestCase(TestCase):
+class PrefixTestCase(TestCase, BaseFilterSetTests):
     queryset = Prefix.objects.all()
     queryset = Prefix.objects.all()
     filterset = PrefixFilterSet
     filterset = PrefixFilterSet
 
 
@@ -421,10 +402,6 @@ class PrefixTestCase(TestCase):
         )
         )
         Prefix.objects.bulk_create(prefixes)
         Prefix.objects.bulk_create(prefixes)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_family(self):
     def test_family(self):
         params = {'family': '6'}
         params = {'family': '6'}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5)
@@ -528,7 +505,7 @@ class PrefixTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
 
 
 
 
-class IPAddressTestCase(TestCase):
+class IPAddressTestCase(TestCase, BaseFilterSetTests):
     queryset = IPAddress.objects.all()
     queryset = IPAddress.objects.all()
     filterset = IPAddressFilterSet
     filterset = IPAddressFilterSet
 
 
@@ -607,10 +584,6 @@ class IPAddressTestCase(TestCase):
         )
         )
         IPAddress.objects.bulk_create(ipaddresses)
         IPAddress.objects.bulk_create(ipaddresses)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_family(self):
     def test_family(self):
         params = {'family': '6'}
         params = {'family': '6'}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5)
@@ -708,7 +681,7 @@ class IPAddressTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
 
 
 
 
-class VLANGroupTestCase(TestCase):
+class VLANGroupTestCase(TestCase, BaseFilterSetTests):
     queryset = VLANGroup.objects.all()
     queryset = VLANGroup.objects.all()
     filterset = VLANGroupFilterSet
     filterset = VLANGroupFilterSet
 
 
@@ -751,10 +724,6 @@ class VLANGroupTestCase(TestCase):
         )
         )
         VLANGroup.objects.bulk_create(vlan_groups)
         VLANGroup.objects.bulk_create(vlan_groups)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['VLAN Group 1', 'VLAN Group 2']}
         params = {'name': ['VLAN Group 1', 'VLAN Group 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -796,7 +765,7 @@ class VLANGroupTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
 
 
 
 
-class VLANTestCase(TestCase):
+class VLANTestCase(TestCase, BaseFilterSetTests):
     queryset = VLAN.objects.all()
     queryset = VLAN.objects.all()
     filterset = VLANFilterSet
     filterset = VLANFilterSet
 
 
@@ -965,10 +934,6 @@ class VLANTestCase(TestCase):
         )
         )
         VLAN.objects.bulk_create(vlans)
         VLAN.objects.bulk_create(vlans)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['VLAN 101', 'VLAN 102']}
         params = {'name': ['VLAN 101', 'VLAN 102']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -1041,7 +1006,7 @@ class VLANTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6)  # 5 scoped + 1 global
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6)  # 5 scoped + 1 global
 
 
 
 
-class ServiceTestCase(TestCase):
+class ServiceTestCase(TestCase, BaseFilterSetTests):
     queryset = Service.objects.all()
     queryset = Service.objects.all()
     filterset = ServiceFilterSet
     filterset = ServiceFilterSet
 
 
@@ -1080,10 +1045,6 @@ class ServiceTestCase(TestCase):
         )
         )
         Service.objects.bulk_create(services)
         Service.objects.bulk_create(services)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:3]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Service 1', 'Service 2']}
         params = {'name': ['Service 1', 'Service 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

+ 3 - 10
netbox/secrets/tests/test_filtersets.py

@@ -3,10 +3,11 @@ from django.test import TestCase
 from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
 from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
 from secrets.filtersets import *
 from secrets.filtersets import *
 from secrets.models import Secret, SecretRole
 from secrets.models import Secret, SecretRole
+from utilities.testing import BaseFilterSetTests
 from virtualization.models import Cluster, ClusterType, VirtualMachine
 from virtualization.models import Cluster, ClusterType, VirtualMachine
 
 
 
 
-class SecretRoleTestCase(TestCase):
+class SecretRoleTestCase(TestCase, BaseFilterSetTests):
     queryset = SecretRole.objects.all()
     queryset = SecretRole.objects.all()
     filterset = SecretRoleFilterSet
     filterset = SecretRoleFilterSet
 
 
@@ -20,10 +21,6 @@ class SecretRoleTestCase(TestCase):
         )
         )
         SecretRole.objects.bulk_create(roles)
         SecretRole.objects.bulk_create(roles)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Secret Role 1', 'Secret Role 2']}
         params = {'name': ['Secret Role 1', 'Secret Role 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -33,7 +30,7 @@ class SecretRoleTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class SecretTestCase(TestCase):
+class SecretTestCase(TestCase, BaseFilterSetTests):
     queryset = Secret.objects.all()
     queryset = Secret.objects.all()
     filterset = SecretFilterSet
     filterset = SecretFilterSet
 
 
@@ -80,10 +77,6 @@ class SecretTestCase(TestCase):
         for s in secrets:
         for s in secrets:
             s.save()
             s.save()
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Secret 1', 'Secret 2']}
         params = {'name': ['Secret 1', 'Secret 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

+ 3 - 10
netbox/tenancy/tests/test_filtersets.py

@@ -2,9 +2,10 @@ from django.test import TestCase
 
 
 from tenancy.filtersets import *
 from tenancy.filtersets import *
 from tenancy.models import Tenant, TenantGroup
 from tenancy.models import Tenant, TenantGroup
+from utilities.testing import BaseFilterSetTests
 
 
 
 
-class TenantGroupTestCase(TestCase):
+class TenantGroupTestCase(TestCase, BaseFilterSetTests):
     queryset = TenantGroup.objects.all()
     queryset = TenantGroup.objects.all()
     filterset = TenantGroupFilterSet
     filterset = TenantGroupFilterSet
 
 
@@ -27,10 +28,6 @@ class TenantGroupTestCase(TestCase):
         for tenantgroup in tenant_groups:
         for tenantgroup in tenant_groups:
             tenantgroup.save()
             tenantgroup.save()
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Tenant Group 1', 'Tenant Group 2']}
         params = {'name': ['Tenant Group 1', 'Tenant Group 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -51,7 +48,7 @@ class TenantGroupTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class TenantTestCase(TestCase):
+class TenantTestCase(TestCase, BaseFilterSetTests):
     queryset = Tenant.objects.all()
     queryset = Tenant.objects.all()
     filterset = TenantFilterSet
     filterset = TenantFilterSet
 
 
@@ -73,10 +70,6 @@ class TenantTestCase(TestCase):
         )
         )
         Tenant.objects.bulk_create(tenants)
         Tenant.objects.bulk_create(tenants)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Tenant 1', 'Tenant 2']}
         params = {'name': ['Tenant 1', 'Tenant 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

+ 4 - 15
netbox/users/tests/test_filtersets.py

@@ -4,9 +4,10 @@ from django.test import TestCase
 
 
 from users.filtersets import GroupFilterSet, ObjectPermissionFilterSet, UserFilterSet
 from users.filtersets import GroupFilterSet, ObjectPermissionFilterSet, UserFilterSet
 from users.models import ObjectPermission
 from users.models import ObjectPermission
+from utilities.testing import BaseFilterSetTests
 
 
 
 
-class UserTestCase(TestCase):
+class UserTestCase(TestCase, BaseFilterSetTests):
     queryset = User.objects.all()
     queryset = User.objects.all()
     filterset = UserFilterSet
     filterset = UserFilterSet
 
 
@@ -59,10 +60,6 @@ class UserTestCase(TestCase):
         users[1].groups.set([groups[1]])
         users[1].groups.set([groups[1]])
         users[2].groups.set([groups[2]])
         users[2].groups.set([groups[2]])
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_username(self):
     def test_username(self):
         params = {'username': ['User1', 'User2']}
         params = {'username': ['User1', 'User2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -95,7 +92,7 @@ class UserTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class GroupTestCase(TestCase):
+class GroupTestCase(TestCase, BaseFilterSetTests):
     queryset = Group.objects.all()
     queryset = Group.objects.all()
     filterset = GroupFilterSet
     filterset = GroupFilterSet
 
 
@@ -109,16 +106,12 @@ class GroupTestCase(TestCase):
         )
         )
         Group.objects.bulk_create(groups)
         Group.objects.bulk_create(groups)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Group 1', 'Group 2']}
         params = {'name': ['Group 1', 'Group 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class ObjectPermissionTestCase(TestCase):
+class ObjectPermissionTestCase(TestCase, BaseFilterSetTests):
     queryset = ObjectPermission.objects.all()
     queryset = ObjectPermission.objects.all()
     filterset = ObjectPermissionFilterSet
     filterset = ObjectPermissionFilterSet
 
 
@@ -160,10 +153,6 @@ class ObjectPermissionTestCase(TestCase):
             permissions[i].users.set([users[i]])
             permissions[i].users.set([users[i]])
             permissions[i].object_types.set([object_types[i]])
             permissions[i].object_types.set([object_types[i]])
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Permission 1', 'Permission 2']}
         params = {'name': ['Permission 1', 'Permission 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

+ 1 - 0
netbox/utilities/testing/__init__.py

@@ -1,4 +1,5 @@
 from .api import *
 from .api import *
 from .base import *
 from .base import *
+from .filtersets import *
 from .utils import *
 from .utils import *
 from .views import *
 from .views import *

+ 16 - 0
netbox/utilities/testing/filtersets.py

@@ -0,0 +1,16 @@
+__all__ = (
+    'BaseFilterSetTests',
+)
+
+
+class BaseFilterSetTests:
+    queryset = None
+    filterset = None
+
+    def test_id(self):
+        """
+        Test filtering for two PKs from a set of >2 objects.
+        """
+        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
+        self.assertGreater(self.queryset.count(), 2)
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

+ 6 - 26
netbox/virtualization/tests/test_filtersets.py

@@ -3,12 +3,13 @@ from django.test import TestCase
 from dcim.models import DeviceRole, Platform, Region, Site, SiteGroup
 from dcim.models import DeviceRole, Platform, Region, Site, SiteGroup
 from ipam.models import IPAddress
 from ipam.models import IPAddress
 from tenancy.models import Tenant, TenantGroup
 from tenancy.models import Tenant, TenantGroup
+from utilities.testing import BaseFilterSetTests
 from virtualization.choices import *
 from virtualization.choices import *
 from virtualization.filtersets import *
 from virtualization.filtersets import *
 from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
 from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
 
 
 
 
-class ClusterTypeTestCase(TestCase):
+class ClusterTypeTestCase(TestCase, BaseFilterSetTests):
     queryset = ClusterType.objects.all()
     queryset = ClusterType.objects.all()
     filterset = ClusterTypeFilterSet
     filterset = ClusterTypeFilterSet
 
 
@@ -22,10 +23,6 @@ class ClusterTypeTestCase(TestCase):
         )
         )
         ClusterType.objects.bulk_create(cluster_types)
         ClusterType.objects.bulk_create(cluster_types)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Cluster Type 1', 'Cluster Type 2']}
         params = {'name': ['Cluster Type 1', 'Cluster Type 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -39,7 +36,7 @@ class ClusterTypeTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class ClusterGroupTestCase(TestCase):
+class ClusterGroupTestCase(TestCase, BaseFilterSetTests):
     queryset = ClusterGroup.objects.all()
     queryset = ClusterGroup.objects.all()
     filterset = ClusterGroupFilterSet
     filterset = ClusterGroupFilterSet
 
 
@@ -53,10 +50,6 @@ class ClusterGroupTestCase(TestCase):
         )
         )
         ClusterGroup.objects.bulk_create(cluster_groups)
         ClusterGroup.objects.bulk_create(cluster_groups)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Cluster Group 1', 'Cluster Group 2']}
         params = {'name': ['Cluster Group 1', 'Cluster Group 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -70,7 +63,7 @@ class ClusterGroupTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class ClusterTestCase(TestCase):
+class ClusterTestCase(TestCase, BaseFilterSetTests):
     queryset = Cluster.objects.all()
     queryset = Cluster.objects.all()
     filterset = ClusterFilterSet
     filterset = ClusterFilterSet
 
 
@@ -136,10 +129,6 @@ class ClusterTestCase(TestCase):
         )
         )
         Cluster.objects.bulk_create(clusters)
         Cluster.objects.bulk_create(clusters)
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Cluster 1', 'Cluster 2']}
         params = {'name': ['Cluster 1', 'Cluster 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -194,7 +183,7 @@ class ClusterTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class VirtualMachineTestCase(TestCase):
+class VirtualMachineTestCase(TestCase, BaseFilterSetTests):
     queryset = VirtualMachine.objects.all()
     queryset = VirtualMachine.objects.all()
     filterset = VirtualMachineFilterSet
     filterset = VirtualMachineFilterSet
 
 
@@ -297,10 +286,6 @@ class VirtualMachineTestCase(TestCase):
         VirtualMachine.objects.filter(pk=vms[0].pk).update(primary_ip4=ipaddresses[0])
         VirtualMachine.objects.filter(pk=vms[0].pk).update(primary_ip4=ipaddresses[0])
         VirtualMachine.objects.filter(pk=vms[1].pk).update(primary_ip4=ipaddresses[1])
         VirtualMachine.objects.filter(pk=vms[1].pk).update(primary_ip4=ipaddresses[1])
 
 
-    def test_id(self):
-        params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Virtual Machine 1', 'Virtual Machine 2']}
         params = {'name': ['Virtual Machine 1', 'Virtual Machine 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@@ -409,7 +394,7 @@ class VirtualMachineTestCase(TestCase):
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
 
 
-class VMInterfaceTestCase(TestCase):
+class VMInterfaceTestCase(TestCase, BaseFilterSetTests):
     queryset = VMInterface.objects.all()
     queryset = VMInterface.objects.all()
     filterset = VMInterfaceFilterSet
     filterset = VMInterfaceFilterSet
 
 
@@ -444,11 +429,6 @@ class VMInterfaceTestCase(TestCase):
         )
         )
         VMInterface.objects.bulk_create(interfaces)
         VMInterface.objects.bulk_create(interfaces)
 
 
-    def test_id(self):
-        id_list = self.queryset.values_list('id', flat=True)[:2]
-        params = {'id': [str(id) for id in id_list]}
-        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
-
     def test_name(self):
     def test_name(self):
         params = {'name': ['Interface 1', 'Interface 2']}
         params = {'name': ['Interface 1', 'Interface 2']}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)