示例#1
0
def test_equal():
    user1 = User('Martin', 'pw12345')
    user2 = User('Ian', 'pw67890')
    user3 = User('Martin', 'pw12345')

    assert (user1 == user2) == False
    assert (user1 == user3) == True
示例#2
0
def test_user_repr():
    user1 = User("rsin774", "password")
    user2 = User("", "pw")
    user3 = User("user", "")
    assert repr(user1) == "<User rsin774>"
    assert repr(user2) == "<User None>"
    assert repr(user3) == "<User user>"
示例#3
0
def test_user_invalid_construction():
    user1 = User('', 'pw67890')
    assert user1.user_name is None
    assert user1.password == 'pw67890'
    user2 = User('Daniel', 12345)
    assert user2.user_name == 'daniel'
    assert user2.password is None
示例#4
0
def test_repository_does_not_add_a_review_without_a_movie_properly_attached(in_memory_repo):
    user = User('aidan', 'hi1234')
    movie = Movie("asdsa", 2014)
    review = Review(user, movie, "Wow good movie", 9, datetime.today())
    user.add_review(review)
    with pytest.raises(RepositoryException):
        in_memory_repo.add_review(review)
示例#5
0
def test_init():
    user1 = User('Martin', 'pw12345')
    user2 = User('Ian', 'pw67890')
    user3 = User('Daniel', 'pw87465')

    assert repr(user1) == "<User martin>"
    assert repr(user2) == "<User ian>"
    assert repr(user3) == "<User daniel>"
示例#6
0
def test_user_equals_operator():
    user1 = User("rsin774", "password")
    user2 = User("rsin774", "")
    user3 = User("", "password")
    user4 = User("rsin774", "password")
    assert (user1 == user2) is True
    assert (user1 == user3) is False
    assert (user1 == user4) is True
示例#7
0
def test_add_review_without_movie_attached(in_memory_repo):
    user = User("Martin", "pw12345")
    review = Review(user, Movie("Guardians of the Galaxy", 2014), "Wow!", 9)
    user.add_review(review)

    with pytest.raises(RepositoryException):
        in_memory_repo.add_review(
            Review(None, Movie("Guardians of the Galaxy", 2014), "Wow!", 9))
示例#8
0
def test_loading_of_users(empty_session):
    users = list()
    users.append(("Andrew", "1234"))
    users.append(("Cindy", "1111"))
    insert_users(empty_session, users)

    expected = [User("Andrew", "1234"), User("Cindy", "999")]
    assert empty_session.query(User).all() == expected
示例#9
0
def test_password():
    user1 = User('Martin', 'pw12345')
    assert user1.password == "pw12345"

    user2 = User('Ian', 1)
    assert user2.password == None

    user3 = User('Daniel', "")
    assert user3.password == None
def test_repository_can_add_and_get_reviews(in_memory_repo):
    review = Review(User("Bob12", "password888"), Movie("Ice Age", 2002),
                    "Great", 8)
    in_memory_repo.add_review(review)

    reviews = in_memory_repo.get_reviews()
    assert reviews[0].user == User("Bob12", "password888")
    assert reviews[0].movie == Movie("Ice Age", 2002)
    assert reviews[0].review_text == "Great"
    assert reviews[0].rating == 8
示例#11
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)
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
示例#13
0
def test_repository_can_add_a_user(session_factory):
    repo = SqlAlchemyRepository(session_factory)

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

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

    user2 = repo.get_user('Liam')

    assert user2 == user and user2 is user
示例#14
0
def test_user_name():
    user1 = User('Martin', 'pw12345')
    assert user1.user_name == "martin"

    user2 = User('         Ian       ', 'pw67890')
    assert user2.user_name == "ian"

    user3 = User("", "pw87465")
    assert user3.user_name == None

    user4 = User(1, "pw87465")
    assert user4.user_name == None
示例#15
0
def in_memory_repo():
    repo = MemoryRepository()
    dirname = os.path.dirname(__file__)
    filename = os.path.join(dirname, 'data')
    populate(filename, repo)
    repo.add_user(User("shaun", '12345'))
    return repo
示例#16
0
def review():
    user = User("rsin774", "password")
    movie = Movie("Moana", 2016)
    review_text = "This movie was very enjoyable."
    rating = 8
    timestamp = datetime.now()
    return Review(user, movie, review_text, rating, timestamp)
示例#17
0
def test_review_repr():
    user = User("rsin774", "password")
    movie = Movie("Moana", 2016)
    review_text = "This movie was very enjoyable."
    rating = 8
    timestamp = datetime.now()
    review = Review(user, movie, review_text, rating, timestamp)
    assert review.__repr__() == "User: rsin774\nReview: This movie was very enjoyable.\nRating: 8"
示例#18
0
def test_repository_add_review(in_memory_repo):
    user = User('rsin774', 'password')
    movie = Movie('Guardians of the Galaxy', 2014)
    review = make_review(user, movie, "Great!", 10, datetime.now())

    in_memory_repo.add_review(review)

    assert review in in_memory_repo.get_reviews()
示例#19
0
def test_repository_can_add_a_review(in_memory_repo):
    user = User('aidan', 'hi1234')
    movie = Movie("asdsa", 2014)
    review = make_review("Wow good movie", user, movie, 9)
    in_memory_repo.add_review(review)
    reviews = in_memory_repo.get_reviews()
    assert len(reviews) == 1
    assert review in reviews
示例#20
0
def test_repository_get_user(in_memory_repo):
    # Existing user
    user = in_memory_repo.get_user('rsin774')
    assert user == User('rsin774', 'password')

    # Non-existent user
    user = in_memory_repo.get_user('doesntexist')
    assert user is None
示例#21
0
def test_add_and_get_reviews(in_memory_repo):
    assert len(in_memory_repo.get_reviews()) == 0

    review = make_review("Great movie", User("Martin", "pw12345"),
                         Movie("Guardians of the Galaxy", 2014), 8)

    in_memory_repo.add_review(review)
    assert review in in_memory_repo.get_reviews()
示例#22
0
def test_review_construction(review):
    user = User("rsin774", "password")
    movie = Movie("Moana", 2016)
    assert review.user == user
    assert review.movie == movie
    assert review.review_text == "This movie was very enjoyable."
    assert review.rating == 8
    assert review.timestamp is not None
示例#23
0
def load_users(data_path: str, repo: MemoryRepository):
    users = dict()

    for data_row in read_csv_file(os.path.join(data_path, 'users.csv')):
        user = User(username=data_row[1],
                    password=generate_password_hash(data_row[2]))
        repo.add_user(user)
        users[data_row[0]] = user
    return users
示例#24
0
def add_user(username: str, password: str, repo: AbstractRepository):
    # check that given username is available
    user = repo.get_user(username)
    if user is not None:
        raise NameNotUniqueException

    # if available generate password hash and store new user with hash
    password_hash = generate_password_hash(password)

    user = User(username, password_hash)
    repo.add_user(user)
示例#25
0
def set_rating(movie_id: int, rating: int, username: str,
               repo: AbstractRepository):
    user = repo.get_user(username)
    if user is None:
        user = User('Guest account', 'defaultpass')

    movie = repo.get_movie(movie_id)
    if movie is None:
        raise NonExistentMovieException

    repo.set_rating(rating, user, movie)
示例#26
0
def add_user(username: str, password: str, repo: AbstractRepository):
    # Check that the given username is available.
    user = repo.get_user(username)
    if user is not None:
        raise NameNotUniqueException

    # Encrypt password so that the database doesn't store passwords 'in the clear'.
    password_hash = generate_password_hash(password)

    # Create and store the new User, with password encrypted.
    user = User(username, password_hash)
    repo.add_user(user)
示例#27
0
def test_can_get_reviews_for_movie(in_memory_repo):
    movie_id = 1

    # adding review to repo
    user = User("shaun", '12345')
    review = make_review("Wow", user, in_memory_repo.get_movie(1), 10)
    in_memory_repo.add_review(review)

    # testing retrieval of review
    reviews = movies_services.get_reviews_for_movie(movie_id, in_memory_repo)
    assert len(reviews) == 1
    assert reviews[0]["review_text"] == "Wow"
示例#28
0
def add_user(username: str, password: str, repo: AbstractRepository):
    # Check that the username is not taken
    user = repo.get_user(username)
    if user is not None:
        raise NameNotUniqueException

    # Encrypt password
    password_hash = generate_password_hash(password)

    # Create and store the new User with encrypted password
    user = User(username, password_hash)
    repo.add_user(user)
示例#29
0
def test_user_time_spent():
    user1 = User('Martin', 'pw12345')
    user1.time_spent_watching_movies_minutes = 100
    assert user1.time_spent_watching_movies_minutes == 100
    user2 = User('Ian', 'pw67890')
    user2.time_spent_watching_movies_minutes = -100
    assert user2.time_spent_watching_movies_minutes == 0
示例#30
0
def client():
    my_app = create_app({
        'TESTING': True,  # Set to True during testing.
        'REPOSITORY':
        'memory',  # Set to 'memory' or 'database' depending on desired repository.
        'TEST_DATA_PATH':
        TEST_DATA_PATH_MEMORY,  # Path for loading test data into the repository.
        'WTF_CSRF_ENABLED':
        False  # test_client will not send a CSRF token, so disable validation.
    })
    repo1.repo_instance.add_user(User("shaun",
                                      generate_password_hash("12345")))
    return my_app.test_client()