Esempio n. 1
0
    def test_load(self):
        builder = ioc.component.ContainerBuilder()

        loader = ioc.loader.YamlLoader()
        loader.load("%s/../fixtures/services.yml" % current_dir, builder)

        self.assertEquals(5, len(builder.services))
        self.assertTrue('foo' in builder.services)
        self.assertTrue('fake' in builder.services)

        self.assertIsInstance(builder.get('foo'), ioc.component.Definition)
        self.assertIsInstance(builder.get('fake'), ioc.component.Definition)
        self.assertIsInstance(
            builder.get('foo').arguments[0], ioc.component.Reference)

        self.assertEquals(2, len(builder.get('fake').method_calls))

        self.assertEquals('set_ok', builder.get('fake').method_calls[0][0])
        self.assertEquals([False], builder.get('fake').method_calls[0][1])
        self.assertEquals({}, builder.get('fake').method_calls[0][2])

        self.assertEquals('set_ok', builder.get('fake').method_calls[1][0])
        self.assertEquals([True], builder.get('fake').method_calls[1][1])
        self.assertEquals({'arg2': 'arg'},
                          builder.get('fake').method_calls[1][2])

        # test tags
        self.assertEquals(['foo'], builder.get_ids_by_tag('jinja.filter'))
Esempio n. 2
0
    def load(self, config, container_builder):

        path = os.path.dirname(os.path.abspath(__file__))

        loader = ioc.loader.YamlLoader()
        loader.load("%s/resources/config/command.yml" % path,
                    container_builder)
Esempio n. 3
0
    def test_load(self):
        builder = ioc.component.ContainerBuilder()

        loader = ioc.loader.YamlLoader()
        loader.load("%s/../fixtures/services.yml" % current_dir, builder)

        self.assertEquals(5, len(builder.services))
        self.assertTrue("foo" in builder.services)
        self.assertTrue("fake" in builder.services)

        self.assertIsInstance(builder.get("foo"), ioc.component.Definition)
        self.assertIsInstance(builder.get("fake"), ioc.component.Definition)
        self.assertIsInstance(builder.get("foo").arguments[0], ioc.component.Reference)

        self.assertEquals(2, len(builder.get("fake").method_calls))

        self.assertEquals("set_ok", builder.get("fake").method_calls[0][0])
        self.assertEquals([False], builder.get("fake").method_calls[0][1])
        self.assertEquals({}, builder.get("fake").method_calls[0][2])

        self.assertEquals("set_ok", builder.get("fake").method_calls[1][0])
        self.assertEquals([True], builder.get("fake").method_calls[1][1])
        self.assertEquals({"arg2": "arg"}, builder.get("fake").method_calls[1][2])

        # test tags
        self.assertEquals(["foo"], builder.get_ids_by_tag("jinja.filter"))
Esempio n. 4
0
    def test_abstract_service(self):
        builder = ioc.component.ContainerBuilder()

        loader = ioc.loader.YamlLoader()
        loader.load("%s/../fixtures/services.yml" % current_dir, builder)

        self.assertTrue(builder.get("abstract_service").abstract)
        self.assertFalse(builder.get("fake").abstract)
Esempio n. 5
0
    def test_abstract_service(self):
        builder = ioc.component.ContainerBuilder()

        loader = ioc.loader.YamlLoader()
        loader.load("%s/../fixtures/services.yml" % current_dir, builder)

        self.assertTrue(builder.get('abstract_service').abstract)
        self.assertFalse(builder.get('fake').abstract)
Esempio n. 6
0
File: di.py Progetto: pytheons/ioc
    def load(self, config, container_builder):

        path = os.path.dirname(os.path.abspath(__file__))

        loader = ioc.loader.YamlLoader()
        loader.load("%s/resources/config/redis.yml" % path, container_builder)

        container_builder.parameters.set('ioc.extra.redis.default_connection', config.get('default', 'default'))

        self.configure_connections(config, container_builder)
Esempio n. 7
0
    def test_reference_method(self):
        builder = ioc.component.ContainerBuilder()

        loader = ioc.loader.YamlLoader()
        loader.load("%s/../fixtures/services.yml" % current_dir, builder)

        definition = builder.get("method_reference")

        self.assertIsInstance(definition, ioc.component.Definition)
        self.assertIsInstance(definition.arguments[0], ioc.component.Reference)
        self.assertEquals("fake", definition.arguments[0].id)
        self.assertEquals("set_ok", definition.arguments[0].method)
Esempio n. 8
0
    def test_reference_method(self):
        builder = ioc.component.ContainerBuilder()

        loader = ioc.loader.YamlLoader()
        loader.load("%s/../fixtures/services.yml" % current_dir, builder)

        definition = builder.get('method_reference')

        self.assertIsInstance(definition, ioc.component.Definition)
        self.assertIsInstance(definition.arguments[0], ioc.component.Reference)
        self.assertEquals("fake", definition.arguments[0].id)
        self.assertEquals("set_ok", definition.arguments[0].method)
Esempio n. 9
0
    def load(self, config, container_builder):

        path = os.path.dirname(os.path.abspath(__file__))

        loader = ioc.loader.YamlLoader()
        loader.load("%s/resources/config/jinja.yml" % path, container_builder)

        # register template
        # retrieve all extensions and build a valid MapPrefixLoader dict
        mapping = {}
        for name, config in container_builder.extensions.items():
            mapping[name] = jinja2.FileSystemLoader([
                "%s/resources/%s/templates" % (container_builder.parameters.get('project.root_folder'), name),
                "%s/resources/templates" % os.path.dirname(importlib.import_module(name).__file__),
            ])

        container_builder.parameters.set("ioc.extra.jinja2.loader_mapping", mapping)
Esempio n. 10
0
File: di.py Progetto: pytheons/ioc
    def load(self, config, container_builder):

        path = os.path.dirname(os.path.abspath(__file__))

        loader = ioc.loader.YamlLoader()
        loader.load("%s/resources/config/flask.yml" % path, container_builder)

        app = config.get_dict('app', {})

        container_builder.parameters.set('ioc.extra.flask.app.name', app.get('name', ''))
        
        container_builder.parameters.set('ioc.extra.flask.app.static_folder', app.get('static_folder', 'static'))
        container_builder.parameters.set('ioc.extra.flask.app.static_path', app.get('static_path', ''))
        container_builder.parameters.set('ioc.extra.flask.app.static_url_path', app.get('static_url_path', 'static'))
        container_builder.parameters.set('ioc.extra.flask.app.instance_path', app.get('instance_path', 'templates'))
        container_builder.parameters.set('ioc.extra.flask.app.template_folder', app.get('template_folder', ''))
        container_builder.parameters.set('ioc.extra.flask.app.port', app.get('port', 8080))
        container_builder.parameters.set('ioc.extra.flask.app.instance_relative_config', app.get('instance_relative_config', False))

        self.configure_app_config(config, container_builder)
        self.configure_blueprint(config, container_builder)
Esempio n. 11
0
    def load(self, config, container_builder):

        path = os.path.dirname(os.path.abspath(__file__))

        loader = ioc.loader.YamlLoader()
        loader.load("%s/resources/config/jinja.yml" % path, container_builder)

        # register template
        # retrieve all extensions and build a valid MapPrefixLoader dict
        mapping = {}
        for name, config in container_builder.extensions.items():
            mapping[name] = jinja2.FileSystemLoader([
                "%s/resources/%s/templates" %
                (container_builder.parameters.get('project.root_folder'),
                 name),
                "%s/resources/templates" %
                os.path.dirname(importlib.import_module(name).__file__),
            ])

        container_builder.parameters.set("ioc.extra.jinja2.loader_mapping",
                                         mapping)
Esempio n. 12
0
def build(files, logger=None, parameters=None):

    if not logger:
        logger = logging.getLogger('ioc')

    if not parameters:
        parameters = {
            'ioc.debug': False
        }

    container_builder = ioc.component.ContainerBuilder(logger=logger)
        
    loaders = [
        ioc.loader.YamlLoader()
    ]

    logger.debug("Loading files")

    for file in files:
        logger.debug("Search loader for file %s" % file)
        for loader in loaders:
            if not loader.support(file):
                continue

            logger.debug("Found loader %s for file %s" % (loader, file))

            loader.load(file, container_builder)

    container = ioc.component.Container()

    for name, value in parameters.items():
        container_builder.parameters.set(name, value)

    container_builder.build_container(container)

    return container
Esempio n. 13
0
    def load(self, config, container_builder):

        path = os.path.dirname(os.path.abspath(__file__))

        loader = ioc.loader.YamlLoader()
        loader.load("%s/resources/config/stats.yml" % path, container_builder)