sort_service_test.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. from fig.project import sort_service_dicts, DependencyError
  2. from . import unittest
  3. class SortServiceTest(unittest.TestCase):
  4. def test_sort_service_dicts_1(self):
  5. services = [
  6. {
  7. 'links': ['redis'],
  8. 'name': 'web'
  9. },
  10. {
  11. 'name': 'grunt'
  12. },
  13. {
  14. 'name': 'redis'
  15. }
  16. ]
  17. sorted_services = sort_service_dicts(services)
  18. self.assertEqual(len(sorted_services), 3)
  19. self.assertEqual(sorted_services[0]['name'], 'grunt')
  20. self.assertEqual(sorted_services[1]['name'], 'redis')
  21. self.assertEqual(sorted_services[2]['name'], 'web')
  22. def test_sort_service_dicts_2(self):
  23. services = [
  24. {
  25. 'links': ['redis', 'postgres'],
  26. 'name': 'web'
  27. },
  28. {
  29. 'name': 'postgres',
  30. 'links': ['redis']
  31. },
  32. {
  33. 'name': 'redis'
  34. }
  35. ]
  36. sorted_services = sort_service_dicts(services)
  37. self.assertEqual(len(sorted_services), 3)
  38. self.assertEqual(sorted_services[0]['name'], 'redis')
  39. self.assertEqual(sorted_services[1]['name'], 'postgres')
  40. self.assertEqual(sorted_services[2]['name'], 'web')
  41. def test_sort_service_dicts_circular_imports(self):
  42. services = [
  43. {
  44. 'links': ['redis'],
  45. 'name': 'web'
  46. },
  47. {
  48. 'name': 'redis',
  49. 'links': ['web']
  50. },
  51. ]
  52. try:
  53. sort_service_dicts(services)
  54. except DependencyError as e:
  55. self.assertIn('redis', e.msg)
  56. self.assertIn('web', e.msg)
  57. else:
  58. self.fail('Should have thrown an DependencyError')
  59. def test_sort_service_dicts_circular_imports_2(self):
  60. services = [
  61. {
  62. 'links': ['postgres', 'redis'],
  63. 'name': 'web'
  64. },
  65. {
  66. 'name': 'redis',
  67. 'links': ['web']
  68. },
  69. {
  70. 'name': 'postgres'
  71. }
  72. ]
  73. try:
  74. sort_service_dicts(services)
  75. except DependencyError as e:
  76. self.assertIn('redis', e.msg)
  77. self.assertIn('web', e.msg)
  78. else:
  79. self.fail('Should have thrown an DependencyError')
  80. def test_sort_service_dicts_self_imports(self):
  81. services = [
  82. {
  83. 'links': ['web'],
  84. 'name': 'web'
  85. },
  86. ]
  87. try:
  88. sort_service_dicts(services)
  89. except DependencyError as e:
  90. self.assertIn('web', e.msg)
  91. else:
  92. self.fail('Should have thrown an DependencyError')