From 08e31067a193b6e36cc449d300f7344b1a0193b3 Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Thu, 17 Mar 2022 13:54:10 -0700 Subject: [PATCH 01/14] print something so check commit --- viewing_party/party.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index 6d34a6b5f..b34c8969d 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -2,7 +2,7 @@ def create_movie(title, genre, rating): pass - +print("something") # ----------------------------------------- # ------------- WAVE 2 -------------------- # ----------------------------------------- From 362540c6539139745a8633fb88ce4223c0ac0099 Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Thu, 17 Mar 2022 15:22:14 -0700 Subject: [PATCH 02/14] created basic dict to hold only valid arguments passed to create_movie --- viewing_party/party.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index b34c8969d..1c84d0d5e 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -1,8 +1,20 @@ # ------------- WAVE 1 -------------------- def create_movie(title, genre, rating): - pass -print("something") + movie_dict = {} + if title: + movie_dict['title'] = title + + if genre: + movie_dict['genre'] = genre + + if rating: + movie_dict['rating'] = rating + + print('WORKKKKK') + print(movie_dict) + return movie_dict + # ----------------------------------------- # ------------- WAVE 2 -------------------- # ----------------------------------------- From 819e1b849231cdb4775e820ee237dfae88f125ca Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Fri, 18 Mar 2022 15:21:36 -0700 Subject: [PATCH 03/14] refactored individual argument if statements into one in create_movie and changed -is- to == in wave 1 tests --- tests/test_wave_01.py | 12 ++++++------ viewing_party/party.py | 24 +++++++++++++++--------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index c033af09f..b01fe81bd 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -4,7 +4,7 @@ from viewing_party.party import * from tests.test_constants import * -@pytest.mark.skip() +# @pytest.mark.skip() def test_create_successful_movie(): # Arrange movie_title = MOVIE_TITLE_1 @@ -15,11 +15,11 @@ def test_create_successful_movie(): new_movie = create_movie(movie_title, genre, rating) # Assert - assert new_movie["title"] is MOVIE_TITLE_1 - assert new_movie["genre"] is GENRE_1 + assert new_movie["title"] == MOVIE_TITLE_1 + assert new_movie["genre"] == GENRE_1 assert new_movie["rating"] == pytest.approx(RATING_1) -@pytest.mark.skip() +# @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() +# @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() +# @pytest.mark.skip() def test_create_no_rating_movie(): # Arrange movie_title = "Title A" diff --git a/viewing_party/party.py b/viewing_party/party.py index 1c84d0d5e..217ef6d2b 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -1,20 +1,26 @@ # ------------- WAVE 1 -------------------- +from time import monotonic + + def create_movie(title, genre, rating): movie_dict = {} - if title: - movie_dict['title'] = title - if genre: - movie_dict['genre'] = genre + if title and genre and rating: + movie_dict['title'] = title + movie_dict['genre'] = genre + movie_dict['rating'] = rating + else: + return None - if rating: - movie_dict['rating'] = rating - - print('WORKKKKK') - print(movie_dict) return movie_dict +# def add_to_watched(user_data, movie): +# user_data['watched'].append(movie['title']) +# user_data['watched'].append(movie['genre']) +# user_data['watched'].append(movie['rating']) + + # ----------------------------------------- # ------------- WAVE 2 -------------------- # ----------------------------------------- From a721249ae62039b01431b0808dc5de412b560a53 Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Fri, 18 Mar 2022 15:36:44 -0700 Subject: [PATCH 04/14] added add_to_watched function to viewing_party.py --- viewing_party/party.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index 217ef6d2b..baa930769 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -15,10 +15,10 @@ def create_movie(title, genre, rating): return movie_dict -# def add_to_watched(user_data, movie): -# user_data['watched'].append(movie['title']) -# user_data['watched'].append(movie['genre']) -# user_data['watched'].append(movie['rating']) +def add_to_watched(user_data, movie): + user_data['watched'].append(movie) + + return user_data # ----------------------------------------- From 9323c9b8ab99ad391f41255fd49a45cfea538801 Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Fri, 18 Mar 2022 15:40:57 -0700 Subject: [PATCH 05/14] created basic add_to_watchlist function --- viewing_party/party.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index baa930769..222bd3d58 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -12,12 +12,14 @@ def create_movie(title, genre, rating): movie_dict['rating'] = rating else: return None - return movie_dict def add_to_watched(user_data, movie): user_data['watched'].append(movie) + return user_data +def add_to_watchlist(user_data, movie): + user_data['watchlist'].append(movie) return user_data From 25c6691df376035d41f01d2b2955fd1eee034c53 Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Fri, 18 Mar 2022 17:56:03 -0700 Subject: [PATCH 06/14] created watch_movie function where watched movies get moved from waitlist to watched --- viewing_party/party.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/viewing_party/party.py b/viewing_party/party.py index 222bd3d58..8a4d31cb8 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -22,6 +22,14 @@ def add_to_watchlist(user_data, movie): user_data['watchlist'].append(movie) return user_data +def watch_movie(user_data, movie): + for i in user_data['watchlist']: + if i['title'] == movie: + user_data['watched'].append(i) + user_data['watchlist'].remove(i) + + return user_data + # ----------------------------------------- # ------------- WAVE 2 -------------------- From 28b6d4734615907df99d8ae89c3d3ab274a45a87 Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Fri, 18 Mar 2022 18:15:57 -0700 Subject: [PATCH 07/14] started wave 2, created get_watched_avg_rating function --- tests/test_wave_01.py | 18 +++++++++++------- tests/test_wave_02.py | 4 ++-- viewing_party/party.py | 16 ++++++++++++++-- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index b01fe81bd..903caf8a5 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -58,7 +58,7 @@ def test_create_no_rating_movie(): # Assert assert new_movie is None -@pytest.mark.skip() +# @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"] is GENRE_1 assert updated_data["watched"][0]["rating"] is RATING_1 -@pytest.mark.skip() +# @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"] is GENRE_1 assert updated_data["watchlist"][0]["rating"] is RATING_1 -@pytest.mark.skip() +# @pytest.mark.skip() def test_moves_movie_from_watchlist_to_empty_watched(): # Arrange janes_data = { @@ -118,12 +118,14 @@ def test_moves_movie_from_watchlist_to_empty_watched(): # Assert assert len(updated_data["watchlist"]) is 0 assert len(updated_data["watched"]) is 1 - + assert updated_data['watched'][0]['title'] == MOVIE_TITLE_1 + assert updated_data['watched'][0]['genre'] == GENRE_1 + assert updated_data['watched'][0]['rating'] == RATING_1 # ******************************************************************************************* # ****** Add assertions here to test that the correct movie was added to "watched" ********** # ******************************************************************************************* -@pytest.mark.skip() +# @pytest.mark.skip() def test_moves_movie_from_watchlist_to_watched(): # Arrange movie_to_watch = HORROR_1 @@ -141,12 +143,14 @@ def test_moves_movie_from_watchlist_to_watched(): # Assert assert len(updated_data["watchlist"]) is 1 assert len(updated_data["watched"]) is 2 - + assert updated_data['watched'][1]['title'] == MOVIE_TITLE_1 + assert updated_data['watched'][1]['genre'] == GENRE_1 + assert updated_data['watched'][1]['rating'] == RATING_1 # ******************************************************************************************* # ****** Add assertions here to test that the correct movie was added to "watched" ********** # ******************************************************************************************* -@pytest.mark.skip() +# @pytest.mark.skip() def test_does_nothing_if_movie_not_in_watchlist(): # Arrange movie_to_watch = HORROR_1 diff --git a/tests/test_wave_02.py b/tests/test_wave_02.py index 3a588299e..1fc701763 100644 --- a/tests/test_wave_02.py +++ b/tests/test_wave_02.py @@ -2,7 +2,7 @@ from viewing_party.party import * from tests.test_constants import * -@pytest.mark.skip() +# @pytest.mark.skip() def test_calculates_watched_average_rating(): # Arrange janes_data = clean_wave_2_data() @@ -14,7 +14,7 @@ def test_calculates_watched_average_rating(): assert average == pytest.approx(3.58333) assert janes_data == clean_wave_2_data() -@pytest.mark.skip() +# @pytest.mark.skip() def test_empty_watched_average_rating_is_zero(): # Arrange janes_data = { diff --git a/viewing_party/party.py b/viewing_party/party.py index 8a4d31cb8..26cf875fc 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -26,14 +26,26 @@ def watch_movie(user_data, movie): for i in user_data['watchlist']: if i['title'] == movie: user_data['watched'].append(i) - user_data['watchlist'].remove(i) - + user_data['watchlist'].remove(i) return user_data # ----------------------------------------- # ------------- WAVE 2 -------------------- # ----------------------------------------- +def get_watched_avg_rating(user_data): + rating_total = 0 + counter = 0 + for i in user_data['watched']: + rating_total += i['rating'] + counter += 1 + + if rating_total >0: + avg_rating = rating_total/counter + else: + avg_rating = 0 + return avg_rating + # ----------------------------------------- From cb89ba248bc8c6c9001255faef1b4040fddeba25 Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Fri, 18 Mar 2022 18:36:45 -0700 Subject: [PATCH 08/14] created function get_most_watched_genre --- viewing_party/party.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index 26cf875fc..ad6f39a20 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -39,13 +39,19 @@ def get_watched_avg_rating(user_data): for i in user_data['watched']: rating_total += i['rating'] counter += 1 - + if rating_total >0: avg_rating = rating_total/counter else: avg_rating = 0 return avg_rating +def get_most_watched_genre(user_data): + genre_list = [] + for i in user_data['watched']: + genre_list.append(i['genre']) + print(genre_list) + return max(set(genre_list), key = genre_list.count) # ----------------------------------------- From ac712f388197f91e73ef6e03537ca77881688442 Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Fri, 18 Mar 2022 18:40:59 -0700 Subject: [PATCH 09/14] improved get_most_watched_genre function to only return if genre_list = True --- viewing_party/party.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index ad6f39a20..a9935a931 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -51,7 +51,9 @@ def get_most_watched_genre(user_data): for i in user_data['watched']: genre_list.append(i['genre']) print(genre_list) - return max(set(genre_list), key = genre_list.count) + if genre_list: + return max(set(genre_list), key = genre_list.count) + # ----------------------------------------- From ab2efd8b4c7222d8a019d5ef41a2d66f8dd6aa59 Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Tue, 22 Mar 2022 10:37:39 -0700 Subject: [PATCH 10/14] completed wave 3 functions, stil need to circle back to make assertions --- tests/test_wave_02.py | 4 ++-- tests/test_wave_03.py | 13 +++++++------ viewing_party/party.py | 41 ++++++++++++++++++++++++++++++++++++----- 3 files changed, 45 insertions(+), 13 deletions(-) diff --git a/tests/test_wave_02.py b/tests/test_wave_02.py index 1fc701763..198e395b3 100644 --- a/tests/test_wave_02.py +++ b/tests/test_wave_02.py @@ -27,7 +27,7 @@ def test_empty_watched_average_rating_is_zero(): # Assert assert average == pytest.approx(0.0) -@pytest.mark.skip() +# @pytest.mark.skip() def test_most_watched_genre(): # Arrange janes_data = clean_wave_2_data() @@ -39,7 +39,7 @@ def test_most_watched_genre(): assert popular_genre == "Fantasy" assert janes_data == clean_wave_2_data() -@pytest.mark.skip() +# @pytest.mark.skip() def test_genre_is_None_if_empty_watched(): # Arrange janes_data = { diff --git a/tests/test_wave_03.py b/tests/test_wave_03.py index 7c42a63c4..8c161ac07 100644 --- a/tests/test_wave_03.py +++ b/tests/test_wave_03.py @@ -2,7 +2,7 @@ from viewing_party.party import * from tests.test_constants import * -@pytest.mark.skip() +# @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() +# @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(): # Arrange assert len(amandas_unique_movies) == 0 -@pytest.mark.skip() +# @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() +# @pytest.mark.skip() def test_friends_unique_movies_not_duplicated(): # Arrange amandas_data = clean_wave_3_data() @@ -54,12 +54,13 @@ def test_friends_unique_movies_not_duplicated(): # Arrange assert len(friends_unique_movies) == 3 - + # assert amandas_data["watched"] not in friends_unique_movies + # assert amandas_data == clean_wave_3_data # ************************************************************************************************* # ****** Add assertions here to test that the correct movies are in friends_unique_movies ********** # ************************************************************************************************** -@pytest.mark.skip() +# @pytest.mark.skip() def test_friends_not_unique_movies(): # Arrange amandas_data = { diff --git a/viewing_party/party.py b/viewing_party/party.py index a9935a931..e9a90f671 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -29,10 +29,10 @@ def watch_movie(user_data, movie): user_data['watchlist'].remove(i) return user_data - # ----------------------------------------- # ------------- WAVE 2 -------------------- # ----------------------------------------- + def get_watched_avg_rating(user_data): rating_total = 0 counter = 0 @@ -50,17 +50,48 @@ def get_most_watched_genre(user_data): genre_list = [] for i in user_data['watched']: genre_list.append(i['genre']) - print(genre_list) if genre_list: return max(set(genre_list), key = genre_list.count) - - # ----------------------------------------- # ------------- WAVE 3 -------------------- # ----------------------------------------- - +def get_unique_watched(user_data): + user_movies = [] + friends_movies = [] + user_unique_movies = [] + + for i in user_data['watched']: + user_movies.append(i) + + for i in user_data['friends']: + for x in i['watched']: + friends_movies.append(x) + + for i in user_movies: + if i not in friends_movies and i not in user_unique_movies: + user_unique_movies.append(i) + return user_unique_movies + +def get_friends_unique_watched(user_data): + user_movies = [] + friends_movies = [] + friends_unique_movies = [] + + for i in user_data['watched']: + user_movies.append(i) + + for i in user_data['friends']: + for x in i['watched']: + friends_movies.append(x) + + for i in friends_movies: + if i not in user_movies and i not in friends_unique_movies: + friends_unique_movies.append(i) + return friends_unique_movies + + # ----------------------------------------- # ------------- WAVE 4 -------------------- # ----------------------------------------- From 663fe93f265577359789b491cf0e60eeea17c42a Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Tue, 22 Mar 2022 18:16:35 -0700 Subject: [PATCH 11/14] wave 4 passed all, tried to integrate get_unique_watched into function but did not work --- tests/test_wave_04.py | 4 ++-- viewing_party/party.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/tests/test_wave_04.py b/tests/test_wave_04.py index 72888410f..8cb037a87 100644 --- a/tests/test_wave_04.py +++ b/tests/test_wave_04.py @@ -2,7 +2,7 @@ from viewing_party.party import * from tests.test_constants import * -@pytest.mark.skip() +# @pytest.mark.skip() def test_get_available_friend_rec(): # Arrange amandas_data = clean_wave_4_data() @@ -16,7 +16,7 @@ def test_get_available_friend_rec(): assert FANTASY_4b in recommendations assert amandas_data == clean_wave_4_data() -@pytest.mark.skip() +# @pytest.mark.skip() def test_no_available_friend_recs(): # Arrange amandas_data = { diff --git a/viewing_party/party.py b/viewing_party/party.py index e9a90f671..2090c102d 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -96,7 +96,25 @@ def get_friends_unique_watched(user_data): # ------------- WAVE 4 -------------------- # ----------------------------------------- +def get_available_recs(user_data): + user_subscriptions = user_data['subscriptions'] + user_recommendations = [] + friends_watched = [] + + for dicts in user_data['friends']: + for movie in dicts['watched']: + friends_watched.append(movie) + + for i in friends_watched: + if i['host'] in user_subscriptions: + if i not in user_data['watched'] and i not in user_recommendations: + user_recommendations.append(i) + + return user_recommendations + + # ----------------------------------------- # ------------- WAVE 5 -------------------- # ----------------------------------------- +# need to go back to wave 3 assert tests to add in a few more assertions From 5dd9ae353c8a288cca8078b6901146198f87f8bd Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Tue, 22 Mar 2022 18:54:34 -0700 Subject: [PATCH 12/14] wave 5 nearly complete, get_new_rec_by_genre function written and Act+Assert test sections complete --- tests/test_wave_05.py | 17 ++++++++++++----- viewing_party/party.py | 17 ++++++++++++++++- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/tests/test_wave_05.py b/tests/test_wave_05.py index 8ce5b57db..6ee859ca3 100644 --- a/tests/test_wave_05.py +++ b/tests/test_wave_05.py @@ -2,7 +2,7 @@ from viewing_party.party import * from tests.test_constants import * -@pytest.mark.skip() +# @pytest.mark.skip() def test_new_genre_rec(): # Arrange sonyas_data = clean_wave_5_data() @@ -17,7 +17,7 @@ def test_new_genre_rec(): assert FANTASY_4b in recommendations assert sonyas_data == clean_wave_5_data() -@pytest.mark.skip() +# @pytest.mark.skip() def test_new_genre_rec_from_empty_watched(): # Arrange sonyas_data = { @@ -38,7 +38,7 @@ def test_new_genre_rec_from_empty_watched(): # Assert assert len(recommendations) == 0 -@pytest.mark.skip() +# @pytest.mark.skip() def test_new_genre_rec_from_empty_friends(): # Arrange sonyas_data = { @@ -52,6 +52,13 @@ def test_new_genre_rec_from_empty_friends(): } ] } + # Act + recommendations = get_new_rec_by_genre(sonyas_data) + + # Assert + for rec in recommendations: + assert rec['genre'] == 'Intrigue' + assert len(recommendations) == 0 # ********************************************************************* # ****** Complete the Act and Assert Portions of theis tests ********** @@ -71,7 +78,7 @@ def test_unique_rec_from_favorites(): assert INTRIGUE_2b in recommendations assert sonyas_data == clean_wave_5_data() -@pytest.mark.skip() +# @pytest.mark.skip() def test_unique_from_empty_favorites(): # Arrange sonyas_data = { @@ -92,7 +99,7 @@ def test_unique_from_empty_favorites(): # Assert assert len(recommendations) == 0 -@pytest.mark.skip() +# @pytest.mark.skip() def test_new_rec_from_empty_friends(): # Arrange sonyas_data = { diff --git a/viewing_party/party.py b/viewing_party/party.py index 2090c102d..cf9b8480d 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -111,10 +111,25 @@ def get_available_recs(user_data): user_recommendations.append(i) return user_recommendations - + # ----------------------------------------- # ------------- WAVE 5 -------------------- # ----------------------------------------- +def get_new_rec_by_genre(user_data): + genre_most_watched = get_most_watched_genre(user_data) + friends_watched = [] + most_genre_recommendations = [] + + for dicts in user_data['friends']: + for movie in dicts['watched']: + friends_watched.append(movie) + + for i in friends_watched: + if i not in user_data['watched']: + if i['genre'] == genre_most_watched: + most_genre_recommendations.append(i) + + return most_genre_recommendations # need to go back to wave 3 assert tests to add in a few more assertions From 350e7a463c0dfa123f0a55b2ee174cc20e55f232 Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Tue, 22 Mar 2022 19:15:38 -0700 Subject: [PATCH 13/14] all completegit add tests/test_wave_03.py! wave 5 finished and assertions in wave 3 written --- tests/test_wave_03.py | 4 ++-- tests/test_wave_05.py | 2 +- viewing_party/party.py | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/tests/test_wave_03.py b/tests/test_wave_03.py index 8c161ac07..6c4b440c5 100644 --- a/tests/test_wave_03.py +++ b/tests/test_wave_03.py @@ -54,8 +54,8 @@ def test_friends_unique_movies_not_duplicated(): # Arrange assert len(friends_unique_movies) == 3 - # assert amandas_data["watched"] not in friends_unique_movies - # assert amandas_data == clean_wave_3_data + assert amandas_data["watched"] not in friends_unique_movies + assert INTRIGUE_3 in friends_unique_movies # ************************************************************************************************* # ****** Add assertions here to test that the correct movies are in friends_unique_movies ********** # ************************************************************************************************** diff --git a/tests/test_wave_05.py b/tests/test_wave_05.py index 6ee859ca3..895b31ce6 100644 --- a/tests/test_wave_05.py +++ b/tests/test_wave_05.py @@ -64,7 +64,7 @@ def test_new_genre_rec_from_empty_friends(): # ****** Complete the Act and Assert Portions of theis tests ********** # ********************************************************************* -@pytest.mark.skip() +# @pytest.mark.skip() def test_unique_rec_from_favorites(): # Arrange sonyas_data = clean_wave_5_data() diff --git a/viewing_party/party.py b/viewing_party/party.py index cf9b8480d..2f9deaff8 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -1,5 +1,6 @@ # ------------- WAVE 1 -------------------- +from cmath import rect from time import monotonic @@ -132,4 +133,19 @@ def get_new_rec_by_genre(user_data): most_genre_recommendations.append(i) return most_genre_recommendations + +def get_rec_from_favorites(user_data): + user_favorites = user_data['favorites'] + friends_watched = [] + rec_from_favorites = [] + + for dicts in user_data['friends']: + for movie in dicts['watched']: + friends_watched.append(movie) + + for i in user_favorites: + if i not in friends_watched: + rec_from_favorites.append(i) + + return rec_from_favorites # need to go back to wave 3 assert tests to add in a few more assertions From 2e2948c15909de396b290b089916075bbe0af271 Mon Sep 17 00:00:00 2001 From: Morgan Adkisson Date: Fri, 25 Mar 2022 08:02:23 -0700 Subject: [PATCH 14/14] created more valuable variable names and refactored a bit --- viewing_party/party.py | 93 +++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 50 deletions(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index 2f9deaff8..e1ddc4dbf 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -24,10 +24,10 @@ def add_to_watchlist(user_data, movie): return user_data def watch_movie(user_data, movie): - for i in user_data['watchlist']: - if i['title'] == movie: - user_data['watched'].append(i) - user_data['watchlist'].remove(i) + for movie_dicts in user_data['watchlist']: + if movie_dicts['title'] == movie: + user_data['watched'].append(movie_dicts) + user_data['watchlist'].remove(movie_dicts) return user_data # ----------------------------------------- @@ -36,21 +36,23 @@ def watch_movie(user_data, movie): def get_watched_avg_rating(user_data): rating_total = 0 - counter = 0 - for i in user_data['watched']: - rating_total += i['rating'] - counter += 1 + watch_counter = 0 + + for movie_dicts in user_data['watched']: + rating_total += movie_dicts['rating'] + watch_counter += 1 - if rating_total >0: - avg_rating = rating_total/counter + if rating_total > 0: + avg_rating = rating_total/watch_counter else: avg_rating = 0 return avg_rating def get_most_watched_genre(user_data): genre_list = [] - for i in user_data['watched']: - genre_list.append(i['genre']) + + for movie_dicts in user_data['watched']: + genre_list.append(movie_dicts['genre']) if genre_list: return max(set(genre_list), key = genre_list.count) @@ -59,37 +61,31 @@ def get_most_watched_genre(user_data): # ----------------------------------------- def get_unique_watched(user_data): - user_movies = [] + user_movies = user_data['watched'] friends_movies = [] user_unique_movies = [] - for i in user_data['watched']: - user_movies.append(i) + for movie_dicts in user_data['friends']: + for movie in movie_dicts['watched']: + friends_movies.append(movie) - for i in user_data['friends']: - for x in i['watched']: - friends_movies.append(x) - - for i in user_movies: - if i not in friends_movies and i not in user_unique_movies: - user_unique_movies.append(i) + for user_movie in user_movies: + if user_movie not in friends_movies and user_movie not in user_unique_movies: + user_unique_movies.append(user_movie) return user_unique_movies def get_friends_unique_watched(user_data): - user_movies = [] + user_movies = user_data['watched'] friends_movies = [] friends_unique_movies = [] - for i in user_data['watched']: - user_movies.append(i) - - for i in user_data['friends']: - for x in i['watched']: - friends_movies.append(x) + for movie_dicts in user_data['friends']: + for movie in movie_dicts['watched']: + friends_movies.append(movie) - for i in friends_movies: - if i not in user_movies and i not in friends_unique_movies: - friends_unique_movies.append(i) + for movie_dicts in friends_movies: + if movie_dicts not in user_movies and movie_dicts not in friends_unique_movies: + friends_unique_movies.append(movie_dicts) return friends_unique_movies @@ -102,14 +98,13 @@ def get_available_recs(user_data): user_recommendations = [] friends_watched = [] - for dicts in user_data['friends']: - for movie in dicts['watched']: + for movie_dicts in user_data['friends']: + for movie in movie_dicts['watched']: friends_watched.append(movie) - for i in friends_watched: - if i['host'] in user_subscriptions: - if i not in user_data['watched'] and i not in user_recommendations: - user_recommendations.append(i) + for movie_dicts in friends_watched: + if movie_dicts['host'] in user_subscriptions and movie_dicts not in user_data['watched'] and movie_dicts not in user_recommendations: + user_recommendations.append(movie_dicts) return user_recommendations @@ -123,14 +118,13 @@ def get_new_rec_by_genre(user_data): friends_watched = [] most_genre_recommendations = [] - for dicts in user_data['friends']: - for movie in dicts['watched']: + for movie_dicts in user_data['friends']: + for movie in movie_dicts['watched']: friends_watched.append(movie) - for i in friends_watched: - if i not in user_data['watched']: - if i['genre'] == genre_most_watched: - most_genre_recommendations.append(i) + for movie_dicts in friends_watched: + if movie_dicts not in user_data['watched'] and movie_dicts['genre'] == genre_most_watched: + most_genre_recommendations.append(movie_dicts) return most_genre_recommendations @@ -139,13 +133,12 @@ def get_rec_from_favorites(user_data): friends_watched = [] rec_from_favorites = [] - for dicts in user_data['friends']: - for movie in dicts['watched']: + for movie_dicts in user_data['friends']: + for movie in movie_dicts['watched']: friends_watched.append(movie) - for i in user_favorites: - if i not in friends_watched: - rec_from_favorites.append(i) + for movie_dicts in user_favorites: + if movie_dicts not in friends_watched: + rec_from_favorites.append(movie_dicts) return rec_from_favorites -# need to go back to wave 3 assert tests to add in a few more assertions