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
def test_database_repository_wont_add_actor_that_exists(session_factory): repo = SqlAlchemyRepository(session_factory) the_ropos_actor_list = repo.get_actors() count = 0 for gen in the_ropos_actor_list: if gen == Actor('Emma Stone'): count += 1 assert count == 1 with pytest.raises(IntegrityError): repo.add_actor(Actor('Emma Stone'))
def test_database_repository_can_add_actor(session_factory): repo = SqlAlchemyRepository(session_factory) the_ropos_actor_list = repo.get_actors() count = 0 for gen in the_ropos_actor_list: if gen == Actor('Sam Wastheman'): count += 1 assert count == 0 repo.add_actor(Actor('Sam Wastheman')) the_ropos_actor_list = repo.get_actors() assert Actor('Sam Wastheman') in the_ropos_actor_list
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
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
def get_movies_by_actor(actor_name: str, repo: 'AbstractRepository') -> list: a_actor = Actor(actor_name) movie_list = list() for movie in repo.get_movies(): if a_actor in movie.actors: movie_list.append(movie) return movie_list
def test_database_repository_can_get_actors(session_factory): repo = SqlAlchemyRepository(session_factory) a_actor_list = repo.get_actors() expected_str_list = [ '50 Cent', 'Leonardo DiCaprio', 'Joseph Gordon-Levitt', 'Ellen Page', 'Ken Watanabe', 'Rita Cortese', 'Riz Ahmed', 'Rizwan Manji', 'Rob Corddry', 'Rob Riggle', 'Robbie Amell', 'Robert Capron', 'Robert Carlyle', 'Robert De Niro', 'Robert Downey Jr.', 'Robert Duvall', 'Robert Hoffman', 'Robert Knepper', 'Robert Patrick', 'Robert Pattinson', 'Robert Redford', 'O\'Shea Jackson Jr.', "Temuera Morrison" ] expected_actors = [Actor(name) for name in expected_str_list] assert len(a_actor_list) == 1985 for actor in expected_actors: assert actor in a_actor_list
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)
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
def test_load_actors(empty_session): genre_list = ["bent board", 'Tool begone'] insert_actors(empty_session, genre_list) expected = [Actor("bent board"), Actor('Tool begone')] assert empty_session.query(Actor).all() == expected
def test_repository_can_get_actors(a_memory_repo): a_actor_list = a_memory_repo.get_actors() a_actor = Actor("Temuera Morrison") assert a_actor in a_actor_list
def test_remove_actor(): movie = Movie("Moana", 2016) actors = [Actor("Auli'i Cravalho"), Actor("Dwayne Johnson"), Actor("Rachel House"), Actor("Temuera Morrison")] movie.actors = actors movie.remove_actor(Actor("Dwayne Johnson")) assert movie.actors == [Actor("Auli'i Cravalho"), Actor("Rachel House"), Actor("Temuera Morrison")]
def test_add_actor(): actor1 = Actor("Angelina Jolie") movie = Movie("Moana", 2016) movie.add_actor(actor1) assert movie.actors == [Actor("Angelina Jolie")]
def test_create_Actor(): cofner = Actor('Cevin Cofner') assert cofner.__repr__() == f'<Actor Cevin Cofner>'