Răsfoiți Sursa

Add tests for device type component views

Jeremy Stretch 6 ani în urmă
părinte
comite
5620fdc63e
2 a modificat fișierele cu 373 adăugiri și 2 ștergeri
  1. 7 2
      netbox/dcim/forms.py
  2. 366 0
      netbox/dcim/tests/test_views.py

+ 7 - 2
netbox/dcim/forms.py

@@ -1174,8 +1174,11 @@ class PowerOutletTemplateCreateForm(BootstrapMixin, forms.Form):
         super().__init__(*args, **kwargs)
         super().__init__(*args, **kwargs)
 
 
         # Limit power_port choices to current DeviceType
         # Limit power_port choices to current DeviceType
+        device_type = DeviceType.objects.get(
+            pk=self.initial.get('device_type') or self.data.get('device_type')
+        )
         self.fields['power_port'].queryset = PowerPortTemplate.objects.filter(
         self.fields['power_port'].queryset = PowerPortTemplate.objects.filter(
-            device_type=self.initial.get('device_type')
+            device_type=device_type
         )
         )
 
 
 
 
@@ -1278,7 +1281,9 @@ class FrontPortTemplateCreateForm(BootstrapMixin, forms.Form):
     def __init__(self, *args, **kwargs):
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
         super().__init__(*args, **kwargs)
 
 
-        device_type = DeviceType.objects.filter(pk=self.initial.get('device_type')).first()
+        device_type = DeviceType.objects.get(
+            pk=self.initial.get('device_type') or self.data.get('device_type')
+        )
 
 
         # Determine which rear port positions are occupied. These will be excluded from the list of available mappings.
         # Determine which rear port positions are occupied. These will be excluded from the list of available mappings.
         occupied_port_positions = [
         occupied_port_positions = [

+ 366 - 0
netbox/dcim/tests/test_views.py

@@ -524,6 +524,372 @@ device-bays:
         self.assertEqual(data[0]['model'], 'Device Type 1')
         self.assertEqual(data[0]['model'], 'Device Type 1')
 
 
 
 
+#
+# DeviceType components
+#
+
+class ConsolePortTemplateTestCase(StandardTestCases.Views):
+    model = ConsolePortTemplate
+
+    # Disable inapplicable views
+    test_get_object = None
+    test_list_objects = None
+    test_create_object = None
+    test_delete_object = None
+    test_import_objects = None
+    test_bulk_edit_objects = None
+
+    def test_bulk_create_objects(self):
+        return self._test_bulk_create_objects(expected_count=3)
+
+    @classmethod
+    def setUpTestData(cls):
+        manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
+        devicetypes = (
+            DeviceType(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1'),
+            DeviceType(manufacturer=manufacturer, model='Device Type 2', slug='device-type-2'),
+        )
+        DeviceType.objects.bulk_create(devicetypes)
+
+        ConsolePortTemplate.objects.bulk_create((
+            ConsolePortTemplate(device_type=devicetypes[0], name='Console Port Template 1'),
+            ConsolePortTemplate(device_type=devicetypes[0], name='Console Port Template 2'),
+            ConsolePortTemplate(device_type=devicetypes[0], name='Console Port Template 3'),
+        ))
+
+        cls.form_data = {
+            'device_type': devicetypes[1].pk,
+            'name': 'Console Port Template X',
+            'type': ConsolePortTypeChoices.TYPE_RJ45,
+        }
+
+        cls.bulk_create_data = {
+            'device_type': devicetypes[1].pk,
+            'name_pattern': 'Console Port Template [4-6]',
+            'type': ConsolePortTypeChoices.TYPE_RJ45,
+        }
+
+
+class ConsoleServerPortTemplateTestCase(StandardTestCases.Views):
+    model = ConsoleServerPortTemplate
+
+    # Disable inapplicable views
+    test_get_object = None
+    test_list_objects = None
+    test_create_object = None
+    test_delete_object = None
+    test_import_objects = None
+    test_bulk_edit_objects = None
+
+    def test_bulk_create_objects(self):
+        return self._test_bulk_create_objects(expected_count=3)
+
+    @classmethod
+    def setUpTestData(cls):
+        manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
+        devicetypes = (
+            DeviceType(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1'),
+            DeviceType(manufacturer=manufacturer, model='Device Type 2', slug='device-type-2'),
+        )
+        DeviceType.objects.bulk_create(devicetypes)
+
+        ConsoleServerPortTemplate.objects.bulk_create((
+            ConsoleServerPortTemplate(device_type=devicetypes[0], name='Console Server Port Template 1'),
+            ConsoleServerPortTemplate(device_type=devicetypes[0], name='Console Server Port Template 2'),
+            ConsoleServerPortTemplate(device_type=devicetypes[0], name='Console Server Port Template 3'),
+        ))
+
+        cls.form_data = {
+            'device_type': devicetypes[1].pk,
+            'name': 'Console Server Port Template X',
+            'type': ConsolePortTypeChoices.TYPE_RJ45,
+        }
+
+        cls.bulk_create_data = {
+            'device_type': devicetypes[1].pk,
+            'name_pattern': 'Console Server Port Template [4-6]',
+            'type': ConsolePortTypeChoices.TYPE_RJ45,
+        }
+
+
+class PowerPortTemplateTestCase(StandardTestCases.Views):
+    model = PowerPortTemplate
+
+    # Disable inapplicable views
+    test_get_object = None
+    test_list_objects = None
+    test_create_object = None
+    test_delete_object = None
+    test_import_objects = None
+    test_bulk_edit_objects = None
+
+    def test_bulk_create_objects(self):
+        return self._test_bulk_create_objects(expected_count=3)
+
+    @classmethod
+    def setUpTestData(cls):
+        manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
+        devicetypes = (
+            DeviceType(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1'),
+            DeviceType(manufacturer=manufacturer, model='Device Type 2', slug='device-type-2'),
+        )
+        DeviceType.objects.bulk_create(devicetypes)
+
+        PowerPortTemplate.objects.bulk_create((
+            PowerPortTemplate(device_type=devicetypes[0], name='Power Port Template 1'),
+            PowerPortTemplate(device_type=devicetypes[0], name='Power Port Template 2'),
+            PowerPortTemplate(device_type=devicetypes[0], name='Power Port Template 3'),
+        ))
+
+        cls.form_data = {
+            'device_type': devicetypes[1].pk,
+            'name': 'Power Port Template X',
+            'type': PowerPortTypeChoices.TYPE_IEC_C14,
+            'maxiumum_draw': 100,
+            'allocated_draw': 50,
+        }
+
+        cls.bulk_create_data = {
+            'device_type': devicetypes[1].pk,
+            'name_pattern': 'Power Port Template [4-6]',
+            'type': PowerPortTypeChoices.TYPE_IEC_C14,
+            'maxiumum_draw': 100,
+            'allocated_draw': 50,
+        }
+
+
+class PowerOutletTemplateTestCase(StandardTestCases.Views):
+    model = PowerOutletTemplate
+
+    # Disable inapplicable views
+    test_get_object = None
+    test_list_objects = None
+    test_create_object = None
+    test_delete_object = None
+    test_import_objects = None
+    test_bulk_edit_objects = None
+
+    def test_bulk_create_objects(self):
+        return self._test_bulk_create_objects(expected_count=3)
+
+    @classmethod
+    def setUpTestData(cls):
+        manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
+        devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
+
+        PowerOutletTemplate.objects.bulk_create((
+            PowerOutletTemplate(device_type=devicetype, name='Power Outlet Template 1'),
+            PowerOutletTemplate(device_type=devicetype, name='Power Outlet Template 2'),
+            PowerOutletTemplate(device_type=devicetype, name='Power Outlet Template 3'),
+        ))
+
+        powerports = (
+            PowerPortTemplate(device_type=devicetype, name='Power Port Template 1'),
+        )
+        PowerPortTemplate.objects.bulk_create(powerports)
+
+        cls.form_data = {
+            'device_type': devicetype.pk,
+            'name': 'Power Outlet Template X',
+            'type': PowerOutletTypeChoices.TYPE_IEC_C13,
+            'power_port': powerports[0].pk,
+            'feed_leg': PowerOutletFeedLegChoices.FEED_LEG_B,
+        }
+
+        cls.bulk_create_data = {
+            'device_type': devicetype.pk,
+            'name_pattern': 'Power Outlet Template [4-6]',
+            'type': PowerOutletTypeChoices.TYPE_IEC_C13,
+            'power_port': powerports[0].pk,
+            'feed_leg': PowerOutletFeedLegChoices.FEED_LEG_B,
+        }
+
+
+class InterfaceTemplateTestCase(StandardTestCases.Views):
+    model = InterfaceTemplate
+
+    # Disable inapplicable views
+    test_get_object = None
+    test_list_objects = None
+    test_create_object = None
+    test_delete_object = None
+    test_import_objects = None
+
+    def test_bulk_create_objects(self):
+        return self._test_bulk_create_objects(expected_count=3)
+
+    @classmethod
+    def setUpTestData(cls):
+        manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
+        devicetypes = (
+            DeviceType(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1'),
+            DeviceType(manufacturer=manufacturer, model='Device Type 2', slug='device-type-2'),
+        )
+        DeviceType.objects.bulk_create(devicetypes)
+
+        InterfaceTemplate.objects.bulk_create((
+            InterfaceTemplate(device_type=devicetypes[0], name='Interface Template 1'),
+            InterfaceTemplate(device_type=devicetypes[0], name='Interface Template 2'),
+            InterfaceTemplate(device_type=devicetypes[0], name='Interface Template 3'),
+        ))
+
+        cls.form_data = {
+            'device_type': devicetypes[1].pk,
+            'name': 'Interface Template X',
+            'type': InterfaceTypeChoices.TYPE_1GE_GBIC,
+            'mgmt_only': True,
+        }
+
+        cls.bulk_create_data = {
+            'device_type': devicetypes[1].pk,
+            'name_pattern': 'Interface Template [4-6]',
+            'type': InterfaceTypeChoices.TYPE_1GE_GBIC,
+            'mgmt_only': True,
+        }
+
+        cls.bulk_edit_data = {
+            'type': InterfaceTypeChoices.TYPE_1GE_GBIC,
+            'mgmt_only': True,
+        }
+
+
+class FrontPortTemplateTestCase(StandardTestCases.Views):
+    model = FrontPortTemplate
+
+    # Disable inapplicable views
+    test_get_object = None
+    test_list_objects = None
+    test_create_object = None
+    test_delete_object = None
+    test_import_objects = None
+    test_bulk_edit_objects = None
+
+    def test_bulk_create_objects(self):
+        return self._test_bulk_create_objects(expected_count=3)
+
+    @classmethod
+    def setUpTestData(cls):
+        manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
+        devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
+
+        rearports = (
+            RearPortTemplate(device_type=devicetype, name='Rear Port Template 1'),
+            RearPortTemplate(device_type=devicetype, name='Rear Port Template 2'),
+            RearPortTemplate(device_type=devicetype, name='Rear Port Template 3'),
+            RearPortTemplate(device_type=devicetype, name='Rear Port Template 4'),
+            RearPortTemplate(device_type=devicetype, name='Rear Port Template 5'),
+            RearPortTemplate(device_type=devicetype, name='Rear Port Template 6'),
+        )
+        RearPortTemplate.objects.bulk_create(rearports)
+
+        FrontPortTemplate.objects.bulk_create((
+            FrontPortTemplate(device_type=devicetype, name='Front Port Template 1', rear_port=rearports[0], rear_port_position=1),
+            FrontPortTemplate(device_type=devicetype, name='Front Port Template 2', rear_port=rearports[1], rear_port_position=1),
+            FrontPortTemplate(device_type=devicetype, name='Front Port Template 3', rear_port=rearports[2], rear_port_position=1),
+        ))
+
+        cls.form_data = {
+            'device_type': devicetype.pk,
+            'name': 'Front Port X',
+            'type': PortTypeChoices.TYPE_8P8C,
+            'rear_port': rearports[3].pk,
+            'rear_port_position': 1,
+        }
+
+        cls.bulk_create_data = {
+            'device_type': devicetype.pk,
+            'name_pattern': 'Front Port [4-6]',
+            'type': PortTypeChoices.TYPE_8P8C,
+            'rear_port_set': [
+                '{}:1'.format(rp.pk) for rp in rearports[3:6]
+            ],
+        }
+
+
+class RearPortTemplateTestCase(StandardTestCases.Views):
+    model = RearPortTemplate
+
+    # Disable inapplicable views
+    test_get_object = None
+    test_list_objects = None
+    test_create_object = None
+    test_delete_object = None
+    test_import_objects = None
+    test_bulk_edit_objects = None
+
+    def test_bulk_create_objects(self):
+        return self._test_bulk_create_objects(expected_count=3)
+
+    @classmethod
+    def setUpTestData(cls):
+        manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
+        devicetypes = (
+            DeviceType(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1'),
+            DeviceType(manufacturer=manufacturer, model='Device Type 2', slug='device-type-2'),
+        )
+        DeviceType.objects.bulk_create(devicetypes)
+
+        RearPortTemplate.objects.bulk_create((
+            RearPortTemplate(device_type=devicetypes[0], name='Rear Port Template 1'),
+            RearPortTemplate(device_type=devicetypes[0], name='Rear Port Template 2'),
+            RearPortTemplate(device_type=devicetypes[0], name='Rear Port Template 3'),
+        ))
+
+        cls.form_data = {
+            'device_type': devicetypes[1].pk,
+            'name': 'Rear Port Template X',
+            'type': PortTypeChoices.TYPE_8P8C,
+            'positions': 2,
+        }
+
+        cls.bulk_create_data = {
+            'device_type': devicetypes[1].pk,
+            'name_pattern': 'Rear Port Template [4-6]',
+            'type': PortTypeChoices.TYPE_8P8C,
+            'positions': 2,
+        }
+
+
+class DeviceBayTemplateTestCase(StandardTestCases.Views):
+    model = DeviceBayTemplate
+
+    # Disable inapplicable views
+    test_get_object = None
+    test_list_objects = None
+    test_create_object = None
+    test_delete_object = None
+    test_import_objects = None
+    test_bulk_edit_objects = None
+
+    def test_bulk_create_objects(self):
+        return self._test_bulk_create_objects(expected_count=3)
+
+    @classmethod
+    def setUpTestData(cls):
+        manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
+        devicetypes = (
+            DeviceType(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1'),
+            DeviceType(manufacturer=manufacturer, model='Device Type 2', slug='device-type-2'),
+        )
+        DeviceType.objects.bulk_create(devicetypes)
+
+        DeviceBayTemplate.objects.bulk_create((
+            DeviceBayTemplate(device_type=devicetypes[0], name='Device Bay Template 1'),
+            DeviceBayTemplate(device_type=devicetypes[0], name='Device Bay Template 2'),
+            DeviceBayTemplate(device_type=devicetypes[0], name='Device Bay Template 3'),
+        ))
+
+        cls.form_data = {
+            'device_type': devicetypes[1].pk,
+            'name': 'Device Bay Template X',
+        }
+
+        cls.bulk_create_data = {
+            'device_type': devicetypes[1].pk,
+            'name_pattern': 'Device Bay Template [4-6]',
+        }
+
+
 class DeviceRoleTestCase(StandardTestCases.Views):
 class DeviceRoleTestCase(StandardTestCases.Views):
     model = DeviceRole
     model = DeviceRole