Esempio n. 1
0
 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)
Esempio n. 3
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)
Esempio n. 4
0
    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
Esempio n. 5
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
Esempio n. 6
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
Esempio n. 7
0
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))
Esempio n. 8
0
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))