def get_movies_by_actor(self, actor):
     # Fetch the Movies.
     try:
         movies = self._movie_actor[Actor(actor)]
     except KeyError:
         print("KeyError has been raised!")
         pass  # Ignore exception and return None.
     return movies
def test_repository_can_add_actor_dict(in_memory_repo):
    movie = Movie(
        "I am Legend",
        1981
    )
    actor = Actor("Will Smith")
    movie.actors=actor
    dict_actor = {}
    dict_actor[actor]=[movie]
    in_memory_repo.add_actor(dict_actor)
    assert in_memory_repo.get_actors() is dict_actor
Esempio n. 3
0
def load_movie_data(data_path: str, repo: MemoryRepository):
    actors = dict()
    genres = dict()
    directors = dict()

    for line in read_csv_file(os.path.join(data_path, 'Data1000Movies.csv')):
        movie_id = line[0]
        movie_genres = line[2].split(',')
        movie_director = line[4].strip()
        movie_actors = line[5].split(',')

        for actor in movie_actors:
            actor = actor.strip()
            if actor not in actors.keys():
                actors[actor] = list()
            actors[actor].append(movie_id)

        for genre in movie_genres:
            if genre not in genres.keys():
                genres[genre] = list()
            genres[genre].append(movie_id)

        if movie_director not in directors.keys():
            directors[movie_director] = list()
        directors[movie_director].append(movie_id)

        movie = Movie(
            title=line[1], description=line[3], year=line[6], runtime_minutes=line[7], rating=line[8],
            votes=line[9], revenue_millions=line[10], meta_score=line[11], id=movie_id
            )
        repo.add_movie(movie)

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

    for genre in genres.keys():
        genreobj = Genre(genre)
        for movie_id in genres[genre]:
            movie = repo.get_movie(movie_id)
            make_genre_association(movie, genreobj)
        repo.add_genre(genreobj)

    for director in directors.keys():
        directorobj = Director(director)
        for movie_id in directors[director]:
            movie = repo.get_movie(movie_id)
            make_director_association(movie, directorobj)
        repo.add_director(directorobj)
def test_init(actor):
    actor1 = Actor("Angelina Jolie")
    assert repr(actor1) == "<Actor Angelina Jolie>"
    actor2 = Actor("")
    assert actor2.actor_full_name is None
    actor3 = Actor(42)
    assert actor3.actor_full_name is None
    # check for equality of two Director object instances by comparing the names
    actor4 = Actor("Angelina Jolie")
    assert (actor1 == actor4) == True
    # implement a sorting order defined by the name
    a_list = []
    actor5 = Actor("Aatrox")
    a_list.append(actor1)
    a_list.append(actor5)
    a_list.sort()
    assert a_list[0] == actor5
    # defines which attribute is used for computing a hash value as used in set or dictionary keys
    actors = {actor1, actor4}
    assert len(actors) == 1
    # add coleague and check whether it is inside the list
    actor1.add_actor_colleague(actor5)
    assert actor1.check_if_this_actor_worked_with(actor5) == True
Esempio n. 5
0
def test_init(review):
    user = User('Steve', 'pass123')
    movie = Movie("Moana", 2016)
    review_text = "This movie was very enjoyable."
    rating = 8
    timestamp = datetime.today()
    review = Review(user, movie, review_text, timestamp, rating)

    ## test cr3
    assert repr(review.movie) == "<Movie Moana, 2016>"
    assert "Review: {}".format(
        review.review_text) == "Review: This movie was very enjoyable."
    assert "Rating: {}".format(review.rating) == "Rating: 8"

    ##test movie
    actor = Actor("Will Smith")
    review.movie = actor  ##illegal
    assert repr(review.movie) == "<Movie Moana, 2016>"
    movie = Movie("Will Smith smith Will Smith?", 1900)
    review.movie = movie  ##legal
    assert repr(review.movie) == "<Movie Will Smith smith Will Smith?, 1900>"

    ##test review text
    review.review_text = 1900  ##illegal
    assert review.review_text == "This movie was very enjoyable."
    review.review_text = "Will Smith will smith Will Smith"  ##legal
    assert review.review_text == "Will Smith will smith Will Smith"

    ##test rating
    review.rating = 10.1
    assert review.rating == 8
    review.rating = 9
    assert review.rating == 9

    ##test __eq__
    movie = Movie("Will Smith smith Will Smith?", 1900)
    review_text = "Will Smith will smith Will Smith"
    rating = 9
    review1 = Review(user, movie, review_text, timestamp, rating)
    assert review == review1
def test_properties(movie):
    movie1 = Movie("Moana", 2016)
    movie1.title = "Hokage"  # legal title
    assert repr(movie1) == "<Movie Hokage, 2016>"
    movie1.title = 1234  # illegal title
    assert repr(movie1) == "<Movie Hokage, 2016>"

    movie2 = Movie("Raikage", 2004)
    movie2.description = " Faster than speed of light for real "  # legal description
    assert movie2.description == "Faster than speed of light for real"
    movie2.description = ""  # illegal description
    assert movie2.description == "Faster than speed of light for real"

    movie3 = Movie("Moana", 2016)
    actor = Actor("Jacinda Adern")
    director = Director("Ron Clements")
    movie3.director = actor  #illegal director
    assert movie3.director is None
    movie3.director = director  #legal director
    assert repr(movie3.director) == "<Director Ron Clements>"

    actors = [
        Actor("Auli'i Cravalho"),
        Actor("Dwayne Johnson"),
        Actor("Rachel House"),
        Actor("Temuera Morrison")
    ]
    for actor in actors:
        movie3.add_actor(actor)  ##legal adding actor
    assert str(
        movie3.actors
    ) == "[<Actor Auli'i Cravalho>, <Actor Dwayne Johnson>, <Actor Rachel House>, <Actor Temuera Morrison>]"
    movie3.add_actor(director)  ##illegal adding actor
    assert str(
        movie3.actors
    ) == "[<Actor Auli'i Cravalho>, <Actor Dwayne Johnson>, <Actor Rachel House>, <Actor Temuera Morrison>]"
    movie3.remove_actor(Actor("Rachel House"))  ##legal remove actor
    assert str(
        movie3.actors
    ) == "[<Actor Auli'i Cravalho>, <Actor Dwayne Johnson>, <Actor Temuera Morrison>]"
    movie3.remove_actor(director)  ##illegal remove actor
    assert str(
        movie3.actors
    ) == "[<Actor Auli'i Cravalho>, <Actor Dwayne Johnson>, <Actor Temuera Morrison>]"
    movie3.actors = Actor("Dwayne Johnson")  ##test setter
    assert str(movie3.actors) == "[<Actor Dwayne Johnson>]"

    genres = [
        Genre("Comedy"),
        Genre("Action"),
        Genre("Disney"),
        Genre("Romantic")
    ]
    for genre in genres:
        movie3.add_genre(genre)  ##legal adding genre
    assert str(
        sorted(movie3.genres)
    ) == "[<Genre Action>, <Genre Comedy>, <Genre Disney>, <Genre Romantic>]"
    movie3.add_genre(director)  ##illegal adding genre
    assert str(
        movie3.genres
    ) == "[<Genre Comedy>, <Genre Action>, <Genre Disney>, <Genre Romantic>]"
    movie3.remove_genre(Genre("Romantic"))  ##legal remove genre
    assert str(
        movie3.genres) == "[<Genre Comedy>, <Genre Action>, <Genre Disney>]"
    movie3.remove_genre(director)  ##illegal remove genre
    assert str(
        movie3.genres) == "[<Genre Comedy>, <Genre Action>, <Genre Disney>]"
    movie3.genres = Genre("Comedy")  ##test setter
    assert str(movie3.genres) == "[<Genre Comedy>]"

    movie3.runtime_minutes = 107  ## legal runtime
    assert "Movie runtime: {} minutes".format(
        movie3.runtime_minutes) == "Movie runtime: 107 minutes"
    with pytest.raises(ValueError):
        movie3.runtime_minutes = -1  ## illegal runtime

    ###################################### test extension ######################################

    movie3.rank = 185  ## legal rank
    assert movie3.rank == 185
    with pytest.raises(ValueError):
        movie3.rank = -1  ## illegal rank

    movie3.rating = 8.1  ## legal rating
    assert movie3.rating == 8.1
    with pytest.raises(ValueError):
        movie3.rating = 11  ## illegal rating

    movie3.votes = 107583  ## legal votes
    assert movie3.votes == 107583
    with pytest.raises(ValueError):
        movie3.votes = -1  ## illegal votes

    movie3.revenue_millions = 510.365  ## legal revenue_millions
    assert movie3.revenue_millions == 510.365
    with pytest.raises(ValueError):
        movie3.revenue_millions = -510.365  ## illegal revenue_millions

    movie3.metascore = 91.6  ## legal metascore
    assert movie3.metascore == 91.6
    with pytest.raises(ValueError):
        movie3.metascore = -91.6  ## illegal metascore
def load_movies(data_path: str, repo: MemoryRepository):
    dataset_of_movies = []
    dataset_of_actors = []
    dataset_of_directors = []
    dataset_of_genres = []
    dictionary_genres = {}  # extension
    dictionary_actors = {}  # extension
    dictionary_directors = {}  # extension
    dictionary_years = {}
    ignore_row = 0
    for row in read_csv_file(os.path.join(data_path, 'Data1000Movies.csv')):
        if ignore_row == 0:
            ignore_row += 1
            continue
        rank = int(row[0])
        title = row[1]
        genres = row[2].split(',')
        description = row[3]
        director = Director(str(row[4]))
        actors = row[5].split(',')
        release_year = int(row[6])
        runtime_minutes = int(row[7])
        rating = float(row[8])
        votes = int(row[9])
        revenue_millions = row[10]
        metascore = row[11]
        image_hyperlink = row[12]

        # create movie object
        movie = Movie(title, release_year)
        dataset_of_movies.append(movie)
        if movie.year not in dictionary_years:
            dictionary_years[movie.year] = [movie]  # extension
        else:
            dictionary_years[movie.year].append(movie)

        # add actors
        for actor in actors:
            actor_obj = Actor(actor)
            movie.add_actor(actor_obj)
            if actor_obj not in dataset_of_actors:
                dataset_of_actors.append(actor_obj)
                dictionary_actors[actor_obj] = [movie]  # extension
            else:
                dictionary_actors[actor_obj].append(movie)  # extension

        # add director
        movie.director = director
        if director not in dataset_of_directors:
            dataset_of_directors.append(director)
            dictionary_directors[director] = [movie]
        else:
            dictionary_directors[director].append(movie)

        # add genre
        for genre in genres:
            genre_obj = Genre(genre)
            movie.add_genre(genre_obj)
            if genre_obj not in dataset_of_genres:
                dataset_of_genres.append(genre_obj)
                dictionary_genres[genre_obj] = [movie]  # extension
            else:
                dictionary_genres[genre_obj].append(movie)  # extension

        # add description
        movie.description = description

        # add runtime
        movie.runtime_minutes = runtime_minutes

        # add rank
        movie.rank = rank

        # add rating
        movie.rating = rating

        # add votes
        movie.votes = votes

        # add revenue_million
        movie.revenue_millions = revenue_millions

        # add metascore
        movie.metascore = metascore

        # add metascore
        movie.image_hyperlink = image_hyperlink

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

    repo.add_year(dictionary_years)
    repo.add_genres(dictionary_genres)
    repo.add_director(dictionary_directors)
    repo.add_actor(dictionary_actors)
def actor():
    return Actor('')
Esempio n. 9
0
def dict_to_actors(dict_list):
    actor_list = []
    for dict in dict_list:
        actor_list.append(Actor(dict.actor_name))
    return actor_list
Esempio n. 10
0
def actor():
    return Actor('Chris Pratt')