コード例 #1
0
def test_database_repository_can_add_movie(session_factory):
    repo = SqlAlchemyRepository(session_factory)
    new_movie = Movie('Guardians of Goatboy', 1914)
    new_movie.genres = [Genre('Action'), Genre('Sci-Fi')]
    new_movie.description = 'Adventures of Space soldiers sworn to protect a boy that is also a goat.'
    new_movie.director = Director("Ben Span")
    new_movie.actors = [Actor('Chris Pratt'), Actor("Bill Clinton")]
    new_movie.runtime_minutes = 400
    the_repos_movie_list = repo.get_movies()
    count = 0
    for movie in the_repos_movie_list:
        if movie == Movie('Guardians of Goatboy', 1914):
            count += 1
    assert count == 0
    repo.add_movie(new_movie)
    the_repos_movie_list = repo.get_movies()
    count = 0
    for movie in the_repos_movie_list:
        if movie == Movie('Guardians of Goatboy', 1914):
            b_movie = movie
            count += 1
    assert count == 1
    assert b_movie.description == new_movie.description
    assert b_movie.director == new_movie.director
    assert b_movie.runtime_minutes == new_movie.runtime_minutes
    assert len(b_movie.genres) == len(new_movie.genres)
    for genre in new_movie.genres:
        assert genre in b_movie.genres
    assert len(b_movie.actors) == len(new_movie.actors)
    for actor in new_movie.actors:
        assert actor in b_movie.actors
コード例 #2
0
def test_database_repository_wont_add_genre_that_exists(session_factory):
    repo = SqlAlchemyRepository(session_factory)
    count = 0
    the_ropos_genre_list = repo.get_genres()
    for gen in the_ropos_genre_list:
        if gen == Genre('Musical'):
            count += 1
    assert count == 1
    with pytest.raises(IntegrityError):
        repo.add_genre(Genre('Musical'))
コード例 #3
0
def test_database_repository_can_add_genre(session_factory):
    repo = SqlAlchemyRepository(session_factory)
    count = 0
    the_ropos_genre_list = repo.get_genres()
    for gen in the_ropos_genre_list:
        if gen == Genre('silly'):
            count += 1
    assert count == 0
    repo.add_genre(Genre('silly'))
    the_ropos_genre_list = repo.get_genres()
    assert Genre('silly') in the_ropos_genre_list
コード例 #4
0
def test_load_movie(empty_session):
    movie_title = 'Passengers'
    genre_list = ['Adventure', 'Drama', 'Romance']
    director = 'Morten Tyldum'
    description = 'A spacecraft traveling to a distant colony planet and transporting thousands of people has a malfunction in its sleep chambers. As a result, two passengers are awakened 90 years early.'
    actors = [
        'Jennifer Lawrence', 'Chris Pratt', 'Michael Sheen',
        'Laurence Fishburne'
    ]
    run_time = 116
    release_year = 2016
    insert_movie(empty_session, movie_title, director, genre_list, actors,
                 description, release_year, run_time)
    a_movie = Movie(movie_title, release_year)
    a_movie.actors = [Actor(name) for name in actors]
    a_movie.description = description
    a_movie.director = Director(director)
    a_movie.genres = [Genre(name) for name in genre_list]
    a_movie.runtime_minutes = run_time
    b_movie = empty_session.query(Movie).filter(
        Movie._title == 'Passengers').one()
    assert b_movie == a_movie
    assert b_movie.director == a_movie.director
    assert b_movie.runtime_minutes == a_movie.runtime_minutes
    assert a_movie.description == b_movie.description
    assert len(a_movie.actors) == len(b_movie.actors)
    assert len(a_movie.genres) == len(b_movie.genres)
    for genre in a_movie.genres:
        assert genre in b_movie.genres
    for actor in a_movie.actors:
        assert actor in b_movie.actors
コード例 #5
0
def test_database_repository_wont_add_movie_that_exists(session_factory):
    repo = SqlAlchemyRepository(session_factory)
    the_ropos_movie_list = repo.get_movies()
    genre_str_list = 'Action,Adventure,Biography'
    actor_str_list = 'Charlie Hunnam, Robert Pattinson, Sienna Miller, Tom Holland'
    description = 'A true-life drama, centering on British explorer Col. Percival Fawcett, who disappeared while searching for a mysterious city in the Amazon in the 1920s.'
    director_str = 'James Gray'
    a_new_movie = Movie('The Lost City of Z', 2016)
    a_new_movie.director = Director('James Gray')
    a_new_movie.runtime_minutes = 141
    count = 0
    for gen in the_ropos_movie_list:
        if gen == a_new_movie:
            count += 1
    assert count == 1
    with pytest.raises(IntegrityError):
        repo.add_movie(Movie('The Lost City of Z', 2016))
    the_ropos_movie_list = repo.get_movies()
    for gen in the_ropos_movie_list:
        if gen == Movie('The Lost City of Z', 2016):
            b_movie = gen
    genre_list = [Genre(x.strip()) for x in genre_str_list.split(',')]
    actors_list = [Actor(x.strip()) for x in actor_str_list.split(',')]
    assert b_movie.description == description
    assert b_movie.director == Director(director_str)
    assert len(b_movie.genres) == len(genre_list)
    for genre in genre_list:
        assert genre in b_movie.genres
    assert len(b_movie.actors) == len(actors_list)
    for actor in actors_list:
        assert actor in b_movie.actors
コード例 #6
0
def test_repository_get_number_per_genre(a_memory_repo, a_file_reader):
    data_from_test = dict()
    for movie in a_file_reader.dataset_of_movies:
        for item in movie.genres:
            if item.genre_name in data_from_test:
                data_from_test[item.genre_name] += 1
            else:
                data_from_test[item.genre_name] = 1
    for key, val in data_from_test.items():
        assert val == a_memory_repo.get_size_of_genre(Genre(key))
コード例 #7
0
def test_database_repository_get_number_per_genre(session_factory,
                                                  a_file_reader):
    data_from_test = dict()
    repo = SqlAlchemyRepository(session_factory)
    for movie in a_file_reader.dataset_of_movies:
        for item in movie.genres:
            if item.genre_name in data_from_test:
                data_from_test[item.genre_name] += 1
            else:
                data_from_test[item.genre_name] = 1
    for key, val in data_from_test.items():
        assert val == repo.get_size_of_genre(Genre(key))
コード例 #8
0
def test_database_repository_can_get_genres(session_factory):
    repo = SqlAlchemyRepository(session_factory)
    the_ropos_genre_list = repo.get_genres()
    expected_str = [
        'Action', 'Adventure', 'Animation', 'Biography', 'Comedy', 'Crime',
        'Drama', 'Family', 'Fantasy', 'History', 'Horror', 'Music', 'Musical',
        'Mystery', 'Romance', 'Sci-Fi', 'Sport', 'Thriller', 'War', 'Western'
    ]
    expected = [Genre(name) for name in expected_str]
    assert len(the_ropos_genre_list) == 20
    for genre in the_ropos_genre_list:
        assert genre in expected
コード例 #9
0
 def read_csv_file(self) -> None:
     with open(self.__filename, encoding='utf-8-sig') as file_data:
         reader = csv.DictReader(file_data)
         self.__dataset_of_movies = list()
         for row in reader:
             new_movie = Movie(row['Title'], int(row['Year']))
             new_movie.description = row['Description']
             new_movie.genres = [
                 Genre(i.strip()) for i in row['Genre'].split(',')
             ]
             new_movie.actors = [
                 Actor(i.strip()) for i in row['Actors'].split(',')
             ]
             new_movie.director = Director(row['Director'].strip())
             if row['Runtime (Minutes)'].isdigit():
                 new_movie.runtime_minutes = int(row['Runtime (Minutes)'])
             self.__dataset_of_movies.append(new_movie)
             for i in new_movie.genres:
                 self.add_genre(i)
             for i in new_movie.actors:
                 self.add_actor(i)
             self.add_director(new_movie.director)
コード例 #10
0
def test_load_review(empty_session):
    movie_title = 'Passengers'
    genre_list = ['Adventure', 'Drama', 'Romance']
    director = 'Morten Tyldum'
    description = 'A spacecraft traveling to a distant colony planet and transporting thousands of people has a malfunction in its sleep chambers. As a result, two passengers are awakened 90 years early.'
    actors = [
        'Jennifer Lawrence', 'Chris Pratt', 'Michael Sheen',
        'Laurence Fishburne'
    ]
    run_time = 116
    release_year = 2016
    insert_movie(empty_session, movie_title, director, genre_list, actors,
                 description, release_year, run_time)
    a_movie = Movie(movie_title, release_year)
    a_movie.actors = [Actor(name) for name in actors]
    a_movie.description = description
    a_movie.director = Director(director)
    a_movie.genres = [Genre(name) for name in genre_list]
    a_movie.runtime_minutes = run_time
    users = [["jill", '98765432'], ['jim', 'mjydfefs']]
    insert_users(empty_session, users)
    review_text = 'was definitely a 5'
    rating = 5
    result = empty_session.execute(
        f"SELECT id from users WHERE username = '******'").fetchone()
    insert_review(empty_session, movie_title, release_year, result[0],
                  review_text, rating)
    users = empty_session.query(User).all()
    found_review = None
    for user in users:
        if user.username == 'jim':
            for review in user.reviews:
                if review.movie == Movie(movie_title, release_year):
                    found_review = review
                    break
    assert found_review.review_text == 'was definitely a 5'
    assert found_review.rating == 5
コード例 #11
0
def test_load_genres(empty_session):
    genre_list = ["Action", 'Tool']
    insert_genres(empty_session, genre_list)
    expected = [Genre('Action'), Genre('Tool')]
    assert empty_session.query(Genre).all() == expected
コード例 #12
0
def test_repository_can_get_genres(a_memory_repo):
    a_genre_list = a_memory_repo.get_genres()
    a_genre = Genre("Action")
    assert a_genre in a_genre_list
コード例 #13
0
def test_add_genre():
    movie = Movie("Moana", 2016)
    cartoon = Genre('Cartoon')
    movie.genres = [cartoon]
    assert movie.genres == [Genre('Cartoon')]
コード例 #14
0
def test_create_Genre():
    action = Genre('Action')
    assert action.__repr__() == f'<Genre Action>'
コード例 #15
0
def test_remove_genre():
    movie = Movie("Moana", 2016)
    movie.genres = [Genre('Cartoon'), Genre('Kids'), Genre('Action')]
    movie.remove_genre(Genre('Action'))
    assert movie.genres == [Genre('Cartoon'), Genre('Kids')]
コード例 #16
0
def get_pop_of_genre(genre_pick: str, repo: 'AbstractRepository') -> int:
    return repo.get_size_of_genre(Genre(genre_pick))