project_test.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from __future__ import unicode_literals
  2. from .. import unittest
  3. from fig.service import Service
  4. from fig.project import Project, ConfigurationError
  5. class ProjectTest(unittest.TestCase):
  6. def test_from_dict(self):
  7. project = Project.from_dicts('figtest', [
  8. {
  9. 'name': 'web',
  10. 'image': 'busybox:latest'
  11. },
  12. {
  13. 'name': 'db',
  14. 'image': 'busybox:latest'
  15. },
  16. ], None)
  17. self.assertEqual(len(project.services), 2)
  18. self.assertEqual(project.get_service('web').name, 'web')
  19. self.assertEqual(project.get_service('web').options['image'], 'busybox:latest')
  20. self.assertEqual(project.get_service('db').name, 'db')
  21. self.assertEqual(project.get_service('db').options['image'], 'busybox:latest')
  22. def test_from_dict_sorts_in_dependency_order(self):
  23. project = Project.from_dicts('figtest', [
  24. {
  25. 'name': 'web',
  26. 'image': 'busybox:latest',
  27. 'links': ['db'],
  28. },
  29. {
  30. 'name': 'db',
  31. 'image': 'busybox:latest'
  32. }
  33. ], None)
  34. self.assertEqual(project.services[0].name, 'db')
  35. self.assertEqual(project.services[1].name, 'web')
  36. def test_from_config(self):
  37. project = Project.from_config('figtest', {
  38. 'web': {
  39. 'image': 'busybox:latest',
  40. },
  41. 'db': {
  42. 'image': 'busybox:latest',
  43. },
  44. }, None)
  45. self.assertEqual(len(project.services), 2)
  46. self.assertEqual(project.get_service('web').name, 'web')
  47. self.assertEqual(project.get_service('web').options['image'], 'busybox:latest')
  48. self.assertEqual(project.get_service('db').name, 'db')
  49. self.assertEqual(project.get_service('db').options['image'], 'busybox:latest')
  50. def test_from_config_throws_error_when_not_dict(self):
  51. with self.assertRaises(ConfigurationError):
  52. project = Project.from_config('figtest', {
  53. 'web': 'busybox:latest',
  54. }, None)
  55. def test_get_service(self):
  56. web = Service(
  57. project='figtest',
  58. name='web',
  59. client=None,
  60. image="busybox:latest",
  61. )
  62. project = Project('test', [web], None)
  63. self.assertEqual(project.get_service('web'), web)