def get(self, key, value): """Get single app by one of id or name Keyword Args: id (str): Full app id name (str): App name Returns: App: Corresponding App resource instance Raises: TypeError: No or multiple keyword arguments provided ValueError: No matching app found on server """ if key == 'id': # Server returns 204 instead of 404 for a non-existent app id response = self._swimlane.request('get', 'app/{}'.format(value)) if response.status_code == 204: raise ValueError('No app with id "{}"'.format(value)) return App(self._swimlane, response.json()) else: # Workaround for lack of support for get by name # Holdover from previous driver support, to be fixed as part of 3.x for app in self.list(): if value and value == app.name: return app # No matching app found raise ValueError('No app with name "{}"'.format(value))
def list(self): """Retrieve list of all apps Returns: :class:`list` of :class:`~swimlane.core.resources.app.App`: List of all retrieved apps """ response = self._swimlane.request('get', 'app') return [App(self._swimlane, item) for item in response.json()]
def setUp(self): self.src_app = App({ 'id': '123', 'name': 'Source', 'acronym': 'SO', 'fields': [{ 'name': 'Component', 'values': [{ 'name': 'Foo' }, { 'name': 'Bar' }, { 'name': 'Baz' }], 'fieldType': 'valuesList' }] }) self.dest_app = App({ 'id': '456', 'name': 'Destination', 'acronym': 'DE', 'fields': [{ 'name': 'Component', 'values': [{ 'name': 'Baz' }, { 'name': 'Bar' }], 'fieldType': 'valuesList' }] })
def test_field_id(self): app = App(MOCK_APP) self.assertEqual(app.field_id('Mock Field'), '456') self.assertEqual(app.field_id('Not A Field'), None)
def test_init(self): app = App(MOCK_APP) for key, value in MOCK_APP.items(): self.assertEqual(getattr(app, key), value)