def test_custom_repository(self, simple_config): class MyMemoryAggregate(Aggregate): pass reg = simple_config.registry config = Configurator(registry=reg) config.add_memory_repository('test', aggregate_class=MyMemoryAggregate) repo_mgr = config.get_registered_utility(IRepositoryManager) repo = repo_mgr.get('test') config.add_resource(IFoo, FooMember, FooEntity, collection_root_name="foos", repository='test') with pytest.raises(RuntimeError): repo.get_collection(IFoo) with pytest.raises(RuntimeError): repo.get_aggregate(IFoo) repo.initialize() coll = repo.get_collection(IFoo) agg = coll.get_aggregate() assert isinstance(agg, MyMemoryAggregate) entity = FooEntity(id=1) agg.add(entity) assert agg.count() == 1 assert list(agg.iterator())[0].id == entity.id assert agg.get_by_id(1).id == entity.id assert agg.get_by_slug('1').slug == entity.slug agg.remove(entity) assert agg.count() == 0
def test_custom_repository(self): class MyMemoryAggregate(Aggregate): pass reg = self._registry config = Configurator(registry=reg) config.add_memory_repository('test', aggregate_class=MyMemoryAggregate) repo_mgr = config.get_registered_utility(IRepositoryManager) repo = repo_mgr.get('test') config.add_resource(IFoo, FooMember, FooEntity, collection_root_name="foos", repository='test') self.assert_raises(RuntimeError, repo.get_collection, IFoo) self.assert_raises(RuntimeError, repo.get_aggregate, IFoo) repo.initialize() coll = repo.get_collection(IFoo) agg = coll.get_aggregate() self.assert_true(isinstance(agg, MyMemoryAggregate)) entity = FooEntity(id=1) agg.add(entity) self.assert_true(agg.count() == 1) self.assert_equal(list(agg.iterator())[0].id, entity.id) self.assert_equal(agg.get_by_id(1).id, entity.id) self.assert_equal(agg.get_by_slug('1').slug, entity.slug) agg.remove(entity) self.assert_true(agg.count() == 0)
def app_factory(global_settings, **local_settings): # pylint: disable=W0613 """ Default factory for creating a WSGI application using the everest configurator and root factory. :param dict global_settings: Global settings extracted from an ini file. Not used in this default app factory. :param dict local_settings: App settings extracted from an ini file. """ config = Configurator() config.setup_registry(settings=local_settings, root_factory=RootFactory()) if 'configure_zcml' in local_settings: config.load_zcml(local_settings['configure_zcml']) app = config.make_wsgi_app() # In the absence of an application name in the settings, we have to # extract the main app's name from the ini file, which unfortunately # means parsing it again. app_name = app_name_from_ini_file(global_settings['__file__']) ep_group = "%s.plugins" % app_name plugin_mgr = config.get_registered_utility(IPluginManager) plugin_mgr.load_all(ep_group) return app
class DirectivesTestCase(Pep8CompliantTestCase): def set_up(self): testing_set_up() reg = self._registry = get_current_registry() self._config = Configurator(registry=reg, package=package) self._config.setup_registry() repo_mgr = self._config.get_registered_utility(IRepositoryManager) repo_mgr.initialize_all() def tear_down(self): testing_tear_down() def test_configure_with_simple_zcml(self): # Load the configuration. self._config.load_zcml('everest.tests.simple_app:configure_simple.zcml') reg = self._registry # Check adapters. ent = FooEntity() member = object.__new__(FooMember) coll_cls = reg.queryUtility(IFoo, name='collection-class') self.assert_is_not_none(coll_cls) self.assert_is_not_none(coll_cls.root_name) self.assert_is_not_none(coll_cls.title) coll = object.__new__(coll_cls) self.__check(reg, member, ent, coll) # Check service. srvc = reg.queryUtility(IService) self.assert_is_not_none(srvc) srvc.start() self.assert_true(isinstance(srvc.get('foos'), Collection)) self.assert_is_none(srvc.get(coll_cls)) self.assert_is_none(srvc.get(IBar)) def test_configure_with_full_zcml(self): reg = self._registry # Check adapters. ent = FooEntity() member = object.__new__(FooMember) coll = object.__new__(FooCollection) # Make sure no adapters are in the registry. self.assert_is_none(reg.queryAdapter(coll, IMemberResource, name='member-class')) self.assert_is_none(reg.queryAdapter(member, ICollectionResource, name='collection-class')) self.assert_is_none(reg.queryAdapter(member, IEntity, name='entity-class')) self.assert_is_none(reg.queryAdapter(ent, IMemberResource)) self.assert_is_none(reg.queryAdapter(coll, IRepresenter, name=CsvMime.mime_type_string)) # Load the configuration. config = Configurator(registry=reg, package=package) config.load_zcml('everest.tests.simple_app:configure.zcml') self.__check(reg, member, ent, coll) rpr = as_representer(coll, CsvMime) self.assert_true(isinstance(rpr, Representer)) def test_configure_with_custom_repo_zcml(self): repo_mgr = self._registry.queryUtility(IRepositoryManager) self.assert_is_none(repo_mgr.get('CUSTOM_MEMORY')) self.assert_is_none(repo_mgr.get('CUSTOM_FILESYSTEM')) self.assert_is_none(repo_mgr.get('CUSTOM_RDB')) self._config.load_zcml('everest.tests.simple_app:configure_repos.zcml') self.assert_is_not_none(repo_mgr.get('CUSTOM_MEMORY')) self.assert_is_not_none(repo_mgr.get('CUSTOM_FILESYSTEM')) self.assert_is_not_none(repo_mgr.get('CUSTOM_RDB')) def __check(self, reg, member, ent, coll): for idx, obj in enumerate((member, coll, ent)): self.assert_equal(reg.queryAdapter(obj, IMemberResource, name='member-class'), type(member)) self.assert_equal(reg.queryAdapter(obj, ICollectionResource, name='collection-class'), type(coll)) self.assert_equal(reg.queryAdapter(obj, IEntity, name='entity-class'), type(ent)) if idx < 2: # lookup with class only for member/collection. self.assert_equal(reg.queryAdapter(type(obj), IMemberResource, name='member-class'), type(member)) self.assert_equal(reg.queryAdapter(type(obj), ICollectionResource, name='collection-class'), type(coll)) self.assert_equal(reg.queryAdapter(type(obj), IEntity, name='entity-class'), type(ent)) # Check instance adapters. self.assert_is_not_none(reg.queryAdapter(ent, IMemberResource))
class DirectivesTestCase(Pep8CompliantTestCase): def set_up(self): testing_set_up() reg = self._registry = get_current_registry() self._config = Configurator(registry=reg, package=package) self._config.setup_registry() repo_mgr = self._config.get_registered_utility(IRepositoryManager) repo_mgr.initialize_all() def tear_down(self): testing_tear_down() def test_configure_with_simple_zcml(self): # Load the configuration. self._config.load_zcml( 'everest.tests.simple_app:configure_simple.zcml') reg = self._registry # Check adapters. ent = FooEntity() member = object.__new__(FooMember) coll_cls = reg.queryUtility(IFoo, name='collection-class') self.assert_is_not_none(coll_cls) self.assert_is_not_none(coll_cls.root_name) self.assert_is_not_none(coll_cls.title) coll = object.__new__(coll_cls) self.__check(reg, member, ent, coll) # Check service. srvc = reg.queryUtility(IService) self.assert_is_not_none(srvc) srvc.start() self.assert_true(isinstance(srvc.get('foos'), Collection)) self.assert_is_none(srvc.get(coll_cls)) self.assert_is_none(srvc.get(IBar)) def test_configure_with_full_zcml(self): reg = self._registry # Check adapters. ent = FooEntity() member = object.__new__(FooMember) coll = object.__new__(FooCollection) # Make sure no adapters are in the registry. self.assert_is_none( reg.queryAdapter(coll, IMemberResource, name='member-class')) self.assert_is_none( reg.queryAdapter(member, ICollectionResource, name='collection-class')) self.assert_is_none( reg.queryAdapter(member, IEntity, name='entity-class')) self.assert_is_none(reg.queryAdapter(ent, IMemberResource)) self.assert_is_none( reg.queryAdapter(coll, IRepresenter, name=CsvMime.mime_type_string)) # Load the configuration. config = Configurator(registry=reg, package=package) config.load_zcml('everest.tests.simple_app:configure.zcml') self.__check(reg, member, ent, coll) rpr = as_representer(coll, CsvMime) self.assert_true(isinstance(rpr, Representer)) def test_configure_with_custom_repo_zcml(self): repo_mgr = self._registry.queryUtility(IRepositoryManager) self.assert_is_none(repo_mgr.get('CUSTOM_MEMORY')) self.assert_is_none(repo_mgr.get('CUSTOM_FILESYSTEM')) self.assert_is_none(repo_mgr.get('CUSTOM_RDB')) self._config.load_zcml('everest.tests.simple_app:configure_repos.zcml') self.assert_is_not_none(repo_mgr.get('CUSTOM_MEMORY')) self.assert_is_not_none(repo_mgr.get('CUSTOM_FILESYSTEM')) self.assert_is_not_none(repo_mgr.get('CUSTOM_RDB')) def __check(self, reg, member, ent, coll): for idx, obj in enumerate((member, coll, ent)): self.assert_equal( reg.queryAdapter(obj, IMemberResource, name='member-class'), type(member)) self.assert_equal( reg.queryAdapter(obj, ICollectionResource, name='collection-class'), type(coll)) self.assert_equal( reg.queryAdapter(obj, IEntity, name='entity-class'), type(ent)) if idx < 2: # lookup with class only for member/collection. self.assert_equal( reg.queryAdapter(type(obj), IMemberResource, name='member-class'), type(member)) self.assert_equal( reg.queryAdapter(type(obj), ICollectionResource, name='collection-class'), type(coll)) self.assert_equal( reg.queryAdapter(type(obj), IEntity, name='entity-class'), type(ent)) # Check instance adapters. self.assert_is_not_none(reg.queryAdapter(ent, IMemberResource))