Exemplo n.º 1
0
def test_hash():
    director1_hash = Director("Taika Waititi").__hash__()
    director2_hash = Director("Taika Waititi").__hash__()
    director3_hash = Director("David").__hash__()

    assert director1_hash == director2_hash
    assert director1_hash != director3_hash
Exemplo n.º 2
0
def test_get_all_directors(populated_memory_repo):
    directors = populated_memory_repo.get_all_directors()
    assert sorted(directors) == sorted([
        Director("James Gunn"),
        Director("Burr Steers"),
        Director("Barry Sonnenfeld"),
        Director("Test Director1"),
        Director("Test Director2")
    ])
Exemplo n.º 3
0
def test_eq():
    director1 = Director("Taika Waititi")
    director2 = Director("Taika Waititi")
    assert director1 == director2

    director3 = Director("David")
    assert not (director1 == director3)

    director4 = "Taika Waititi"
    assert not (director1 == director4)
Exemplo n.º 4
0
def test_init():
    director1 = Director("Taika Waititi")
    assert repr(director1) == "<Director Taika Waititi>"
    director2 = Director("")
    assert director2.director_full_name is None
    assert repr(director2) == "<Director None>"
    director3 = Director(42)
    assert director3.director_full_name is None
    assert repr(director3) == "<Director None>"
    director4 = Director(0.2)
    assert director4.director_full_name is None
    assert repr(director4) == "<Director None>"
Exemplo n.º 5
0
def test_lt():
    director1 = Director("Taika Waititi")
    director2 = Director("Taika Waititi")
    assert not (director1 < director2)

    director3 = Director("Aaaaa")
    assert (director3 < director1)
    director4 = Director("aaaaa")
    assert (director3 < director4)

    director5 = "aaaaa"
    with pytest.raises(TypeError):
        assert not (director5 < director3)
Exemplo n.º 6
0
def test_director():
    movie = Movie("Sharknado", 2020)
    director = Director("Anthony Ferrante")
    movie.director = director
    assert movie.director == director
    assert repr(movie.director) == "<Director Anthony Ferrante>"

    movie = Movie("Sharknado", 2020)
    director = "Anthony Ferrante"
    movie.director = director
    assert movie.director == None
Exemplo n.º 7
0
def test_populate_repo(empty_memory_repo, test_movie_file, test_user_file, test_review_file):
    populate_repo(empty_memory_repo, test_movie_file, test_user_file, test_review_file)

    # Check that movies we expect have been added to the private __movies list variable
    assert Movie("Guardians of the Galaxy", 2014) in empty_memory_repo._MemoryRepository__movies
    assert Movie("17 Again", 2009) in empty_memory_repo._MemoryRepository__movies
    assert Movie("Nine Lives", 2016) in empty_memory_repo._MemoryRepository__movies

    # Check that the movies have the expected attributes
    assert empty_memory_repo._MemoryRepository__movies[1].description == "A group of intergalactic criminals are forced to work together to stop a fanatical warrior from taking control of the universe."
    assert empty_memory_repo._MemoryRepository__movies[1].director == Director("James Gunn")
    assert sorted(empty_memory_repo._MemoryRepository__movies[1].actors) == sorted([Actor("Chris Pratt"), Actor("Vin Diesel"), Actor("Bradley Cooper"), Actor("Zoe Saldana")])
    assert sorted(empty_memory_repo._MemoryRepository__movies[1].genres) == sorted([Genre("Action"), Genre("Adventure"), Genre("Sci-Fi")])
    assert empty_memory_repo._MemoryRepository__movies[1].runtime_minutes == 121
    assert empty_memory_repo._MemoryRepository__movies[1].rating == 8.1
    assert empty_memory_repo._MemoryRepository__movies[1].revenue_in_millions == 333.13
    assert empty_memory_repo._MemoryRepository__movies[1].metascore == 76
    assert empty_memory_repo._MemoryRepository__movies[1].image_link == 'https://m.media-amazon.com/images/M/MV5BMTAwMjU5OTgxNjZeQTJeQWpwZ15BbWU4MDUxNDYxODEx._V1_SX300.jpg'

    assert len(empty_memory_repo._MemoryRepository__users) == 2
    assert len(empty_memory_repo._MemoryRepository__reviews) == 2
    assert len(empty_memory_repo._MemoryRepository__movies[0].reviews) == 2
Exemplo n.º 8
0
def test_make_movie_director_association():
    movie = Movie("Test", 2020)
    director = Director("Test")
    make_movie_director_association(movie, director)
    assert director == movie.director
    assert movie in director.directed_movies
Exemplo n.º 9
0
def test_has_directed_movie(movie):
    director = Director("Taika Waititi")
    director.add_movie(movie)
    assert director.has_directed_movie(movie)
Exemplo n.º 10
0
def test_add_movie(movie):
    director = Director("Taika Waititi")
    director.add_movie(movie)
    assert director.directed_movies == [movie]
Exemplo n.º 11
0
def test_get_director(populated_memory_repo):
    director = populated_memory_repo.get_director("James Gunn")
    assert director == Director("James Gunn")
Exemplo n.º 12
0
])
def test_get_movies_by_release_year(populated_memory_repo, movie):
    movies = populated_memory_repo.get_movies_by_release_year(movie.release_year)
    assert  movies == [movie]

def test_get_movies_by_release_year_multiple(populated_memory_repo):
    movies = populated_memory_repo.get_movies_by_release_year(2014)
    assert  movies == [Movie("Guardians of the Galaxy", 2014), Movie("Test", 2014)]

def test_get_movies_by_release_year_non_existent(populated_memory_repo):
    assert populated_memory_repo.get_movies_by_release_year(1999) == []
    assert populated_memory_repo.get_movies_by_release_year("1999") == []
    assert populated_memory_repo.get_movies_by_release_year(None) == []

@pytest.mark.parametrize("director", [
    Director("Test1"),
    Director("Test2"),
])
def test_add_director(empty_memory_repo, director):
    empty_memory_repo.add_director(director)
    assert empty_memory_repo._MemoryRepository__directors[director.director_full_name] == director

def test_add_incorrect_director(empty_memory_repo):
    empty_memory_repo.add_director("Test")
    empty_memory_repo.add_director(None)
    assert len(empty_memory_repo._MemoryRepository__directors) == 0

@pytest.mark.parametrize("actor", [
    Actor("Test1"),
    Actor("Test2"),
])
Exemplo n.º 13
0
def load_movie_file(repository: MemoryRepository, filename: str):
    with open(filename, mode="r", encoding="utf-8-sig") as csvfile:
        reader = csv.DictReader(csvfile)

        directors = dict()
        genres = dict()
        actors = dict()

        for row in reader:
            # Create and populate Movie object
            movie = Movie(
                title=row["Title"].strip(),
                release_year=int(row["Year"])
            )
            movie.description = row["Description"].strip()
            movie.runtime_minutes = int(row["Runtime (Minutes)"])
            movie.rating = float(row["Rating"])
            movie.votes = int(row["Votes"])
            movie.revenue_in_millions = row["Revenue (Millions)"]
            movie.metascore = row["Metascore"]
            if "Image URL" in row:
                movie.image_link = row["Image URL"]

            # Add bidirectional link between director and movie
            director_name=row["Director"].strip()
            try:
                director = directors[director_name]
            except KeyError:
                director = Director(director_full_name=director_name)
                directors[director_name] = director
            make_movie_director_association(movie, director)

            # Add bidirectional link between movie and genres
            for name in row["Genre"].split(","):
                genre_name = name.strip()
                try:
                    genre = genres[genre_name]
                except KeyError:
                    genre = Genre(genre_name=genre_name)
                    genres[genre_name] = genre
                make_movie_genre_association(movie, genre)

            # Add bidirectional link between actors and movies
            for name in row["Actors"].split(","):
                actor_name = name.strip()
                try:
                    actor = actors[actor_name]
                except KeyError:
                    actor = Actor(actor_full_name=actor_name)
                    actors[actor_name] = actor
                make_movie_actor_association(movie, actor)

            # Add movie object to repository
            repository.add_movie(movie)
        
        # Add directors to repository
        for director in directors.values():
            repository.add_director(director)
        
        # Add genres to repository
        for genre in genres.values():
            repository.add_genre(genre)

        # Add actors to repository
        for actor in actors.values():
            repository.add_actor(actor)