test_models.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. from django.test import TestCase
  2. from dcim.models import *
  3. class RackTestCase(TestCase):
  4. def setUp(self):
  5. 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=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. rack1 = Rack.objects.get(name='TestRack1')
  52. device1 = Device(
  53. name='TestSwitch1',
  54. device_type=DeviceType.objects.get(manufacturer__slug='acme', slug='ff2048'),
  55. device_role=DeviceRole.objects.get(slug='switch'),
  56. rack=rack1,
  57. position=10,
  58. face=RACK_FACE_REAR,
  59. )
  60. device1.save()
  61. # Validate rack height
  62. self.assertEqual(list(rack1.units), list(reversed(range(1, 43))))
  63. # Validate inventory (front face)
  64. rack1_inventory_front = rack1.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 = rack1.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. rack=self.rack,
  81. position=None,
  82. face=None,
  83. )
  84. self.assertTrue(pdu)