test_models.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. from django.test import TestCase
  2. from dcim.models import *
  3. class RackTestCase(TestCase):
  4. def setUp(self):
  5. self.site = Site.objects.create(
  6. name='TestSite1',
  7. slug='my-test-site'
  8. )
  9. self.rack = Rack.objects.create(
  10. name='TestRack1',
  11. facility_id='A101',
  12. site=self.site,
  13. u_height=42
  14. )
  15. self.manufacturer = Manufacturer.objects.create(
  16. name='Acme',
  17. slug='acme'
  18. )
  19. self.device_type = {
  20. 'ff2048': DeviceType.objects.create(
  21. manufacturer=self.manufacturer,
  22. model='FrameForwarder 2048',
  23. slug='ff2048'
  24. ),
  25. 'cc5000': DeviceType.objects.create(
  26. manufacturer=self.manufacturer,
  27. model='CurrentCatapult 5000',
  28. slug='cc5000',
  29. u_height=0
  30. ),
  31. }
  32. self.role = {
  33. 'Server': DeviceRole.objects.create(
  34. name='Server',
  35. slug='server',
  36. ),
  37. 'Switch': DeviceRole.objects.create(
  38. name='Switch',
  39. slug='switch',
  40. ),
  41. 'Console Server': DeviceRole.objects.create(
  42. name='Console Server',
  43. slug='console-server',
  44. ),
  45. 'PDU': DeviceRole.objects.create(
  46. name='PDU',
  47. slug='pdu',
  48. ),
  49. }
  50. def test_mount_single_device(self):
  51. device1 = Device(
  52. name='TestSwitch1',
  53. device_type=DeviceType.objects.get(manufacturer__slug='acme', slug='ff2048'),
  54. device_role=DeviceRole.objects.get(slug='switch'),
  55. site=self.site,
  56. rack=self.rack,
  57. position=10,
  58. face=RACK_FACE_REAR,
  59. )
  60. device1.save()
  61. # Validate rack height
  62. self.assertEqual(list(self.rack.units), list(reversed(range(1, 43))))
  63. # Validate inventory (front face)
  64. rack1_inventory_front = self.rack.get_front_elevation()
  65. self.assertEqual(rack1_inventory_front[-10]['device'], device1)
  66. del(rack1_inventory_front[-10])
  67. for u in rack1_inventory_front:
  68. self.assertIsNone(u['device'])
  69. # Validate inventory (rear face)
  70. rack1_inventory_rear = self.rack.get_rear_elevation()
  71. self.assertEqual(rack1_inventory_rear[-10]['device'], device1)
  72. del(rack1_inventory_rear[-10])
  73. for u in rack1_inventory_rear:
  74. self.assertIsNone(u['device'])
  75. def test_mount_zero_ru(self):
  76. pdu = Device.objects.create(
  77. name='TestPDU',
  78. device_role=self.role.get('PDU'),
  79. device_type=self.device_type.get('cc5000'),
  80. site=self.site,
  81. rack=self.rack,
  82. position=None,
  83. face=None,
  84. )
  85. self.assertTrue(pdu)