|
|
@@ -792,8 +792,54 @@ class ModuleBayTestCase(TestCase):
|
|
|
)
|
|
|
device.consoleports.first()
|
|
|
|
|
|
- def test_nested_module_token(self):
|
|
|
- pass
|
|
|
+ @tag('regression') # #19918
|
|
|
+ def test_nested_module_bay_label_resolution(self):
|
|
|
+ """Test that nested module bay labels properly resolve {module} placeholders"""
|
|
|
+ manufacturer = Manufacturer.objects.first()
|
|
|
+ site = Site.objects.first()
|
|
|
+ device_role = DeviceRole.objects.first()
|
|
|
+
|
|
|
+ # Create device type with module bay template (position='A')
|
|
|
+ device_type = DeviceType.objects.create(
|
|
|
+ manufacturer=manufacturer,
|
|
|
+ model='Device with Bays',
|
|
|
+ slug='device-with-bays'
|
|
|
+ )
|
|
|
+ ModuleBayTemplate.objects.create(
|
|
|
+ device_type=device_type,
|
|
|
+ name='Bay A',
|
|
|
+ position='A'
|
|
|
+ )
|
|
|
+
|
|
|
+ # Create module type with nested bay template using {module} placeholder
|
|
|
+ module_type = ModuleType.objects.create(
|
|
|
+ manufacturer=manufacturer,
|
|
|
+ model='Module with Nested Bays'
|
|
|
+ )
|
|
|
+ ModuleBayTemplate.objects.create(
|
|
|
+ module_type=module_type,
|
|
|
+ name='SFP {module}-21',
|
|
|
+ label='{module}-21',
|
|
|
+ position='21'
|
|
|
+ )
|
|
|
+
|
|
|
+ # Create device and install module
|
|
|
+ device = Device.objects.create(
|
|
|
+ name='Test Device',
|
|
|
+ device_type=device_type,
|
|
|
+ role=device_role,
|
|
|
+ site=site
|
|
|
+ )
|
|
|
+ module_bay = device.modulebays.get(name='Bay A')
|
|
|
+ module = Module.objects.create(
|
|
|
+ device=device,
|
|
|
+ module_bay=module_bay,
|
|
|
+ module_type=module_type
|
|
|
+ )
|
|
|
+
|
|
|
+ # Verify nested bay label resolves {module} to parent position
|
|
|
+ nested_bay = module.modulebays.get(name='SFP A-21')
|
|
|
+ self.assertEqual(nested_bay.label, 'A-21')
|
|
|
|
|
|
|
|
|
class CableTestCase(TestCase):
|