def test_movie_without_likes_is_not_recommended(service, movies_repo):
    user = User('root')
    movie_a = Movie('a')
    movie_b = Movie('b')

    movies_repo.store(movie_a)
    movies_repo.store(movie_b)

    user.add_to_liked_movies(movie_b)

    result = service.recommend(user)

    assert_recommendations(result, [])
Beispiel #2
0
def test_user_can_follow_another_user(client, users_repo):
    eve = User(name='Eve')
    adam = User(name='Adam')
    users_repo.store(eve)
    users_repo.store(adam)

    response = client.post('/users/{}/follow'.format(eve.pk),
                           data=json.dumps({'pk': adam.pk}),
                           content_type='application/json')
    assert response.status_code == 200

    response = client.get('/users/{}'.format(eve.pk))
    assert response.status_code == 200

    followed_users = json.loads(response.data)['followed_users']
    followed_users_names = [u['name'] for u in followed_users]

    assert 'Adam' in followed_users_names
def test_liked_movie_is_not_included(service, movies_repo):
    user = User('root')
    other = User('other')

    movie_a = Movie('a')
    movie_b = Movie('b')

    movies_repo.store(movie_a)
    movies_repo.store(movie_b)

    user.add_to_liked_movies(movie_a)
    other.add_to_liked_movies(movie_b)

    result = service.recommend(user)

    assert_recommendations(result, [movie_b])
Beispiel #4
0
def test_user_can_unfollow_user(client, users_repo):
    eve = User(name='Eve')
    adam = User(name='Adam')
    eve.add_to_followed_users(adam)
    users_repo.store(eve)
    users_repo.store(adam)

    response = client.delete('/users/{}/follow/{}'.format(eve.pk, adam.pk))
    assert response.status_code == 204
    assert len(eve.get_followed_users()) == 0
def test_globally_liked_movies_are_more_influential(service, movies_repo):
    user = User('root')

    movie_a = Movie('a')
    movie_b = Movie('b')
    movie_c = Movie('c')

    movies_repo.store(movie_a)
    movies_repo.store(movie_b)
    movies_repo.store(movie_c)

    user_a = User('a')
    user_b = User('b')

    user_a.add_to_liked_movies(movie_a)
    user_a.add_to_liked_movies(movie_b)
    user_b.add_to_liked_movies(movie_b)

    result = service.recommend(user)

    assert_recommendations(result, [movie_b, movie_a])
Beispiel #6
0
def followed_user(users_repo):
    user = User('Andrew')
    users_repo.store(user)
    return user
Beispiel #7
0
def user(users_repo):
    user = User('John')
    users_repo.store(user)
    return user
def test_similar_users_are_more_influential(service, movies_repo):
    movie_a = Movie('a')
    movie_b = Movie('b')
    movie_c = Movie('c')

    movies_repo.store(movie_a)
    movies_repo.store(movie_b)
    movies_repo.store(movie_c)

    user = User('root')
    followed_user_1 = User('followed 1')
    followed_user_2 = User('followed 2')

    user.add_to_followed_users(followed_user_1)
    user.add_to_followed_users(followed_user_2)

    followed_user_1.add_to_liked_movies(movie_a)
    followed_user_2.add_to_liked_movies(movie_b)
    followed_user_2.add_to_liked_movies(movie_c)

    # User shares a common movie with followed_user_2
    user.add_to_liked_movies(movie_c)

    result = service.recommend(user)

    assert_recommendations(result, [movie_b, movie_a])
def test_nested_follows_are_more_influential(service, movies_repo):
    movie_a = Movie('a')
    movie_b = Movie('b')

    movies_repo.store(movie_b)
    movies_repo.store(movie_a)

    user = User('root')
    followed_user_1 = User('followed 1')
    followed_user_2 = User('followed 2')

    user.add_to_followed_users(followed_user_1)
    user.add_to_followed_users(followed_user_2)
    followed_user_2.add_to_followed_users(followed_user_1)

    followed_user_1.add_to_liked_movies(movie_a)
    followed_user_2.add_to_liked_movies(movie_b)

    result = service.recommend(user)

    assert_recommendations(result, [movie_a, movie_b])
def test_followed_users_movie_is_more_influential(service, movies_repo):
    user = User('root')
    other_user = User('other')
    followed_user = User('followed')

    movie_a = Movie('a')
    movie_b = Movie('b')

    movies_repo.store(movie_a)
    movies_repo.store(movie_b)

    user.add_to_followed_users(followed_user)

    followed_user.add_to_liked_movies(movie_a)
    other_user.add_to_liked_movies(movie_b)

    result = service.recommend(user)

    assert_recommendations(result, [movie_a, movie_b])