from sqlalchemy import create_engine from app.db import Base, create_session_factory from app.models.memory import MemoryGraph from app.services.memory_entity_reader import LocalEntityReader, make_local_entity_reader_factory def test_local_reader_factory_scopes_each_reader_and_owns_worker_session(): engine = create_engine("sqlite+pysqlite:///:memory:") Base.metadata.create_all(engine) session_factory = create_session_factory(engine) try: with session_factory() as session: session.add( MemoryGraph( id="graph-local", organization_id="org-a", project_id="project-a", ) ) session.commit() factory = make_local_entity_reader_factory(session_factory, organization_id="org-a") reader = factory("graph-local") assert isinstance(reader, LocalEntityReader) assert reader.repository.graph_id == "graph-local" assert reader.repository.organization_id == "org-a" assert reader.owns_session is True reader.close() finally: engine.dispose()