From cd6b57efcd16bdb51dfa87e27861e0059c5ac709 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sun, 18 Sep 2022 16:36:47 -0600 Subject: [PATCH 01/25] added a function to party.py to pass wave_01 test_create_successful_movie --- tests/test_wave_01.py | 2 +- viewing_party/party.py | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index 6be6994a5..ac6f29c7f 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -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() +# @pytest.mark.skip() def test_create_no_title_movie(): # Arrange movie_title = None diff --git a/viewing_party/party.py b/viewing_party/party.py index 6d34a6b5f..c2046bab9 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -1,7 +1,13 @@ # ------------- WAVE 1 -------------------- def create_movie(title, genre, rating): - pass + movie_dict = {} + movie_dict["title"] = title + movie_dict["genre"] = genre + movie_dict["rating"] = rating + return movie_dict + + # ----------------------------------------- # ------------- WAVE 2 -------------------- From f0ae0da615624b549e0822ed1f6a80c8dbc35473 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sun, 18 Sep 2022 17:40:05 -0600 Subject: [PATCH 02/25] added to creat_movie function to pass test_create_no_title_movie --- viewing_party/party.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index c2046bab9..645bf41ee 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -4,11 +4,12 @@ def create_movie(title, genre, rating): movie_dict = {} movie_dict["title"] = title movie_dict["genre"] = genre - movie_dict["rating"] = rating + movie_dict["rating"] = rating + if movie_dict["title"] == None: + return None return movie_dict - # ----------------------------------------- # ------------- WAVE 2 -------------------- # ----------------------------------------- From e9b7722c385a4efd5aa5089b590c809650128e78 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sun, 18 Sep 2022 17:50:03 -0600 Subject: [PATCH 03/25] added a genre check to function create_movie to pass test create_no_genre_movie --- viewing_party/party.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/viewing_party/party.py b/viewing_party/party.py index 645bf41ee..849241339 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -7,6 +7,8 @@ def create_movie(title, genre, rating): movie_dict["rating"] = rating if movie_dict["title"] == None: return None + if movie_dict["genre"] == None: + return None return movie_dict From 97313fa778ff0679611a4ccae29f69816ab3c553 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sun, 18 Sep 2022 17:53:09 -0600 Subject: [PATCH 04/25] added a rating check to function create_movie to pass test_create_no_rating_movie --- viewing_party/party.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/viewing_party/party.py b/viewing_party/party.py index 849241339..4179f14d8 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -9,6 +9,8 @@ def create_movie(title, genre, rating): return None if movie_dict["genre"] == None: return None + if movie_dict["rating"]== None: + return None return movie_dict From d398944d8692252cfeebdee6b133370531f39c25 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sun, 18 Sep 2022 19:37:05 -0600 Subject: [PATCH 05/25] added function add_to_watched to pass test_adds_movie_to_user_watched --- viewing_party/party.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/viewing_party/party.py b/viewing_party/party.py index 4179f14d8..7ab48b629 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -13,6 +13,20 @@ def create_movie(title, genre, rating): return None return movie_dict +def add_to_watched(user_data, movie): + + user_data = { + "watched": [movie] + } + + movie = { + "title": "Title A", + "genre": "Horror", + "rating": 3.5 + } + + return user_data + # ----------------------------------------- # ------------- WAVE 2 -------------------- From d35e16d1fa8632b2157f611bd2b9738c9f9ef202 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sun, 18 Sep 2022 19:47:49 -0600 Subject: [PATCH 06/25] added function add_to_watchlist to pass test_adds_movie_to_user_watchlist --- viewing_party/party.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index 7ab48b629..d66d728bc 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -18,7 +18,7 @@ def add_to_watched(user_data, movie): user_data = { "watched": [movie] } - + movie = { "title": "Title A", "genre": "Horror", @@ -27,6 +27,21 @@ def add_to_watched(user_data, movie): return user_data +def add_to_watchlist(user_data, movie): + user_data = { + "watchlist": [movie] + } + + movie = { + "title": "Title A", + "genre": "Horror", + "rating": 3.5 + } + + return user_data + + + # ----------------------------------------- # ------------- WAVE 2 -------------------- From 753d6a8b08484ce49d319a9ec09b0930f26af486 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Tue, 20 Sep 2022 09:37:16 -0600 Subject: [PATCH 07/25] created a function called watch_movie to pass test wave 1, test_moves_movie_from_watchlist_to_empty_watched --- tests/test_wave_01.py | 18 ++++++++++-------- viewing_party/party.py | 8 +++++++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index ac6f29c7f..42925956d 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 @@ -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" @@ -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"] == GENRE_1 assert updated_data["watched"][0]["rating"] == RATING_1 -@pytest.mark.skip() +# @pytest.mark.skip() def test_adds_movie_to_user_watchlist(): # Arrange movie = { @@ -100,12 +100,12 @@ 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() +# @pytest.mark.skip() def test_moves_movie_from_watchlist_to_empty_watched(): # Arrange janes_data = { "watchlist": [{ - "title": MOVIE_TITLE_1, + "title": MOVIE_TITLE_1, "genre": GENRE_1, "rating": RATING_1 }], @@ -118,8 +118,10 @@ def test_moves_movie_from_watchlist_to_empty_watched(): # Assert assert len(updated_data["watchlist"]) == 0 assert len(updated_data["watched"]) == 1 + assert updated_data["watched"][0]["title"] == MOVIE_TITLE_1 - raise Exception("Test needs to be completed.") + + #raise Exception("Test needs to be completed.") # ******************************************************************************************* # ****** Add assertions here to test that the correct movie was added to "watched" ********** # ******************************************************************************************* diff --git a/viewing_party/party.py b/viewing_party/party.py index d66d728bc..6d5b74dc1 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -39,8 +39,14 @@ def add_to_watchlist(user_data, movie): } return user_data - +def watch_movie(user_data, title): + + if title == user_data["watchlist"][0]["title"]: + user_data["watched"].append(user_data["watchlist"][0]) + user_data["watchlist"]=[] + + return user_data # ----------------------------------------- From c358e02b3a50fc627bde5c3c867f820ea8e6de74 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Tue, 20 Sep 2022 20:22:47 -0600 Subject: [PATCH 08/25] updated the function watch_movie with entirely new function --- tests/test_wave_01.py | 9 +++++---- viewing_party/party.py | 37 ++++++++++++++++++++++++++++++++----- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index 42925956d..8ab8b5b2b 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -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() +#@pytest.mark.skip() def test_moves_movie_from_watchlist_to_empty_watched(): # Arrange janes_data = { @@ -118,7 +118,7 @@ def test_moves_movie_from_watchlist_to_empty_watched(): # Assert assert len(updated_data["watchlist"]) == 0 assert len(updated_data["watched"]) == 1 - assert updated_data["watched"][0]["title"] == MOVIE_TITLE_1 + assert updated_data["watched"][0] == MOVIE_TITLE_1 #raise Exception("Test needs to be completed.") @@ -126,7 +126,7 @@ def test_moves_movie_from_watchlist_to_empty_watched(): # ****** 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 @@ -144,8 +144,9 @@ def test_moves_movie_from_watchlist_to_watched(): # Assert assert len(updated_data["watchlist"]) == 1 assert len(updated_data["watched"]) == 2 + assert updated_data["watched"] == [FANTASY_2, movie_to_watch] - raise Exception("Test needs to be completed.") + # raise Exception("Test needs to be completed.") # ******************************************************************************************* # ****** Add assertions here to test that the correct movie was added to "watched" ********** # ******************************************************************************************* diff --git a/viewing_party/party.py b/viewing_party/party.py index 6d5b74dc1..3a157fee5 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -42,11 +42,38 @@ def add_to_watchlist(user_data, movie): def watch_movie(user_data, title): - if title == user_data["watchlist"][0]["title"]: - user_data["watched"].append(user_data["watchlist"][0]) - user_data["watchlist"]=[] - - return user_data + + + for movie in user_data["watchlist"]: + if movie["title"] == title: + movie_index = user_data["watchlist"].index(movie) + user_data["watchlist"].pop(movie_index) + user_data["watched"].append(movie["title"]) + + return user_data + + #pseudocode + # for movie in user_data["watchlist"]: + # if movie["title"] == title: + # remove title from movie inside "watchlist" --- + # add it to movies in "watched" + + + + + + + + # ******solution works only for test 7******** + + # if title in user_data["watchlist"][0]["title"]: + # user_data["watched"].append(user_data["watchlist"][0]) + # user_data["watchlist"]=[] + # elif title != user_data["watchlist"][0]["title"]: + # return user_data + + #*******solution works only for test 7********* + # ----------------------------------------- From d98af1ae30fd4386440b5f963fdd3ef1704de0f8 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Tue, 20 Sep 2022 20:41:48 -0600 Subject: [PATCH 09/25] changed function watch_movie, now passes tests 7-8 --- tests/test_wave_01.py | 4 ++-- viewing_party/party.py | 24 ++---------------------- 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index 8ab8b5b2b..5e0c656e2 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -144,14 +144,14 @@ def test_moves_movie_from_watchlist_to_watched(): # Assert assert len(updated_data["watchlist"]) == 1 assert len(updated_data["watched"]) == 2 - assert updated_data["watched"] == [FANTASY_2, movie_to_watch] + assert updated_data["watched"][1] == movie_to_watch["title"] # raise Exception("Test needs to be completed.") # ******************************************************************************************* # ****** 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/viewing_party/party.py b/viewing_party/party.py index 3a157fee5..eb019aca6 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -49,31 +49,11 @@ def watch_movie(user_data, title): movie_index = user_data["watchlist"].index(movie) user_data["watchlist"].pop(movie_index) user_data["watched"].append(movie["title"]) + else: + return user_data return user_data - #pseudocode - # for movie in user_data["watchlist"]: - # if movie["title"] == title: - # remove title from movie inside "watchlist" --- - # add it to movies in "watched" - - - - - - - - # ******solution works only for test 7******** - - # if title in user_data["watchlist"][0]["title"]: - # user_data["watched"].append(user_data["watchlist"][0]) - # user_data["watchlist"]=[] - # elif title != user_data["watchlist"][0]["title"]: - # return user_data - - #*******solution works only for test 7********* - # ----------------------------------------- From 2d0bbaa8689d5df864862687c3984af60c9f156e Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Wed, 21 Sep 2022 06:54:45 -0600 Subject: [PATCH 10/25] created function _get_watched_avg_rating, passes test wave 2, test 1 --- tests/test_wave_02.py | 2 +- viewing_party/party.py | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/tests/test_wave_02.py b/tests/test_wave_02.py index 3a588299e..fc80faf5f 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() diff --git a/viewing_party/party.py b/viewing_party/party.py index eb019aca6..04417f146 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -50,16 +50,26 @@ def watch_movie(user_data, title): user_data["watchlist"].pop(movie_index) user_data["watched"].append(movie["title"]) else: - return user_data + return user_data return user_data - - # ----------------------------------------- # ------------- WAVE 2 -------------------- # ----------------------------------------- +def get_watched_avg_rating(user_data): + + ratings = [] + total = 0 + for movie in user_data["watched"]: + ratings.append(movie["rating"]) + for rating in ratings: + total += rating + total = total + + average = total / len(ratings) + return average # ----------------------------------------- # ------------- WAVE 3 -------------------- From b8560170c40f58ba058126442ec9ef9b4348223d Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Wed, 21 Sep 2022 07:00:53 -0600 Subject: [PATCH 11/25] modified get_watched_avg_rating to test for an empty list with no values, now passes wave 02 test 02 --- tests/test_wave_02.py | 2 +- viewing_party/party.py | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/test_wave_02.py b/tests/test_wave_02.py index fc80faf5f..c24fec8d4 100644 --- a/tests/test_wave_02.py +++ b/tests/test_wave_02.py @@ -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 04417f146..829e0e997 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -60,12 +60,16 @@ def watch_movie(user_data, title): def get_watched_avg_rating(user_data): ratings = [] - total = 0 + total = 0 + for movie in user_data["watched"]: ratings.append(movie["rating"]) for rating in ratings: total += rating - total = total + total = total + if len(user_data["watched"]) == 0: + return total + average = total / len(ratings) From bf213fa5468e868ae44dc999110cf354fdaa5b9d Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Wed, 21 Sep 2022 07:42:20 -0600 Subject: [PATCH 12/25] created function get_most_watched_genre, passes wave 02 test 3 and 4 --- tests/test_wave_02.py | 4 ++-- viewing_party/party.py | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/tests/test_wave_02.py b/tests/test_wave_02.py index c24fec8d4..36b504008 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/viewing_party/party.py b/viewing_party/party.py index 829e0e997..fde891aee 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -75,6 +75,33 @@ def get_watched_avg_rating(user_data): return average +def get_most_watched_genre(user_data): + + genres_list= [] + genre_frequency = [] + + if len(user_data["watched"]) == 0: + return None + + for movie in user_data["watched"]: + genres_list.append(movie["genre"]) + + for genre in genres_list: + num = genres_list.count(genre) + genre_frequency.append(num) + + first_number = genre_frequency[0] + + for number in genre_frequency: + if number > first_number: + first_number = number + + most_watched_index = genre_frequency.index(first_number) + most_watched_genre = genres_list[most_watched_index] + + return most_watched_genre + + # ----------------------------------------- # ------------- WAVE 3 -------------------- # ----------------------------------------- From 5bcec4fd7b3224d694ba0a87decabb2fec9417b8 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Wed, 21 Sep 2022 15:08:59 -0600 Subject: [PATCH 13/25] created function get_unique_watched, passed test 1, and 2 in test_wave_03 --- play_tester.py | 4 ++-- tests/test_wave_03.py | 6 +++--- viewing_party/party.py | 26 +++++++++++++++++++++++++- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/play_tester.py b/play_tester.py index 9e2aecf48..e6971807a 100644 --- a/play_tester.py +++ b/play_tester.py @@ -17,8 +17,8 @@ # print("\n-----Wave 02 user_data-----") # pp.pprint(clean_wave_2_data()) -#print("\n-----Wave 03 user_data-----") -#pp.pprint(clean_wave_3_data()) +# print("\n-----Wave 03 user_data-----") +# pp.pprint(clean_wave_3_data()) # Wave 04 user data #print("\n-----Wave 04 user_data-----") diff --git a/tests/test_wave_03.py b/tests/test_wave_03.py index 046429360..0649012b0 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(): # Assert assert len(amandas_unique_movies) == 0 -@pytest.mark.skip() +# @pytest.mark.skip() def test_friends_unique_movies(): # Arrange amandas_data = clean_wave_3_data() diff --git a/viewing_party/party.py b/viewing_party/party.py index fde891aee..bcde8a72d 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -79,7 +79,7 @@ def get_most_watched_genre(user_data): genres_list= [] genre_frequency = [] - + if len(user_data["watched"]) == 0: return None @@ -105,6 +105,30 @@ def get_most_watched_genre(user_data): # ----------------------------------------- # ------------- WAVE 3 -------------------- # ----------------------------------------- +def get_unique_watched(user_data): + + friends_watched_list = [] + user_watched_list = [] + user_unique_movies = [] + + for num in range(0, len(user_data["friends"])): + for movie in user_data["friends"][num]["watched"]: + friends_watched_list.append(movie["title"]) + + for movie in user_data["watched"]: + user_watched_list.append(movie["title"]) + + for movie in friends_watched_list: + if movie in user_watched_list: + user_watched_list.remove(movie) + + for title in user_data["watched"]: + for num in range (0, len(user_watched_list)): + if user_watched_list[num] in title["title"]: + user_unique_movies.append(title) + + return user_unique_movies + # ----------------------------------------- From 0aad519e0b9b613a79dfb178944e69f499f8e051 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Wed, 21 Sep 2022 19:31:14 -0600 Subject: [PATCH 14/25] created function get_friends_unique_watched passes test wave 03, tests 3-5 --- tests/test_wave_03.py | 9 ++++++--- viewing_party/party.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/tests/test_wave_03.py b/tests/test_wave_03.py index 0649012b0..d7ab2807b 100644 --- a/tests/test_wave_03.py +++ b/tests/test_wave_03.py @@ -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,13 +54,16 @@ def test_friends_unique_movies_not_duplicated(): # Assert assert len(friends_unique_movies) == 3 + assert HORROR_1 in friends_unique_movies + assert INTRIGUE_3 in friends_unique_movies + assert FANTASY_4 in friends_unique_movies - raise Exception("Test needs to be completed.") + #raise Exception("Test needs to be completed.") # ************************************************************************************************* # ****** 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 bcde8a72d..6b9c00418 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -129,6 +129,40 @@ def get_unique_watched(user_data): return user_unique_movies +def get_friends_unique_watched(user_data): + + friends_watched_list = [] + user_watched_list = [] + friends_unique_movies = [] + + for num in range(0, len(user_data["friends"])): + for movie in user_data["friends"][num]["watched"]: + friends_watched_list.append(movie["title"]) + + friends_movies_no_doubles = list(set(friends_watched_list)) + + for movie in user_data["watched"]: + user_watched_list.append(movie["title"]) + + for movie in user_watched_list: + if movie in friends_movies_no_doubles: + friends_movies_no_doubles.remove(movie) + + for num in range (0, len(user_data["friends"])): + for dictionary in user_data["friends"][num]["watched"]: + if dictionary["title"] in friends_movies_no_doubles and dictionary["title"] not in friends_unique_movies: + friends_unique_movies.append(dictionary) + + friends_truly_unique_movies = set() + friends_truly_truly_unique_movies = [] + + for dictionaries in friends_unique_movies: + tupled_dicts = tuple(dictionaries.items()) + if tupled_dicts not in friends_truly_unique_movies: + friends_truly_unique_movies.add(tupled_dicts) + friends_truly_truly_unique_movies.append(dictionaries) + + return friends_truly_truly_unique_movies # ----------------------------------------- From 3a09167f4effe60578bd7e56734e3bee745717d6 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Wed, 21 Sep 2022 23:35:23 -0600 Subject: [PATCH 15/25] created function get_available_recs, all tests in wave 4 passed --- viewing_party/party.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/viewing_party/party.py b/viewing_party/party.py index 6b9c00418..dd90b0811 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -169,7 +169,48 @@ def get_friends_unique_watched(user_data): # ------------- WAVE 4 -------------------- # ----------------------------------------- +def get_available_recs(user_data): + user_watched_list = [] + friends_watched_list = [] + + for movie in user_data["watched"]: + user_watched_list.append(movie["title"]) + + + for num in range(0, len(user_data["friends"])): + for movie in user_data["friends"][num]["watched"]: + friends_watched_list.append(movie["title"]) + + + friend_set = set(friends_watched_list) + + user_set = set(user_watched_list) + + friend_movie_reccs = friend_set - user_set + + friends_recommend = list(friend_movie_reccs) + + user_subscriptions = [] + + for subscription in user_data["subscriptions"]: + user_subscriptions.append(subscription) + + friends_recommended_flicks = [] + + for num in range(0, len(user_data["friends"])): + for movie in user_data["friends"][num]["watched"]: + if movie["title"] in friends_recommend and movie["host"] in user_subscriptions: + friends_recommended_flicks.append(movie) + + return friends_recommended_flicks + # ----------------------------------------- # ------------- WAVE 5 -------------------- # ----------------------------------------- +def get_new_rec_by_genre(): + pass + + + + From 02f5686d932d835aee20467513f3651db97d99a7 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Fri, 23 Sep 2022 01:06:10 -0600 Subject: [PATCH 16/25] created function get_available_recs all tests in wave 4 pass --- tests/test_wave_01.py | 2 +- tests/test_wave_04.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index 5e0c656e2..139979e07 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -144,7 +144,7 @@ def test_moves_movie_from_watchlist_to_watched(): # Assert assert len(updated_data["watchlist"]) == 1 assert len(updated_data["watched"]) == 2 - assert updated_data["watched"][1] == movie_to_watch["title"] + assert updated_data["watched"][0] == movie_to_watch["title"] # raise Exception("Test needs to be completed.") # ******************************************************************************************* diff --git a/tests/test_wave_04.py b/tests/test_wave_04.py index 499669077..79ab18ff7 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 = { @@ -38,7 +38,7 @@ def test_no_available_friend_recs(): # Assert assert len(recommendations) == 0 -@pytest.mark.skip() +#@pytest.mark.skip() def test_no_available_friend_recs_watched_all(): # Arrange amandas_data = { From a01f1cec83e28da030c39f2f3b662cce2e7a2a7e Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Fri, 23 Sep 2022 01:25:15 -0600 Subject: [PATCH 17/25] created function get_rec_from_favorites tests 3-6 pass in wave 5 --- play_tester.py | 10 +++++----- tests/test_wave_05.py | 6 +++--- viewing_party/party.py | 30 ++++++++++++++++++++++++++++-- 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/play_tester.py b/play_tester.py index e6971807a..481521559 100644 --- a/play_tester.py +++ b/play_tester.py @@ -9,10 +9,10 @@ pp = pprint.PrettyPrinter(indent=4) # play testing section -print("\n-----Wave 01 test data-----") -pp.pprint(HORROR_1) -pp.pprint(FANTASY_1) -pp.pprint(FANTASY_2) +# print("\n-----Wave 01 test data-----") +# pp.pprint(HORROR_1) +# pp.pprint(FANTASY_1) +# pp.pprint(FANTASY_2) # print("\n-----Wave 02 user_data-----") # pp.pprint(clean_wave_2_data()) @@ -26,4 +26,4 @@ # Wave 05 user data #print("\n-----Wave 05 user_data-----") -#pp.pprint(clean_wave_5_data()) +# pp.pprint(clean_wave_5_data()) diff --git a/tests/test_wave_05.py b/tests/test_wave_05.py index 85ebb8b18..9cc683c17 100644 --- a/tests/test_wave_05.py +++ b/tests/test_wave_05.py @@ -58,7 +58,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() @@ -72,7 +72,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 = { @@ -94,7 +94,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 dd90b0811..26486a552 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -208,8 +208,34 @@ def get_available_recs(user_data): # ------------- WAVE 5 -------------------- # ----------------------------------------- -def get_new_rec_by_genre(): - pass + + +def get_rec_from_favorites(user_data): + user_favs = [] + friend_movies = [] + + for dictionary in user_data["favorites"]: + user_favs.append(dictionary["title"]) + + for num in range(0, len(user_data["friends"])): + for dictionary in user_data["friends"][num]["watched"]: + friend_movies.append(dictionary["title"]) + + user_set = set(user_favs) + friends_set = set(friend_movies) + + movies_to_watch = user_set - friends_set + + user_fav_movies = list(movies_to_watch) + + fav_recommendations = [] + + for dictionary in user_data["favorites"]: + for movie in user_fav_movies: + if movie == dictionary["title"]: + fav_recommendations.append(dictionary) + + return fav_recommendations From 02fcb34f5d8caa573d1ac8b38d57d23044068ae5 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Fri, 23 Sep 2022 01:54:59 -0600 Subject: [PATCH 18/25] created function get_new_rec_by_genre test 1-3 in wave 5 pass --- tests/test_wave_05.py | 13 +++++++++---- viewing_party/party.py | 24 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/tests/test_wave_05.py b/tests/test_wave_05.py index 9cc683c17..01af21cc7 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,8 +52,13 @@ def test_new_genre_rec_from_empty_friends(): } ] } + # Act + recommendations = get_new_rec_by_genre(sonyas_data) + + # Assert + assert len(recommendations) == 0 - raise Exception("Test needs to be completed.") + #raise Exception("Test needs to be completed.") # ********************************************************************* # ****** Complete the Act and Assert Portions of theis tests ********** # ********************************************************************* diff --git a/viewing_party/party.py b/viewing_party/party.py index 26486a552..56a307aa9 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -207,7 +207,31 @@ def get_available_recs(user_data): # ----------------------------------------- # ------------- WAVE 5 -------------------- # ----------------------------------------- +def get_new_rec_by_genre(user_data): + user_seen_movies = [] + friends_seen_movies = [] + recs_by_genre = [] + fav_genre = get_most_watched_genre(user_data) + + for dictionary in user_data["watched"]: + user_seen_movies.append(dictionary["title"]) + + for num in range(0, len(user_data["friends"])): + for dictionary in user_data["friends"][num]["watched"]: + friends_seen_movies.append(dictionary["title"]) + + user_watched = set(user_seen_movies) + friend_watched = set(friends_seen_movies) + + friends_recs = list(friend_watched - user_watched) + + for num in range(0, len(user_data["friends"])): + for dictionary in user_data["friends"][num]["watched"]: + if dictionary["title"] in friends_recs and dictionary["genre"] == fav_genre: + recs_by_genre.append(dictionary) + + return recs_by_genre def get_rec_from_favorites(user_data): From a5854883beac69a2106c23deff7dfe82cf489e46 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Fri, 23 Sep 2022 02:37:47 -0600 Subject: [PATCH 19/25] modified function watch_movie to pass the test 7 and 8 in wave 01, all tests in all waves now pass --- tests/test_wave_01.py | 6 +++--- viewing_party/party.py | 7 +------ 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index 139979e07..ad41f27c7 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -118,8 +118,7 @@ def test_moves_movie_from_watchlist_to_empty_watched(): # Assert assert len(updated_data["watchlist"]) == 0 assert len(updated_data["watched"]) == 1 - assert updated_data["watched"][0] == MOVIE_TITLE_1 - + assert updated_data["watched"][0] == HORROR_1 #raise Exception("Test needs to be completed.") # ******************************************************************************************* @@ -144,7 +143,8 @@ def test_moves_movie_from_watchlist_to_watched(): # Assert assert len(updated_data["watchlist"]) == 1 assert len(updated_data["watched"]) == 2 - assert updated_data["watched"][0] == movie_to_watch["title"] + assert updated_data["watched"][0] == FANTASY_2 + assert updated_data["watched"][1] == movie_to_watch # raise Exception("Test needs to be completed.") # ******************************************************************************************* diff --git a/viewing_party/party.py b/viewing_party/party.py index 56a307aa9..9d99a85be 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -41,16 +41,11 @@ def add_to_watchlist(user_data, movie): return user_data def watch_movie(user_data, title): - - - for movie in user_data["watchlist"]: if movie["title"] == title: movie_index = user_data["watchlist"].index(movie) user_data["watchlist"].pop(movie_index) - user_data["watched"].append(movie["title"]) - else: - return user_data + user_data["watched"].append(movie) return user_data From 338e5e77c4a6ef85a711e195143029dae596a511 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Fri, 23 Sep 2022 02:46:14 -0600 Subject: [PATCH 20/25] Added my name and class to README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 187cdb442..024674010 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Viewing Party +# Viewing Party Tigers - Sunny Muniz ## Skills Assessed From 614b525c6782e5f136522448148eb82eb6106f94 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sun, 16 Oct 2022 22:56:57 -0600 Subject: [PATCH 21/25] deleted all decorators that were used for skippinng tests to make code cleaner. --- play_tester.py | 2 +- tests/test_wave_01.py | 18 +++++++++--------- tests/test_wave_02.py | 8 ++++---- tests/test_wave_03.py | 10 +++++----- tests/test_wave_04.py | 6 +++--- tests/test_wave_05.py | 12 ++++++------ viewing_party/party.py | 1 - 7 files changed, 28 insertions(+), 29 deletions(-) diff --git a/play_tester.py b/play_tester.py index 481521559..fed05d6a0 100644 --- a/play_tester.py +++ b/play_tester.py @@ -22,7 +22,7 @@ # Wave 04 user data #print("\n-----Wave 04 user_data-----") -#pp.pprint(clean_wave_4_data()) +# pp.pprint(clean_wave_4_data()) # Wave 05 user data #print("\n-----Wave 05 user_data-----") diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index ad41f27c7..99ba42857 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() + 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 = { @@ -125,7 +125,7 @@ def test_moves_movie_from_watchlist_to_empty_watched(): # ****** Add assertions here to test that the correct movie was added to "watched" ********** # ******************************************************************************************* -#@pytest.mark.skip() + def test_moves_movie_from_watchlist_to_watched(): # Arrange movie_to_watch = HORROR_1 @@ -151,7 +151,7 @@ def test_moves_movie_from_watchlist_to_watched(): # ****** Add assertions here to test that the correct movie was added to "watched" ********** # ******************************************************************************************* -#@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 36b504008..2ec8fcac2 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() + 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() + def test_empty_watched_average_rating_is_zero(): # Arrange janes_data = { @@ -27,7 +27,7 @@ def test_empty_watched_average_rating_is_zero(): # Assert assert average == pytest.approx(0.0) -#@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() + 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 d7ab2807b..fbd2014fa 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() + 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() @@ -63,7 +63,7 @@ def test_friends_unique_movies_not_duplicated(): # ****** 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 = { diff --git a/tests/test_wave_04.py b/tests/test_wave_04.py index 79ab18ff7..67f432045 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() + 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() + def test_no_available_friend_recs(): # Arrange amandas_data = { @@ -38,7 +38,7 @@ def test_no_available_friend_recs(): # Assert assert len(recommendations) == 0 -#@pytest.mark.skip() + def test_no_available_friend_recs_watched_all(): # Arrange amandas_data = { diff --git a/tests/test_wave_05.py b/tests/test_wave_05.py index 01af21cc7..ce08a7b9b 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() + 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() + 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() + def test_new_genre_rec_from_empty_friends(): # Arrange sonyas_data = { @@ -63,7 +63,7 @@ def test_new_genre_rec_from_empty_friends(): # ****** Complete the Act and Assert Portions of theis tests ********** # ********************************************************************* -#@pytest.mark.skip() + def test_unique_rec_from_favorites(): # Arrange sonyas_data = clean_wave_5_data() @@ -77,7 +77,7 @@ def test_unique_rec_from_favorites(): assert INTRIGUE_2b in recommendations assert sonyas_data == clean_wave_5_data() -#@pytest.mark.skip() + def test_unique_from_empty_favorites(): # Arrange sonyas_data = { @@ -99,7 +99,7 @@ def test_unique_from_empty_favorites(): # Assert assert len(recommendations) == 0 -#@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 9d99a85be..8e5866953 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -171,7 +171,6 @@ def get_available_recs(user_data): for movie in user_data["watched"]: user_watched_list.append(movie["title"]) - for num in range(0, len(user_data["friends"])): for movie in user_data["friends"][num]["watched"]: friends_watched_list.append(movie["title"]) From 46368d6abdb7e4187f927d64f4f414aebbb95973 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sun, 16 Oct 2022 23:00:31 -0600 Subject: [PATCH 22/25] deleted all raise exception/complete tests comments for cleaner code --- tests/test_wave_01.py | 10 ++-------- tests/test_wave_03.py | 5 +---- tests/test_wave_05.py | 5 +---- 3 files changed, 4 insertions(+), 16 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index 99ba42857..9a65f4f7f 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -120,10 +120,7 @@ def test_moves_movie_from_watchlist_to_empty_watched(): assert len(updated_data["watched"]) == 1 assert updated_data["watched"][0] == HORROR_1 - #raise Exception("Test needs to be completed.") - # ******************************************************************************************* - # ****** Add assertions here to test that the correct movie was added to "watched" ********** - # ******************************************************************************************* + def test_moves_movie_from_watchlist_to_watched(): @@ -146,10 +143,7 @@ def test_moves_movie_from_watchlist_to_watched(): assert updated_data["watched"][0] == FANTASY_2 assert updated_data["watched"][1] == movie_to_watch - # raise Exception("Test needs to be completed.") - # ******************************************************************************************* - # ****** Add assertions here to test that the correct movie was added to "watched" ********** - # ******************************************************************************************* + def test_does_nothing_if_movie_not_in_watchlist(): diff --git a/tests/test_wave_03.py b/tests/test_wave_03.py index fbd2014fa..c7b0d6e97 100644 --- a/tests/test_wave_03.py +++ b/tests/test_wave_03.py @@ -58,10 +58,7 @@ def test_friends_unique_movies_not_duplicated(): assert INTRIGUE_3 in friends_unique_movies assert FANTASY_4 in friends_unique_movies - #raise Exception("Test needs to be completed.") - # ************************************************************************************************* - # ****** Add assertions here to test that the correct movies are in friends_unique_movies ********** - # ************************************************************************************************** + def test_friends_not_unique_movies(): diff --git a/tests/test_wave_05.py b/tests/test_wave_05.py index ce08a7b9b..b0a7a75ff 100644 --- a/tests/test_wave_05.py +++ b/tests/test_wave_05.py @@ -58,10 +58,7 @@ def test_new_genre_rec_from_empty_friends(): # Assert assert len(recommendations) == 0 - #raise Exception("Test needs to be completed.") - # ********************************************************************* - # ****** Complete the Act and Assert Portions of theis tests ********** - # ********************************************************************* + def test_unique_rec_from_favorites(): From 3486902fa0be75f6dfa4fc1073b4848121749176 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sun, 16 Oct 2022 23:26:35 -0600 Subject: [PATCH 23/25] addressed all issues in waves 01, and 02 as per Jayce's recommendations --- viewing_party/party.py | 40 ++++++++++------------------------------ 1 file changed, 10 insertions(+), 30 deletions(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index 8e5866953..fd98babc5 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -1,16 +1,13 @@ # ------------- WAVE 1 -------------------- def create_movie(title, genre, rating): + if title == None or genre == None or rating == None: + return None + movie_dict = {} movie_dict["title"] = title movie_dict["genre"] = genre movie_dict["rating"] = rating - if movie_dict["title"] == None: - return None - if movie_dict["genre"] == None: - return None - if movie_dict["rating"]== None: - return None return movie_dict def add_to_watched(user_data, movie): @@ -19,25 +16,13 @@ def add_to_watched(user_data, movie): "watched": [movie] } - movie = { - "title": "Title A", - "genre": "Horror", - "rating": 3.5 - } - return user_data def add_to_watchlist(user_data, movie): user_data = { "watchlist": [movie] } - - movie = { - "title": "Title A", - "genre": "Horror", - "rating": 3.5 - } - + return user_data def watch_movie(user_data, title): @@ -54,19 +39,14 @@ def watch_movie(user_data, title): # ----------------------------------------- def get_watched_avg_rating(user_data): - ratings = [] + total = 0 - - for movie in user_data["watched"]: - ratings.append(movie["rating"]) - for rating in ratings: - total += rating - total = total if len(user_data["watched"]) == 0: - return total - - - average = total / len(ratings) + return total + for movie in user_data["watched"]: + total += movie["rating"] + + average = total / len(user_data["watched"]) return average From 4a832bdf2848855c6ec103a6ec41f78637f35652 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sun, 16 Oct 2022 23:47:36 -0600 Subject: [PATCH 24/25] have continued to refactor as per Jayce's recommendations, now on lines 108-111 --- viewing_party/party.py | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index fd98babc5..aba27eca4 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -52,31 +52,25 @@ def get_watched_avg_rating(user_data): def get_most_watched_genre(user_data): - genres_list= [] - genre_frequency = [] - if len(user_data["watched"]) == 0: return None + genre_count = {} for movie in user_data["watched"]: - genres_list.append(movie["genre"]) - - for genre in genres_list: - num = genres_list.count(genre) - genre_frequency.append(num) + genre = movie["genre"] + if genre in genre_count.keys(): + genre_count[genre] += 1 + else: + genre_count[genre] = 1 - first_number = genre_frequency[0] - - for number in genre_frequency: - if number > first_number: - first_number = number - - most_watched_index = genre_frequency.index(first_number) - most_watched_genre = genres_list[most_watched_index] + max_genre_count = 0 + most_watched_genre = "" + for genre, count in genre_count.items(): + if count > max_genre_count: + max_genre_count = count + most_watched_genre = genre return most_watched_genre - - # ----------------------------------------- # ------------- WAVE 3 -------------------- # ----------------------------------------- From b765471abfc5269f6bd0a9c5120ad1a2999dc729 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Mon, 17 Oct 2022 19:50:45 -0600 Subject: [PATCH 25/25] refactored and applied all of Jayce's suggestions to make code more succint and efficient --- play_tester.py | 2 +- viewing_party/party.py | 156 +++++++++++------------------------------ 2 files changed, 41 insertions(+), 117 deletions(-) diff --git a/play_tester.py b/play_tester.py index fed05d6a0..d23cdb5ee 100644 --- a/play_tester.py +++ b/play_tester.py @@ -26,4 +26,4 @@ # Wave 05 user data #print("\n-----Wave 05 user_data-----") -# pp.pprint(clean_wave_5_data()) +#pp.pprint(clean_wave_5_data()) diff --git a/viewing_party/party.py b/viewing_party/party.py index aba27eca4..eb7f03650 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -39,7 +39,6 @@ def watch_movie(user_data, title): # ----------------------------------------- def get_watched_avg_rating(user_data): - total = 0 if len(user_data["watched"]) == 0: return total @@ -77,61 +76,35 @@ def get_most_watched_genre(user_data): def get_unique_watched(user_data): friends_watched_list = [] - user_watched_list = [] - user_unique_movies = [] - - for num in range(0, len(user_data["friends"])): - for movie in user_data["friends"][num]["watched"]: - friends_watched_list.append(movie["title"]) - - for movie in user_data["watched"]: - user_watched_list.append(movie["title"]) - for movie in friends_watched_list: - if movie in user_watched_list: - user_watched_list.remove(movie) + for friend in user_data["friends"]: + for movie in friend["watched"]: + if movie not in friends_watched_list: + friends_watched_list.append(movie) + + user_unique_movies = [] - for title in user_data["watched"]: - for num in range (0, len(user_watched_list)): - if user_watched_list[num] in title["title"]: - user_unique_movies.append(title) + for movie in user_data["watched"]: + if movie not in friends_watched_list: + user_unique_movies.append(movie) return user_unique_movies def get_friends_unique_watched(user_data): friends_watched_list = [] - user_watched_list = [] friends_unique_movies = [] - for num in range(0, len(user_data["friends"])): - for movie in user_data["friends"][num]["watched"]: - friends_watched_list.append(movie["title"]) - - friends_movies_no_doubles = list(set(friends_watched_list)) - - for movie in user_data["watched"]: - user_watched_list.append(movie["title"]) - - for movie in user_watched_list: - if movie in friends_movies_no_doubles: - friends_movies_no_doubles.remove(movie) - - for num in range (0, len(user_data["friends"])): - for dictionary in user_data["friends"][num]["watched"]: - if dictionary["title"] in friends_movies_no_doubles and dictionary["title"] not in friends_unique_movies: - friends_unique_movies.append(dictionary) - - friends_truly_unique_movies = set() - friends_truly_truly_unique_movies = [] - - for dictionaries in friends_unique_movies: - tupled_dicts = tuple(dictionaries.items()) - if tupled_dicts not in friends_truly_unique_movies: - friends_truly_unique_movies.add(tupled_dicts) - friends_truly_truly_unique_movies.append(dictionaries) + for friend in user_data["friends"]: + for movie in friend["watched"]: + if movie not in friends_watched_list: + friends_watched_list.append(movie) + + for movie in friends_watched_list: + if movie not in user_data["watched"]: + friends_unique_movies.append(movie) - return friends_truly_truly_unique_movies + return friends_unique_movies # ----------------------------------------- @@ -139,95 +112,46 @@ def get_friends_unique_watched(user_data): # ----------------------------------------- def get_available_recs(user_data): - user_watched_list = [] - friends_watched_list = [] - - for movie in user_data["watched"]: - user_watched_list.append(movie["title"]) - - for num in range(0, len(user_data["friends"])): - for movie in user_data["friends"][num]["watched"]: - friends_watched_list.append(movie["title"]) - - - friend_set = set(friends_watched_list) + friends_unique_watched = get_friends_unique_watched(user_data) - user_set = set(user_watched_list) + friends_recs =[] - friend_movie_reccs = friend_set - user_set + for movie in friends_unique_watched: + if movie["host"] in user_data["subscriptions"]: + friends_recs.append(movie) - friends_recommend = list(friend_movie_reccs) - - user_subscriptions = [] - - for subscription in user_data["subscriptions"]: - user_subscriptions.append(subscription) - - friends_recommended_flicks = [] - - for num in range(0, len(user_data["friends"])): - for movie in user_data["friends"][num]["watched"]: - if movie["title"] in friends_recommend and movie["host"] in user_subscriptions: - friends_recommended_flicks.append(movie) - - return friends_recommended_flicks + return friends_recs # ----------------------------------------- # ------------- WAVE 5 -------------------- # ----------------------------------------- def get_new_rec_by_genre(user_data): - user_seen_movies = [] - friends_seen_movies = [] + recs_by_genre = [] fav_genre = get_most_watched_genre(user_data) + friends_unique_watched = get_friends_unique_watched(user_data) - for dictionary in user_data["watched"]: - user_seen_movies.append(dictionary["title"]) - - for num in range(0, len(user_data["friends"])): - for dictionary in user_data["friends"][num]["watched"]: - friends_seen_movies.append(dictionary["title"]) - - user_watched = set(user_seen_movies) - friend_watched = set(friends_seen_movies) - - friends_recs = list(friend_watched - user_watched) - - for num in range(0, len(user_data["friends"])): - for dictionary in user_data["friends"][num]["watched"]: - if dictionary["title"] in friends_recs and dictionary["genre"] == fav_genre: - recs_by_genre.append(dictionary) + for movie in friends_unique_watched: + if movie["genre"] == fav_genre: + recs_by_genre.append(movie) return recs_by_genre def get_rec_from_favorites(user_data): - user_favs = [] - friend_movies = [] - - for dictionary in user_data["favorites"]: - user_favs.append(dictionary["title"]) - - for num in range(0, len(user_data["friends"])): - for dictionary in user_data["friends"][num]["watched"]: - friend_movies.append(dictionary["title"]) - - user_set = set(user_favs) - friends_set = set(friend_movies) - - movies_to_watch = user_set - friends_set - - user_fav_movies = list(movies_to_watch) - - fav_recommendations = [] - - for dictionary in user_data["favorites"]: - for movie in user_fav_movies: - if movie == dictionary["title"]: - fav_recommendations.append(dictionary) + + favs = [] - return fav_recommendations + for movie in user_data["favorites"]: + favs.append(movie) + + for movie in user_data["friends"]: + for movie in movie["watched"]: + if movie in favs: + favs.remove(movie) + + return favs