def get_collection(self): resource_defs = {'Frob': {'identifiers': []}} # Build up a resource def identifier list based on what # the collection is expecting to be required from its # definition. This saves a bunch of repetitive typing # and lets you just define a collection in the tests # below. Any identifiers you expect to be availabe in # the resource definition will automatically be there. resource_def = self.collection_def.get('resource', {}) for identifier in resource_def.get('identifiers', []): resource_defs['Frob']['identifiers'].append( {'name': identifier['target']}) collection_model = Collection('test', self.collection_def, resource_defs) collection = CollectionManager( collection_model=collection_model, parent=self.parent, factory=self.factory, service_context=ServiceContext( service_name='test', service_model=self.service_model, resource_json_definitions=resource_defs, service_waiter_model=None)) return collection
def test_create_subclasses(self): resource_defs = { 'Frob': {}, 'Chain': { 'hasMany': { 'Frobs': { 'request': { 'operation': 'GetFrobs' }, 'resource': { 'type': 'Frob' } } } } } collection_model = Collection( 'Frobs', resource_defs['Chain']['hasMany']['Frobs'], resource_defs) collection_cls = self.load('test', 'Chain', 'Frobs', collection_model, resource_defs) collection = collection_cls( collection_model, self.parent, self.resource_factory, resource_defs, self.service_model) self.assertEqual(collection_cls.__name__, 'test.Chain.FrobsCollectionManager') self.assertIsInstance(collection, CollectionManager) self.assertIsInstance(collection.all(), ResourceCollection)
def test_create_batch_actions(self, action_mock): resource_defs = { 'Frob': { 'batchActions': { 'Delete': { 'request': { 'operation': 'DeleteFrobs' } } } }, 'Chain': { 'hasMany': { 'Frobs': { 'request': { 'operation': 'GetFrobs' }, 'resource': { 'type': 'Frob' }, } } }, } collection_model = Collection( 'Frobs', resource_defs['Chain']['hasMany']['Frobs'], resource_defs) service_context = ServiceContext( service_name='test', resource_json_definitions=resource_defs, service_model=self.service_model, service_waiter_model=None, ) collection_cls = self.load( resource_name='Chain', collection_model=collection_model, service_context=service_context, event_emitter=self.event_emitter, ) collection = collection_cls( collection_model=collection_model, parent=self.parent, factory=self.resource_factory, service_context=service_context, ) assert hasattr(collection, 'delete') collection.delete() action_mock.return_value.assert_called_with(collection)
def test_create_subclasses(self): resource_defs = { 'Frob': {}, 'Chain': { 'hasMany': { 'Frobs': { 'request': { 'operation': 'GetFrobs' }, 'resource': { 'type': 'Frob' }, } } }, } collection_model = Collection( 'Frobs', resource_defs['Chain']['hasMany']['Frobs'], resource_defs) service_context = ServiceContext( service_name='test', resource_json_definitions=resource_defs, service_model=self.service_model, service_waiter_model=None, ) collection_cls = self.load( resource_name='Chain', collection_model=collection_model, service_context=service_context, event_emitter=self.event_emitter, ) collection = collection_cls( collection_model=collection_model, parent=self.parent, factory=self.resource_factory, service_context=service_context, ) assert collection_cls.__name__ == 'test.Chain.FrobsCollectionManager' assert isinstance(collection, CollectionManager) # Make sure that collection manager created from the factory # returns a ResourceCollection. assert isinstance(collection.all(), ResourceCollection) # Make sure that the collection returned from the collection # manager can be chained and return a ResourceCollection as well. assert isinstance(collection.all().all(), ResourceCollection)
def test_create_batch_actions(self, action_mock): resource_defs = { 'Frob': { 'batchActions': { 'Delete': { 'request': { 'operation': 'DeleteFrobs' } } } }, 'Chain': { 'hasMany': { 'Frobs': { 'request': { 'operation': 'GetFrobs' }, 'resource': { 'type': 'Frob' } } } } } collection_model = Collection( 'Frobs', resource_defs['Chain']['hasMany']['Frobs'], resource_defs) collection_cls = self.load('test', 'Chain', 'Frobs', collection_model, resource_defs) collection = collection_cls( collection_model, self.parent, self.resource_factory, resource_defs, self.service_model) self.assertTrue(hasattr(collection, 'delete')) collection.delete() action_mock.return_value.assert_called_with(collection)