Skip to content

Commit 8522c03

Browse files
committed
20738 add tests
1 parent 20af97c commit 8522c03

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed

netbox/dcim/tests/test_models.py

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1031,3 +1031,92 @@ def test_vdc_duplicate_identifier(self):
10311031
vdc2 = VirtualDeviceContext(device=device, name="VDC 2", identifier=1, status='active')
10321032
with self.assertRaises(ValidationError):
10331033
vdc2.full_clean()
1034+
1035+
1036+
class VirtualChassisTestCase(TestCase):
1037+
1038+
@classmethod
1039+
def setUpTestData(cls):
1040+
site = Site.objects.create(name='Test Site 1', slug='test-site-1')
1041+
manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
1042+
devicetype = DeviceType.objects.create(
1043+
manufacturer=manufacturer, model='Test Device Type 1', slug='test-device-type-1'
1044+
)
1045+
role = DeviceRole.objects.create(
1046+
name='Test Device Role 1', slug='test-device-role-1', color='ff0000'
1047+
)
1048+
Device.objects.create(
1049+
device_type=devicetype, role=role, name='TestDevice1', site=site
1050+
)
1051+
Device.objects.create(
1052+
device_type=devicetype, role=role, name='TestDevice2', site=site
1053+
)
1054+
1055+
def test_virtualchassis_deletion_clears_vc_position(self):
1056+
"""
1057+
Test that when a VirtualChassis is deleted, member devices have their
1058+
vc_position and vc_priority fields set to None.
1059+
"""
1060+
devices = Device.objects.all()
1061+
device1 = devices[0]
1062+
device2 = devices[1]
1063+
1064+
# Create a VirtualChassis with two member devices
1065+
vc = VirtualChassis.objects.create(name='Test VC', master=device1)
1066+
1067+
device1.virtual_chassis = vc
1068+
device1.vc_position = 1
1069+
device1.vc_priority = 10
1070+
device1.save()
1071+
1072+
device2.virtual_chassis = vc
1073+
device2.vc_position = 2
1074+
device2.vc_priority = 20
1075+
device2.save()
1076+
1077+
# Verify devices are members of the VC with positions set
1078+
device1.refresh_from_db()
1079+
device2.refresh_from_db()
1080+
self.assertEqual(device1.virtual_chassis, vc)
1081+
self.assertEqual(device1.vc_position, 1)
1082+
self.assertEqual(device1.vc_priority, 10)
1083+
self.assertEqual(device2.virtual_chassis, vc)
1084+
self.assertEqual(device2.vc_position, 2)
1085+
self.assertEqual(device2.vc_priority, 20)
1086+
1087+
# Delete the VirtualChassis
1088+
vc.delete()
1089+
1090+
# Verify devices have vc_position and vc_priority set to None
1091+
device1.refresh_from_db()
1092+
device2.refresh_from_db()
1093+
self.assertIsNone(device1.virtual_chassis)
1094+
self.assertIsNone(device1.vc_position)
1095+
self.assertIsNone(device1.vc_priority)
1096+
self.assertIsNone(device2.virtual_chassis)
1097+
self.assertIsNone(device2.vc_position)
1098+
self.assertIsNone(device2.vc_priority)
1099+
1100+
def test_virtualchassis_duplicate_vc_position(self):
1101+
"""
1102+
Test that two devices cannot be assigned to the same vc_position
1103+
within the same VirtualChassis.
1104+
"""
1105+
devices = Device.objects.all()
1106+
device1 = devices[0]
1107+
device2 = devices[1]
1108+
1109+
# Create a VirtualChassis
1110+
vc = VirtualChassis.objects.create(name='Test VC')
1111+
1112+
# Assign first device to vc_position 1
1113+
device1.virtual_chassis = vc
1114+
device1.vc_position = 1
1115+
device1.full_clean()
1116+
device1.save()
1117+
1118+
# Try to assign second device to the same vc_position
1119+
device2.virtual_chassis = vc
1120+
device2.vc_position = 1
1121+
with self.assertRaises(ValidationError):
1122+
device2.full_clean()

0 commit comments

Comments
 (0)