test_forms.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. from django.test import TestCase
  2. from dcim.forms import *
  3. from dcim.models import *
  4. from virtualization.models import Cluster, ClusterGroup, ClusterType
  5. def get_id(model, slug):
  6. return model.objects.get(slug=slug).id
  7. class DeviceTestCase(TestCase):
  8. @classmethod
  9. def setUpTestData(cls):
  10. site = Site.objects.create(name='Site 1', slug='site-1')
  11. rack = Rack.objects.create(name='Rack 1', site=site)
  12. manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
  13. device_type = DeviceType.objects.create(
  14. manufacturer=manufacturer, model='Device Type 1', slug='device-type-1', u_height=1
  15. )
  16. device_role = DeviceRole.objects.create(
  17. name='Device Role 1', slug='device-role-1', color='ff0000'
  18. )
  19. Platform.objects.create(name='Platform 1', slug='platform-1')
  20. Device.objects.create(
  21. name='Device 1', device_type=device_type, device_role=device_role, site=site, rack=rack, position=1
  22. )
  23. cluster_type = ClusterType.objects.create(name='Cluster Type 1', slug='cluster-type-1')
  24. cluster_group = ClusterGroup.objects.create(name='Cluster Group 1', slug='cluster-group-1')
  25. Cluster.objects.create(name='Cluster 1', type=cluster_type, group=cluster_group)
  26. def test_racked_device(self):
  27. form = DeviceForm(data={
  28. 'name': 'New Device',
  29. 'device_role': DeviceRole.objects.first().pk,
  30. 'tenant': None,
  31. 'manufacturer': Manufacturer.objects.first().pk,
  32. 'device_type': DeviceType.objects.first().pk,
  33. 'site': Site.objects.first().pk,
  34. 'rack': Rack.objects.first().pk,
  35. 'face': DeviceFaceChoices.FACE_FRONT,
  36. 'position': 2,
  37. 'platform': Platform.objects.first().pk,
  38. 'status': DeviceStatusChoices.STATUS_ACTIVE,
  39. })
  40. self.assertTrue(form.is_valid())
  41. self.assertTrue(form.save())
  42. def test_racked_device_occupied(self):
  43. form = DeviceForm(data={
  44. 'name': 'test',
  45. 'device_role': DeviceRole.objects.first().pk,
  46. 'tenant': None,
  47. 'manufacturer': Manufacturer.objects.first().pk,
  48. 'device_type': DeviceType.objects.first().pk,
  49. 'site': Site.objects.first().pk,
  50. 'rack': Rack.objects.first().pk,
  51. 'face': DeviceFaceChoices.FACE_FRONT,
  52. 'position': 1,
  53. 'platform': Platform.objects.first().pk,
  54. 'status': DeviceStatusChoices.STATUS_ACTIVE,
  55. })
  56. self.assertFalse(form.is_valid())
  57. self.assertIn('position', form.errors)
  58. def test_non_racked_device(self):
  59. form = DeviceForm(data={
  60. 'name': 'New Device',
  61. 'device_role': DeviceRole.objects.first().pk,
  62. 'tenant': None,
  63. 'manufacturer': Manufacturer.objects.first().pk,
  64. 'device_type': DeviceType.objects.first().pk,
  65. 'site': Site.objects.first().pk,
  66. 'rack': None,
  67. 'face': None,
  68. 'position': None,
  69. 'platform': Platform.objects.first().pk,
  70. 'status': DeviceStatusChoices.STATUS_ACTIVE,
  71. })
  72. self.assertTrue(form.is_valid())
  73. self.assertTrue(form.save())
  74. def test_non_racked_device_with_face_position(self):
  75. form = DeviceForm(data={
  76. 'name': 'New Device',
  77. 'device_role': DeviceRole.objects.first().pk,
  78. 'tenant': None,
  79. 'manufacturer': Manufacturer.objects.first().pk,
  80. 'device_type': DeviceType.objects.first().pk,
  81. 'site': Site.objects.first().pk,
  82. 'rack': None,
  83. 'face': DeviceFaceChoices.FACE_REAR,
  84. 'position': 10,
  85. 'platform': None,
  86. 'status': DeviceStatusChoices.STATUS_ACTIVE,
  87. })
  88. self.assertFalse(form.is_valid())
  89. self.assertIn('face', form.errors)
  90. self.assertIn('position', form.errors)
  91. def test_initial_data_population(self):
  92. device_type = DeviceType.objects.first()
  93. cluster = Cluster.objects.first()
  94. test = DeviceForm(initial={
  95. 'device_type': device_type.pk,
  96. 'device_role': DeviceRole.objects.first().pk,
  97. 'status': DeviceStatusChoices.STATUS_ACTIVE,
  98. 'site': Site.objects.first().pk,
  99. 'cluster': cluster.pk,
  100. })
  101. # Check that the initial value for the manufacturer is set automatically when assigning the device type
  102. self.assertEqual(test.initial['manufacturer'], device_type.manufacturer.pk)
  103. # Check that the initial value for the cluster group is set automatically when assigning the cluster
  104. self.assertEqual(test.initial['cluster_group'], cluster.group.pk)