Пример #1
0
def test_repository_can_add_a_director(session_factory):
    repo = SqlAlchemyRepository(session_factory)
    director = Director("Fred")

    repo.add_director(director)

    assert director in repo.get_directors()
def test_repository_returns_an_empty_list_for_non_existent_genre(
        session_factory):
    repo = SqlAlchemyRepository(session_factory)

    movie_ranks = repo.get_movie_ranks_for_genre('United States')

    assert len(movie_ranks) == 0
def test_repository_returns_an_empty_list_for_non_existent_ids(
        session_factory):
    repo = SqlAlchemyRepository(session_factory)

    movies = repo.get_movies_by_rank([0, 199])

    assert len(movies) == 0
def test_repository_can_retrieve_movie_count(session_factory):
    repo = SqlAlchemyRepository(session_factory)

    number_of_movies = repo.get_number_of_movies()

    # Check that the query returned 10 Movies.
    assert number_of_movies == 10
def test_repository_returns_date_of_previous_movie(session_factory):
    repo = SqlAlchemyRepository(session_factory)

    movie = repo.get_movie(6)
    previous_date = repo.get_year_of_previous_movie(movie)

    assert previous_date == 2016
def test_repository_returns_date_of_next_movie(session_factory):
    repo = SqlAlchemyRepository(session_factory)

    movie = repo.get_movie(3)
    next_date = repo.get_year_of_next_movie(movie)

    assert next_date == 2016
def test_get_movies_by_genre(session_factory):
    repository = SqlAlchemyRepository(session_factory)
    movie1 = Movie("Maquia", 2018)
    movie2 = Movie("Ice Age", 2002)
    genre1 = Genre("Japanese Anime")
    genre2 = Genre("Emotional")
    repository.add_genre(genre1)
    repository.add_genre(genre2)
    movie1.description = "The Iorph people live far away from the world of humans, spending their days weaving " \
                         "Hibiol, a special cloth serving as a written chronicle every time. They age more slowly " \
                         "than humans and have the capacity to live for hundreds of years."
    movie1.runtime_minutes = 115
    movie2.description = "A Cronopio known as Scrat attempts to find a place to store his acorn for the winter. " \
                         "Eventually, as he tries to stomp it into the ground, he inadvertently causes a large " \
                         "crack to form in the ice that extends for miles before setting off a large avalanche " \
                         "which nearly crushes him."
    movie2.runtime_minutes = 81
    movie1.add_genre(genre1)
    movie1.add_genre(genre2)
    movie2.add_genre(genre2)
    repository.add_movie(movie1)
    repository.add_movie(movie2)
    assert repository.get_movies_by_genre("Japanese Anime") == [movie1]
    assert repository.get_movies_by_genre("xyz") == []
    assert repository.get_movies_by_genre("Emotional") == [movie2, movie1]
    assert repository.get_movies_by_genre(1) == []
def test_repository_does_not_retrieve_movie_for_non_existent_id(
        session_factory):
    repo = SqlAlchemyRepository(session_factory)

    movies = repo.get_movies_by_rank([2, 209])

    assert len(movies) == 1
    assert movies[0].title == 'Prometheus'
def test_repository_returns_none_when_there_are_no_previous_movies(
        session_factory):
    repo = SqlAlchemyRepository(session_factory)

    movie = repo.get_movie(1)
    previous_date = repo.get_year_of_previous_movie(movie)

    assert previous_date is None
def test_repository_returns_none_when_there_are_no_subsequent_movies(
        session_factory):
    repo = SqlAlchemyRepository(session_factory)

    movie = repo.get_movie(10)
    next_date = repo.get_year_of_next_movie(movie)

    assert next_date is None
def test_repository_can_add_a_genre(session_factory):
    repo = SqlAlchemyRepository(session_factory)

    genre = Genre('Motoring')
    genre.tagged_movies = None
    repo.add_genre(genre)

    assert genre in repo.get_genres()
def test_repository_does_not_add_a_comment_without_a_user(session_factory):
    repo = SqlAlchemyRepository(session_factory)

    movie = repo.get_movie(2)
    comment = Comment(None, movie, "Trump's onto it!", datetime.today())

    with pytest.raises(RepositoryException):
        repo.add_comment(comment)
Пример #13
0
def test_repository_can_retrieve_a_movie(session_factory):
    repo = SqlAlchemyRepository(session_factory)

    movie = repo.get_movie(1)

    assert movie.title == "Guardians of the Galaxy"
    assert movie.year == 2014
    assert movie.runtime_minutes == 121
    assert movie.description == "A group of intergalactic criminals are forced to work together to stop a fanatical warrior from taking control of the universe."
def test_repository_can_get_movies_by_ranks(session_factory):
    repo = SqlAlchemyRepository(session_factory)

    movies = repo.get_movies_by_rank([2, 5, 6])

    assert len(movies) == 3
    assert movies[0].title == 'Prometheus'
    assert movies[1].title == "Suicide Squad"
    assert movies[2].title == 'The Great Wall'
Пример #15
0
def test_repository_can_add_a_movie(session_factory):
    repo = SqlAlchemyRepository(session_factory)

    movie1 = Movie("Sam I am", 2000)
    movie1.description = "Sam is sam he is"
    movie1.director = Director('James')
    movie1.runtime_minutes = 140
    repo.add_movie(movie1)
    movie = repo.get_movie(1001)

    assert movie == Movie('Sam I am', 2000)
def test_get_actors_by_name(session_factory):
    repository = SqlAlchemyRepository(session_factory)
    repository.add_actor(Actor("Ikue Ootani"))
    repository.add_actor(Actor("Ikue Arai"))
    assert repository.get_actors_by_name("ikue ootani") == [
        Actor("Ikue Ootani")
    ]
    assert repository.get_actors_by_name("xyz") == []
    assert repository.get_actors_by_name("ikue ") == [
        Actor("Ikue Arai"), Actor("Ikue Ootani")
    ]
    assert repository.get_actors_by_name(1) == []
def test_repository_can_retrieve_movies_by_year(session_factory):
    repo = SqlAlchemyRepository(session_factory)

    movies = repo.get_movies_by_year(2014)

    # Check that the query returned 3 Movies.
    assert len(movies) == 1

    # these movies are no jokes...
    movies = repo.get_movies_by_year(2012)

    # Check that the query returned 5 Movies.
    assert len(movies) == 1
def test_add_and_get_users(session_factory):
    repository = SqlAlchemyRepository(session_factory)
    assert repository.get_users() == []
    repository.add_user(User("Brian Marshall", "123"))
    repository.add_user(User("Mark Tremonti", "456"))
    repository.add_user(User("Mark Tremonti", "456"))
    assert repository.get_user("Brian Marshall") == User(
        "Brian Marshall", "123")
    assert repository.get_user("Scott Phillips") is None
    assert repository.get_users() == [
        User("Brian Marshall", "123"),
        User("Mark Tremonti", "456")
    ]
def test_add_and_get_genres(session_factory):
    repository = SqlAlchemyRepository(session_factory)
    repository.add_genre(Genre("Japanese Anime"))
    repository.add_genre(Genre("Japanese Anime"))
    repository.add_genre(Genre("Emotional"))
    genres = repository.get_genres()
    assert Genre("Emotional") in genres and Genre("Japanese Anime") in genres
def test_repository_can_retrieve_genres(session_factory):
    repo = SqlAlchemyRepository(session_factory)

    genres = repo.get_genres()

    assert len(genres) == 14

    genre_one = [genre for genre in genres if genre.genre_name == 'Action'][0]
    genre_two = [genre for genre in genres
                 if genre.genre_name == 'Adventure'][0]
    genre_three = [genre for genre in genres
                   if genre.genre_name == 'Comedy'][0]
    genre_four = [genre for genre in genres if genre.genre_name == 'Family'][0]

    assert genre_one is not None
    assert genre_two is not None
    assert genre_three is not None
    assert genre_four is not None
def test_get_directors_by_name(session_factory):
    repository = SqlAlchemyRepository(session_factory)
    repository.add_director(Director("Mari Okada"))
    repository.add_director(Director("Mari Omada"))
    assert repository.get_directors_by_name("mari ok") == [
        Director("Mari Okada")
    ]
    assert repository.get_directors_by_name("xyz") == []
    assert repository.get_directors_by_name("mari o") == [
        Director("Mari Okada"), Director("Mari Omada")
    ]
    assert repository.get_directors_by_name(1) == []
Пример #22
0
def test_repository_can_add_a_review(session_factory):
    repo = SqlAlchemyRepository(session_factory)
    user = User('aidan', 'hi1234')
    movie = Movie("Asdsa", 2014)
    movie.description = "Sam is sam he is"
    movie.director = Director('James')
    movie.runtime_minutes = 140
    review = make_review("Wow good movie", user, movie, 9)

    repo.add_user(user)
    repo.add_movie(movie)
    repo.add_review(review)

    reviews = repo.get_reviews()
    assert len(reviews) == 1
    assert review in reviews
def test_add_and_get_reviews(session_factory):
    repository = SqlAlchemyRepository(session_factory)
    movie1 = repository.get_movie("Moana", 2016)
    movie2 = repository.get_movie("Inception", 2010)
    review1 = Review(movie1, "Very good", 8)
    review2 = Review(movie2, "Excellent", 10)
    repository.add_review(review1)
    repository.add_review(review2)
    assert repository.get_reviews() == [review1, review2]
def test_repository_can_add_a_comment(session_factory):
    repo = SqlAlchemyRepository(session_factory)

    user = repo.get_user('thorke')
    movie = repo.get_movie(2)
    comment = make_comment("Trump's onto it!", user, movie)

    repo.add_comment(comment)

    assert comment in repo.get_comments()
def test_repository_can_add_a_user(session_factory):
    repo = SqlAlchemyRepository(session_factory)

    user = User('Dave', '123456789')
    repo.add_user(user)

    repo.add_user(User('Martin', '123456789'))

    user2 = repo.get_user('Dave')

    assert user2 == user and user2 is user
def test_repository_can_retrieve_movie(session_factory):
    repo = SqlAlchemyRepository(session_factory)

    movie = repo.get_movie(1)

    # Check that the Movie has the expected title.
    assert movie.title == 'Guardians of the Galaxy'

    # Check that the Movie is commented as expected.
    comment_one = [
        comment for comment in movie.comments
        if comment.comment == 'This movie is okay.'
    ][0]
    comment_two = [
        comment for comment in movie.comments
        if comment.comment == 'Yeah Freddie, it is good.'
    ][0]

    assert comment_one.user.username == 'fmercury'
    assert comment_two.user.username == "thorke"

    # Check that the Movie is tagged as expected.
    assert movie.genres == 'Action,Adventure,Sci-Fi'
def test_get_movies_by_title(session_factory):
    repository = SqlAlchemyRepository(session_factory)
    assert repository.get_movies_by_title("moana") == [Movie("Moana", 2016)]
    assert repository.get_movies_by_title("xyz") == []
    assert repository.get_movies_by_title("avengers") == [
        Movie("Avengers: Age of Ultron", 2015),
        Movie("The Avengers", 2012)
    ]
    assert repository.get_movies_by_title(1) == []
def test_add_and_get_movies(session_factory):
    repository = SqlAlchemyRepository(session_factory)
    maquia = Movie("Maquia", 2018)
    iceage = Movie("Ice Age", 2002)
    maquia.description = "The Iorph people live far away from the world of humans, spending their days weaving " \
                         "Hibiol, a special cloth serving as a written chronicle every time. They age more slowly " \
                         "than humans and have the capacity to live for hundreds of years."
    maquia.runtime_minutes = 115
    iceage.description = "A Cronopio known as Scrat attempts to find a place to store his acorn for the winter. " \
                         "Eventually, as he tries to stomp it into the ground, he inadvertently causes a large " \
                         "crack to form in the ice that extends for miles before setting off a large avalanche " \
                         "which nearly crushes him."
    iceage.runtime_minutes = 81
    repository.add_movie(maquia)
    repository.add_movie(iceage)
    repository.add_movie(iceage)
    assert repository.get_movie("Maquia", 2018) == Movie("Maquia", 2018)
    assert repository.get_movie("A Silent Voice", 2016) is None
    movies = repository.get_movies()
    assert Movie("Ice Age", 2002) in movies and Movie("Maquia", 2018) in movies
Пример #29
0
def test_repository_does_not_add_a_review_without_a_user(session_factory):
    repo = SqlAlchemyRepository(session_factory)
    movie = Movie("Asdsa", 2014)
    movie.description = "Sam is sam he is"
    movie.director = Director('James')
    movie.runtime_minutes = 140
    repo.add_movie(movie)
    review = Review(None, movie, "Wow", 8, datetime.today())
    with pytest.raises(RepositoryException):
        repo.add_review(review)
Пример #30
0
def test_repository_does_not_add_a_review_without_a_movie_properly_attached(
        session_factory):
    repo = SqlAlchemyRepository(session_factory)
    user = User('aidan', 'hi1234')

    review = Review(user, None, "Wow good movie", 9, datetime.today())
    user.add_review(review)
    repo.add_user(user)
    with pytest.raises(RepositoryException):
        repo.add_review(review)