-
Notifications
You must be signed in to change notification settings - Fork 167
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tigers - Paje Bishop #158
base: master
Are you sure you want to change the base?
Tigers - Paje Bishop #158
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,7 +4,7 @@ | |
from viewing_party.party import * | ||
from tests.test_constants import * | ||
|
||
@pytest.mark.skip() | ||
|
||
def test_create_successful_movie(): | ||
# Arrange | ||
movie_title = MOVIE_TITLE_1 | ||
|
@@ -19,7 +19,7 @@ def test_create_successful_movie(): | |
assert new_movie["genre"] == GENRE_1 | ||
assert new_movie["rating"] == pytest.approx(RATING_1) | ||
|
||
@pytest.mark.skip() | ||
|
||
def test_create_no_title_movie(): | ||
# Arrange | ||
movie_title = None | ||
|
@@ -32,7 +32,7 @@ def test_create_no_title_movie(): | |
# Assert | ||
assert new_movie is None | ||
|
||
@pytest.mark.skip() | ||
|
||
def test_create_no_genre_movie(): | ||
# Arrange | ||
movie_title = "Title A" | ||
|
@@ -45,7 +45,7 @@ def test_create_no_genre_movie(): | |
# Assert | ||
assert new_movie is None | ||
|
||
@pytest.mark.skip() | ||
|
||
def test_create_no_rating_movie(): | ||
# Arrange | ||
movie_title = "Title A" | ||
|
@@ -58,7 +58,7 @@ def test_create_no_rating_movie(): | |
# Assert | ||
assert new_movie is None | ||
|
||
@pytest.mark.skip() | ||
|
||
def test_adds_movie_to_user_watched(): | ||
# Arrange | ||
movie = { | ||
|
@@ -79,7 +79,7 @@ def test_adds_movie_to_user_watched(): | |
assert updated_data["watched"][0]["genre"] == GENRE_1 | ||
assert updated_data["watched"][0]["rating"] == RATING_1 | ||
|
||
@pytest.mark.skip() | ||
|
||
def test_adds_movie_to_user_watchlist(): | ||
# Arrange | ||
movie = { | ||
|
@@ -100,7 +100,7 @@ def test_adds_movie_to_user_watchlist(): | |
assert updated_data["watchlist"][0]["genre"] == GENRE_1 | ||
assert updated_data["watchlist"][0]["rating"] == RATING_1 | ||
|
||
@pytest.mark.skip() | ||
|
||
def test_moves_movie_from_watchlist_to_empty_watched(): | ||
# Arrange | ||
janes_data = { | ||
|
@@ -119,12 +119,10 @@ def test_moves_movie_from_watchlist_to_empty_watched(): | |
assert len(updated_data["watchlist"]) == 0 | ||
assert len(updated_data["watched"]) == 1 | ||
|
||
raise Exception("Test needs to be completed.") | ||
# ******************************************************************************************* | ||
# ****** Add assertions here to test that the correct movie was added to "watched" ********** | ||
# ******************************************************************************************* | ||
assert janes_data["watched"][0]["genre"] == GENRE_1 | ||
|
||
|
||
|
||
@pytest.mark.skip() | ||
def test_moves_movie_from_watchlist_to_watched(): | ||
# Arrange | ||
movie_to_watch = HORROR_1 | ||
|
@@ -143,12 +141,10 @@ def test_moves_movie_from_watchlist_to_watched(): | |
assert len(updated_data["watchlist"]) == 1 | ||
assert len(updated_data["watched"]) == 2 | ||
|
||
raise Exception("Test needs to be completed.") | ||
# ******************************************************************************************* | ||
# ****** Add assertions here to test that the correct movie was added to "watched" ********** | ||
# ******************************************************************************************* | ||
assert updated_data["watched"][1] == HORROR_1 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Comparatively, this assertion is better because we're comparing the whole dictionary in I personally would also check that the right movie was removed from |
||
|
||
|
||
|
||
@pytest.mark.skip() | ||
def test_does_nothing_if_movie_not_in_watchlist(): | ||
# Arrange | ||
movie_to_watch = HORROR_1 | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,7 @@ | |
from viewing_party.party import * | ||
from tests.test_constants import * | ||
|
||
@pytest.mark.skip() | ||
|
||
def test_my_unique_movies(): | ||
# Arrange | ||
amandas_data = clean_wave_3_data() | ||
|
@@ -16,7 +16,7 @@ def test_my_unique_movies(): | |
assert INTRIGUE_2 in amandas_unique_movies | ||
assert amandas_data == clean_wave_3_data() | ||
|
||
@pytest.mark.skip() | ||
|
||
def test_my_not_unique_movies(): | ||
# Arrange | ||
amandas_data = clean_wave_3_data() | ||
|
@@ -28,7 +28,7 @@ def test_my_not_unique_movies(): | |
# Assert | ||
assert len(amandas_unique_movies) == 0 | ||
|
||
@pytest.mark.skip() | ||
|
||
def test_friends_unique_movies(): | ||
# Arrange | ||
amandas_data = clean_wave_3_data() | ||
|
@@ -43,7 +43,7 @@ def test_friends_unique_movies(): | |
assert FANTASY_4 in friends_unique_movies | ||
assert amandas_data == clean_wave_3_data() | ||
|
||
@pytest.mark.skip() | ||
|
||
def test_friends_unique_movies_not_duplicated(): | ||
# Arrange | ||
amandas_data = clean_wave_3_data() | ||
|
@@ -54,13 +54,10 @@ def test_friends_unique_movies_not_duplicated(): | |
|
||
# Assert | ||
assert len(friends_unique_movies) == 3 | ||
|
||
assert friends_unique_movies.count(INTRIGUE_3) == 1 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Interestingly enough, I actually think this assertion here is fine even though it doesn't check every movie in the list. The main goal of this test is to check that movies don't get duplicated more than the entire list is correct as per our instructions. Good test design! |
||
|
||
raise Exception("Test needs to be completed.") | ||
# ************************************************************************************************* | ||
# ****** Add assertions here to test that the correct movies are in friends_unique_movies ********** | ||
# ************************************************************************************************** | ||
|
||
@pytest.mark.skip() | ||
def test_friends_not_unique_movies(): | ||
# Arrange | ||
amandas_data = { | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,105 @@ | ||
# ------------- WAVE 1 -------------------- | ||
|
||
def create_movie(title, genre, rating): | ||
pass | ||
if title and genre and rating: | ||
movie = {"title": title, "genre": genre, "rating": rating} | ||
else: | ||
movie = None | ||
return movie | ||
|
||
def add_to_watched(user_data, movie): | ||
user_data["watched"] = [movie] | ||
return user_data | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah, this is kind of a mistake on our tests but there is a bug here that they don't catch. Line 9 here will replace the entire value of Not too major and sorry for our tests missing it. That being said, usually the expected behavior of adding to a list is to append the new element. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Plus you otherwise seem to know how to use |
||
|
||
def add_to_watchlist(user_data, movie): | ||
user_data["watchlist"] = [movie] | ||
return user_data | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The same bug as |
||
|
||
def watch_movie(user_data, movie_title): | ||
for movies in user_data["watchlist"]: | ||
if movies["title"] == movie_title: | ||
user_data["watched"].append(movies) | ||
user_data["watchlist"].remove(movies) | ||
return user_data | ||
|
||
# ----------------------------------------- | ||
# ------------- WAVE 2 -------------------- | ||
# ----------------------------------------- | ||
def get_watched_avg_rating(user_data): | ||
ratings_list = [] | ||
for movies in user_data["watched"]: | ||
ratings_list.append(movies["rating"]) | ||
if ratings_list: | ||
rating_average = sum(ratings_list)/len(ratings_list) | ||
else: | ||
rating_average = 0.0 | ||
return rating_average | ||
|
||
|
||
def get_most_watched_genre(user_data): | ||
genres = [] | ||
for movies in user_data["watched"]: | ||
genres.append(movies["genre"]) | ||
if genres: | ||
most_watched_genre = max(genres, key = genres.count) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This works, but there's a minor performance hit. Now, as we hadn't even covered time complexity when you wrote this, this is not a major enough problem that I would move away from a Green. But I am pointing it out! |
||
else: | ||
most_watched_genre = None | ||
return most_watched_genre | ||
# ----------------------------------------- | ||
# ------------- WAVE 3 -------------------- | ||
# ----------------------------------------- | ||
def get_unique_watched(user_data): | ||
unique_watched = [] | ||
friends_watched = [] | ||
for i in range(len(user_data["friends"])): | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nothing wrong with using
Mostly just a minor style nitpick, though. The same goes for a few other loops here and in |
||
for item in user_data["friends"][i]["watched"]: | ||
friends_watched.append(item) | ||
for movie in user_data["watched"]: | ||
if movie not in friends_watched: | ||
unique_watched.append(movie) | ||
return unique_watched | ||
|
||
def get_friends_unique_watched(user_data): | ||
friends_watched = [] | ||
friends_unique_watched = [] | ||
for i in range(len(user_data["friends"])): | ||
for item in user_data["friends"][i]["watched"]: | ||
friends_watched.append(item) | ||
for movie in friends_watched: | ||
if (movie not in user_data["watched"] | ||
and movie not in friends_unique_watched): | ||
friends_unique_watched.append(movie) | ||
|
||
return friends_unique_watched | ||
|
||
|
||
# ----------------------------------------- | ||
# ------------- WAVE 4 -------------------- | ||
# ----------------------------------------- | ||
|
||
def get_available_recs(user_data): | ||
friends_unique_watched = get_friends_unique_watched(user_data) | ||
reccommendations = [] | ||
for movie in friends_unique_watched: | ||
if movie["host"] in user_data["subscriptions"]: | ||
reccommendations.append(movie) | ||
print(reccommendations) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm guessing this print statement was for debugging purposes. Not major, but usually good style to make sure to remove these after you're done debugging. |
||
return reccommendations | ||
# ----------------------------------------- | ||
# ------------- WAVE 5 -------------------- | ||
# ----------------------------------------- | ||
def get_new_rec_by_genre(user_data): | ||
favorite_genre = get_most_watched_genre(user_data) | ||
friends_movies = get_friends_unique_watched(user_data) | ||
rec_list_by_genre = [] | ||
if friends_movies: | ||
for movie in friends_movies: | ||
if movie["genre"] == favorite_genre: | ||
rec_list_by_genre.append(movie) | ||
else: | ||
return None | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Looking at our instructions, I'm reading them as we were expecting that an empty list would be returned in this case, but it's completely legitimate that one would return However not really a fault on your part because it seems we didn't test this case in our tests either! |
||
return rec_list_by_genre | ||
|
||
def get_rec_from_favorites(user_data): | ||
user_unique_movies = get_unique_watched(user_data) | ||
rec_list_from_favorites = [] | ||
for movie in user_data["watched"]: | ||
if (movie in user_unique_movies | ||
and movie in user_data["favorites"]): | ||
rec_list_from_favorites.append(movie) | ||
return rec_list_from_favorites |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This assertion is fine as a quick check, but definitely keep in mind that you're not limited to one assert here, and being through in your testing can have benefits. For example, I would at least add assertions to check that the
"title"
and"rating"
keys are correct too.