def test_movie_votes():
    # correct input
    movie1 = Movie("Moana", 2016)
    movie1.votes = 118151
    assert movie1.votes == 118151

    # incorrect input
    movie2 = Movie("Frozen", 2014)
    movie2.votes = "123456"
    assert movie2.votes is None
Beispiel #2
0
def load_movies_and_genres(data_path: str, repo: MemoryRepository):
    genres = dict()
    directors = dict()
    actors = dict()

    for data_row in read_csv_file(os.path.join(data_path,
                                               'Data1000Movies.csv')):

        movie_key = int(data_row[0])
        movie_genres = data_row[2].lower().split(",")
        movie_directors = data_row[4].lower().split(",")
        movie_actors = data_row[5].lower().split(",")

        # Add any new genres; associate the current movie with genres.
        for genre in movie_genres:
            if genre not in genres.keys():
                genres[genre] = list()
            genres[genre].append(movie_key)
        for director in movie_directors:
            if director not in directors.keys():
                directors[director] = list()
            directors[director].append(movie_key)
        for actor in movie_actors:
            if actor not in actors.keys():
                actors[actor] = list()
            actors[actor].append(movie_key)

        # Create Movie object.
        movie = Movie(title=data_row[1].lower(),
                      year=int(data_row[6]),
                      movie_id=int(data_row[0]))
        movie.description = data_row[3]
        movie.runtime_minutes = int(data_row[7])
        movie.rating = float(data_row[8])
        movie.votes = float(data_row[9])
        if data_row[10] != 'N/A':
            movie.revenue = f"{data_row[10]}Millions"
        if data_row[11] != 'N/A':
            movie.metascore = data_row[11]

        # Add the Movie to the repository.
        repo.add_movie(movie)

    # Create Genre objects, associate them with Movies and add them to the repository.
    for genre_name in genres.keys():
        genre = Genre(genre_name)
        for movie_id in genres[genre_name]:
            movie = repo.get_movie(movie_id)
            make_genre_association(movie, genre)
        repo.add_genre(genre)

    for director_name in directors.keys():
        director = Director(director_name)
        for movie_id in directors[director_name]:
            movie = repo.get_movie(movie_id)
            make_director_association(movie, director)
        repo.add_director(director)

    for actor_name in actors.keys():
        actor = Actor(actor_name)
        for movie_id in actors[actor_name]:
            movie = repo.get_movie(movie_id)
            make_actor_association(movie, actor)
        repo.add_actor(actor)