コード例 #1
0
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]
コード例 #2
0
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
コード例 #3
0
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")
コード例 #4
0
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))
コード例 #5
0
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
コード例 #6
0
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
コード例 #7
0
def session():
    """Provide a session scope."""
    # noinspection PyProtectedMember
    with database._session_scope() as session:
        yield session