Ejemplo n.º 1
0
    def __init__(self, tmpdir):
        # type: (LocalPath) -> None
        self.settings = Settings()
        self.settings.database = db_url(tmpdir)
        self.plugins = PluginProxy([])

        # Reinitialize the global plugin proxy with an empty set of plugins in case a previous test
        # initialized plugins.  This can go away once a plugin proxy is injected into everything
        # that needs it instead of maintained as a global.
        set_global_plugin_proxy(self.plugins)

        self.initialize_database()
        self.session = SessionFactory(self.settings).create_session()
        self.graph = GroupGraph()
        session_factory = SingletonSessionFactory(self.session)
        self.repository_factory = GraphRepositoryFactory(
            self.settings, self.plugins, session_factory, self.graph)
        self.sql_repository_factory = SQLRepositoryFactory(
            self.settings, self.plugins, session_factory)
        self.service_factory = ServiceFactory(self.settings, self.plugins,
                                              self.repository_factory)
        self.usecase_factory = UseCaseFactory(self.settings, self.plugins,
                                              self.service_factory)
        self._transaction_service = self.service_factory.create_transaction_service(
        )
Ejemplo n.º 2
0
def create_sql_usecase_factory(settings, session=None):
    # type: (Settings, Optional[Session]) -> UseCaseFactory
    """Create a SQL-backed UseCaseFactory, with optional injection of a Session.

    Session injection is supported primarily for tests.  If not injected, it will be created on
    demand.
    """
    repository_factory = SQLRepositoryFactory(settings, session)
    service_factory = ServiceFactory(repository_factory)
    return UseCaseFactory(service_factory)
Ejemplo n.º 3
0
def create_graph_usecase_factory(settings, session=None, graph=None):
    # type: (Settings, Optional[Session], Optional[GroupGraph]) -> UseCaseFactory
    """Create a graph-backed UseCaseFactory, with optional injection of a Session and GroupGraph.

    Session and graph injection is supported primarily for tests.  If not injected, they will be
    created on demand.
    """
    repository_factory = GraphRepositoryFactory(settings, session, graph)
    service_factory = ServiceFactory(repository_factory)
    return UseCaseFactory(service_factory)
Ejemplo n.º 4
0
 def __init__(self, tmpdir):
     # type: (LocalPath) -> None
     self.session = self.create_session(tmpdir)
     self.graph = GroupGraph()
     self.settings = Settings({"database": db_url(tmpdir)})
     self.repository_factory = GraphRepositoryFactory(
         self.settings, self.session, self.graph)
     self.service_factory = ServiceFactory(self.repository_factory)
     self.usecase_factory = UseCaseFactory(self.service_factory)
     self._transaction_service = self.service_factory.create_transaction_service(
     )
Ejemplo n.º 5
0
def create_sql_usecase_factory(settings, plugins, session_factory=None):
    # type: (Settings, PluginProxy, Optional[SessionFactory]) -> UseCaseFactory
    """Create a SQL-backed UseCaseFactory, with optional injection of a Session.

    Session factory injection is supported primarily for tests.  If not injected, it will be
    created on demand.
    """
    if not session_factory:
        session_factory = SessionFactory(settings)
    repository_factory = SQLRepositoryFactory(settings, plugins, session_factory)
    service_factory = ServiceFactory(settings, plugins, repository_factory)
    return UseCaseFactory(settings, plugins, service_factory)
Ejemplo n.º 6
0
 def open_database(self) -> None:
     self.session = SessionFactory(self.settings).create_session()
     session_factory = SingletonSessionFactory(self.session)
     self.repository_factory = GraphRepositoryFactory(
         self.settings, self.plugins, session_factory, self.graph)
     self.sql_repository_factory = SQLRepositoryFactory(
         self.settings, self.plugins, session_factory)
     self.service_factory = ServiceFactory(self.settings, self.plugins,
                                           self.repository_factory)
     self.usecase_factory = UseCaseFactory(self.settings, self.plugins,
                                           self.service_factory)
     self._transaction_service = self.service_factory.create_transaction_service(
     )
Ejemplo n.º 7
0
def create_graph_usecase_factory(
    settings,  # type: Settings
    plugins,  # type: PluginProxy
    session_factory=None,  # type: Optional[SessionFactory]
    graph=None,  # type: Optional[GroupGraph]
):
    # type: (...) -> UseCaseFactory
    """Create a graph-backed UseCaseFactory, with optional injection of a Session and GroupGraph.

    Session factory and graph injection is supported primarily for tests.  If not injected, they
    will be created on demand.
    """
    if not session_factory:
        session_factory = SessionFactory(settings)
    repository_factory = GraphRepositoryFactory(settings, plugins, session_factory, graph)
    service_factory = ServiceFactory(settings, plugins, repository_factory)
    return UseCaseFactory(settings, plugins, service_factory)