def test_remove_actor(self): movie1 = Movie("Moana", 2016, 2) movie1.add_actor(Actor("Some Actor")) assert movie1.number_of_actors == 1 movie1.remove_actor(Actor("Some Actor")) assert movie1.number_of_actors == 0 movie1.remove_actor(Actor("Some Actor"))
def test_add_actors(self): movie1 = Movie("Moana", 2016, 3) actors = [Actor("Auli'i Cravalho"), Actor("Dwayne Johnson"), Actor("Rachel House"), Actor("Temuera Morrison")] i = iter(movie1.actors) for actor in actors: movie1.add_actor(actor) next(i) == actor
def load_movies_actors_directors_genre_description(data_path: str, repo: MemoryRepository): genres = dict() actors = dict() directors = dict() for data_row in read_csv_file(os.path.join(data_path, "movies.csv")): movie_index = int(data_row[0]) title = data_row[1] try: movie_revenue = float(data_row[10]) except ValueError: movie_revenue = 0 list_of_genre_names = data_row[2].split(",") list_of_genres = [Genre(genre_name) for genre_name in list_of_genre_names] # can have duplicate movie_description = data_row[3] director = Director(data_row[4]) # can have duplicate list_of_actor_names = data_row[5].split(",") list_of_actor_names = [name.strip() for name in list_of_actor_names] list_of_actors = [Actor(actor_full_name) for actor_full_name in list_of_actor_names] # can have duplicate release_year = int(data_row[6]) runtime = int(data_row[7]) # Create Movie object movie = Movie( title=title, release_year=release_year, id=movie_index ) movie.set_revenue(revenue=movie_revenue) # Add movie to repo repo.add_movie(movie) # Add any new genres to repo for genre in list_of_genres: if genre not in genres.keys(): genres[genre] = list() genres[genre].append(movie_index) for actor in list_of_actors: if actor not in actors.keys(): actors[actor] = list() actors[actor].append(movie_index) # Add any new directors to dict if director not in directors: directors[director] = list() directors[director].append(movie_index) # Connect the current movie with its attributes add_movie_attributes(movie=movie, list_of_genres=list_of_genres, description=movie_description, list_of_actors=list_of_actors, director=director, runtime=runtime) # Associate Genres with Movies and add them to the repository for genre in genres.keys(): for current_movie_index in genres[genre]: movie = repo.get_movie_by_index(current_movie_index) movie.add_genre(genre) genre.add_Movie(movie) repo.add_genre(genre) # Associate Actors with Movies and add them to the repository for actor in actors.keys(): for current_movie_index in actors[actor]: movie = repo.get_movie_by_index(current_movie_index) movie.add_actor(actor) actor.add_played_movies(movie) repo.add_actor(actor) # Associate Directors with Movies and add them to the repositor for director in directors.keys(): for current_movie_index in directors[director]: movie = repo.get_movie_by_index(current_movie_index) movie.set_director(director) director.add_directed_movies(movie) repo.add_director(director)