def test_sort_service_dicts_self_imports(self): services = [{"links": ["web"], "name": "web"}] try: sort_service_dicts(services) except DependencyError as e: self.assertIn("web", e.msg) else: self.fail("Should have thrown an DependencyError")
def test_sort_service_dicts_self_imports(self): services = [ { 'links': ['web'], 'name': 'web' }, ] try: sort_service_dicts(services) except DependencyError as e: self.assertIn('web', e.msg) else: self.fail('Should have thrown an DependencyError')
def test_sort_service_dicts_circular_imports_2(self): services = [ {"links": ["postgres", "redis"], "name": "web"}, {"name": "redis", "links": ["web"]}, {"name": "postgres"}, ] try: sort_service_dicts(services) except DependencyError as e: self.assertIn("redis", e.msg) self.assertIn("web", e.msg) else: self.fail("Should have thrown an DependencyError")
def test_sort_service_dicts_1(self): services = [{"links": ["redis"], "name": "web"}, {"name": "grunt"}, {"name": "redis"}] sorted_services = sort_service_dicts(services) self.assertEqual(len(sorted_services), 3) self.assertEqual(sorted_services[0]["name"], "grunt") self.assertEqual(sorted_services[1]["name"], "redis") self.assertEqual(sorted_services[2]["name"], "web")
def test_sort_service_dicts_circular_imports_2(self): services = [{ 'links': ['postgres', 'redis'], 'name': 'web' }, { 'name': 'redis', 'links': ['web'] }, { 'name': 'postgres' }] try: sort_service_dicts(services) except DependencyError as e: self.assertIn('redis', e.msg) self.assertIn('web', e.msg) else: self.fail('Should have thrown an DependencyError')
def test_sort_service_dicts_circular_imports_3(self): services = [{ 'links': ['b'], 'name': 'a' }, { 'name': 'b', 'links': ['c'] }, { 'name': 'c', 'links': ['a'] }] try: sort_service_dicts(services) except DependencyError as e: self.assertIn('a', e.msg) self.assertIn('b', e.msg) else: self.fail('Should have thrown an DependencyError')
def test_sort_service_dicts_2(self): services = [ {"links": ["redis", "postgres"], "name": "web"}, {"name": "postgres", "links": ["redis"]}, {"name": "redis"}, ] sorted_services = sort_service_dicts(services) self.assertEqual(len(sorted_services), 3) self.assertEqual(sorted_services[0]["name"], "redis") self.assertEqual(sorted_services[1]["name"], "postgres") self.assertEqual(sorted_services[2]["name"], "web")
def test_sort_service_dicts_circular_imports_2(self): services = [ { 'links': ['postgres', 'redis'], 'name': 'web' }, { 'name': 'redis', 'links': ['web'] }, { 'name': 'postgres' } ] try: sort_service_dicts(services) except DependencyError as e: self.assertIn('redis', e.msg) self.assertIn('web', e.msg) else: self.fail('Should have thrown an DependencyError')
def test_sort_service_dicts_circular_imports_3(self): services = [ { 'links': ['b'], 'name': 'a' }, { 'name': 'b', 'links': ['c'] }, { 'name': 'c', 'links': ['a'] } ] try: sort_service_dicts(services) except DependencyError as e: self.assertIn('a', e.msg) self.assertIn('b', e.msg) else: self.fail('Should have thrown an DependencyError')
def test_sort_service_dicts_1(self): services = [{ 'links': ['redis'], 'name': 'web' }, { 'name': 'grunt' }, { 'name': 'redis' }] sorted_services = sort_service_dicts(services) self.assertEqual(len(sorted_services), 3) self.assertEqual(sorted_services[0]['name'], 'grunt') self.assertEqual(sorted_services[1]['name'], 'redis') self.assertEqual(sorted_services[2]['name'], 'web')
def from_dicts(cls, name, service_dicts, client): """ Construct a ServiceCollection from a list of dicts representing services. """ project = cls(name, [], client) for service_dict in sort_service_dicts(service_dicts): # Reference links by object links = [] if 'links' in service_dict: for link in service_dict.get('links', []): if ':' in link: service_name, link_name = link.split(':', 1) else: service_name, link_name = link, None links.append((project.get_service(service_name), link_name)) del service_dict['links'] project.services.append(ExtendedService(client=client, project=name, links=links, **service_dict)) return project
def test_sort_service_dicts_1(self): services = [ { 'links': ['redis'], 'name': 'web' }, { 'name': 'grunt' }, { 'name': 'redis' } ] sorted_services = sort_service_dicts(services) self.assertEqual(len(sorted_services), 3) self.assertEqual(sorted_services[0]['name'], 'grunt') self.assertEqual(sorted_services[1]['name'], 'redis') self.assertEqual(sorted_services[2]['name'], 'web')
def test_sort_service_dicts_3(self): services = [ { 'name': 'child' }, { 'name': 'parent', 'links': ['child'] }, { 'links': ['parent'], 'name': 'grandparent' }, ] sorted_services = sort_service_dicts(services) self.assertEqual(len(sorted_services), 3) self.assertEqual(sorted_services[0]['name'], 'child') self.assertEqual(sorted_services[1]['name'], 'parent') self.assertEqual(sorted_services[2]['name'], 'grandparent')