from __future__ import unicode_literals from .. import unittest from fig.service import Service from fig.project import Project, ConfigurationError class ProjectTest(unittest.TestCase): def test_from_dict(self): project = Project.from_dicts('figtest', [ { 'name': 'web', 'image': 'busybox:latest' }, { 'name': 'db', 'image': 'busybox:latest' }, ], None) self.assertEqual(len(project.services), 2) self.assertEqual(project.get_service('web').name, 'web') self.assertEqual(project.get_service('web').options['image'], 'busybox:latest') self.assertEqual(project.get_service('db').name, 'db') self.assertEqual(project.get_service('db').options['image'], 'busybox:latest') def test_from_dict_sorts_in_dependency_order(self): project = Project.from_dicts('figtest', [ { 'name': 'web', 'image': 'busybox:latest', 'links': ['db'], }, { 'name': 'db', 'image': 'busybox:latest' } ], None) self.assertEqual(project.services[0].name, 'db') self.assertEqual(project.services[1].name, 'web') def test_from_config(self): project = Project.from_config('figtest', { 'web': { 'image': 'busybox:latest', }, 'db': { 'image': 'busybox:latest', }, }, None) self.assertEqual(len(project.services), 2) self.assertEqual(project.get_service('web').name, 'web') self.assertEqual(project.get_service('web').options['image'], 'busybox:latest') self.assertEqual(project.get_service('db').name, 'db') self.assertEqual(project.get_service('db').options['image'], 'busybox:latest') def test_from_config_throws_error_when_not_dict(self): with self.assertRaises(ConfigurationError): project = Project.from_config('figtest', { 'web': 'busybox:latest', }, None) def test_get_service(self): web = Service( project='figtest', name='web', client=None, image="busybox:latest", ) project = Project('test', [web], None) self.assertEqual(project.get_service('web'), web)