"""Common fixtures.""" import pytest from apollo_main_db.base import Base from main_db import engine, session_scope from tests import factories def register_factories(session): """Pass session to factory model.""" for factory in ( factories.ApolloMarketFactory, factories.ApolloKeyValueStorageFactory, factories.SpotifyAnalyticsAccountStreamInfoFactory, factories.SpotifyNewMusicFridayDateFactory, factories.SpotifyViewPlaylistFactory, factories.SpotifyMarketRankFactory, factories.SpotifyNewMusicFridayPlaylistTrackHistoryFactory, ): factory._meta.sqlalchemy_session = session @pytest.fixture def db_session(): """Returns an sqlalchemy session, and after the test tears down.""" Base.metadata.create_all(engine) with session_scope() as session: register_factories(session) session.expire_on_commit = False yield session Base.metadata.drop_all(engine)