def test_init_database_access_with_new_database(connection): """Create a new database and test that date_created is today.""" with database._session_scope() as session: today = (session.query(database.MoviesMetaData.value) .filter(database.MoviesMetaData.name == 'date_created') .one()) assert today.value[0:10] == str(database.datetime.datetime.today())[0:10]
def test_rollback_called(monkeypatch): monkeypatch.setattr(database, 'Session', InstrumentedSession) monkeypatch.setattr(database, 'logging', InstrumentedLogging()) with pytest.raises(DatabaseTestException): with database._session_scope() as session: session.incorrect_function() assert session.rollback_called assert session.close_called
def test_logging_called(monkeypatch): monkeypatch.setattr(database, 'Session', InstrumentedSession) log = InstrumentedLogging() monkeypatch.setattr(database, 'logging', log) with pytest.raises(DatabaseTestException): with database._session_scope() as session: session.incorrect_function() assert log.info_calls[0] == ("An incomplete database session has been rolled back " "because of exception:\nDatabaseTestException")
def loaded_database(hamlet, solaris, dreams, revanche): """Provide a loaded database.""" database.connect_to_database(filename=':memory:') # noinspection PyProtectedMember movies = [database.Movie(**movie) for movie in (hamlet, solaris, dreams, revanche)] # noinspection PyProtectedMember with database._session_scope() as session: session.add_all(movies) database.add_tag('blue') database.add_movie_tag_link('blue', database.MovieKeyTypedDict(title='Hamlet', year=1996)) database.add_tag('yellow') database.add_movie_tag_link('yellow', database.MovieKeyTypedDict(title='Revanche', year=2008)) database.add_tag('green') database.add_movie_tag_link('green', database.MovieKeyTypedDict(title='Revanche', year=2008)) database.add_movie_tag_link('green', database.MovieKeyTypedDict(title='Solaris', year=1972))
def test_init_database_access_with_existing_database(tmpdir): """Attach to an existing database and check tha date_last_accessed is today.""" # Slow test: 5% chance of this test being run. if random.randint(0, 99) > 5: return path = tmpdir.mkdir('tmpdir').join(database.database_fn) database.connect_to_database(filename=path) # Reattach to the same database database.connect_to_database(filename=path) with database._session_scope() as session: current = (session.query(database.MoviesMetaData.value) .filter(database.MoviesMetaData.name == 'date_last_accessed') .one()) previous = (session.query(database.MoviesMetaData.value) .filter(database.MoviesMetaData.name == 'date_created') .one()) assert current != previous
def test_commit_called(monkeypatch): monkeypatch.setattr(database, 'Session', InstrumentedSession) with database._session_scope() as session: session.correct_function() assert session.commit_called assert session.close_called
def session(): """Provide a session scope.""" # noinspection PyProtectedMember with database._session_scope() as session: yield session