From 9125480e96efd4656018cbb8f7a5e5375cddc562 Mon Sep 17 00:00:00 2001 From: Madina-j Date: Mon, 23 Sep 2024 11:30:09 -0700 Subject: [PATCH 01/19] implement create_movie function --- tests/test_wave_01.py | 2 +- viewing_party/party.py | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index 669efee6..d8e3f5d9 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 diff --git a/viewing_party/party.py b/viewing_party/party.py index 6d34a6b5..aa7ea6b5 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -1,7 +1,15 @@ # ------------- WAVE 1 -------------------- def create_movie(title, genre, rating): - pass + + movie = { + "title": title, + "genre": genre, + "rating": rating + } + if movie["title"] and movie["genre"] and movie["rating"]: + return movie + else: return None # ----------------------------------------- # ------------- WAVE 2 -------------------- From c05e81794a65cd77d7951afa7d9297423e05cb6c Mon Sep 17 00:00:00 2001 From: Madina-j Date: Mon, 23 Sep 2024 15:36:53 -0700 Subject: [PATCH 02/19] implemented add_to_watched function --- tests/test_wave_01.py | 10 +++++----- viewing_party/party.py | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index d8e3f5d9..bfde8051 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 @@ -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_non_empty_user_watched(): # Arrange movie = { diff --git a/viewing_party/party.py b/viewing_party/party.py index aa7ea6b5..98de84a6 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -11,6 +11,22 @@ def create_movie(title, genre, rating): return movie else: return None +user_data = {"watched": []} +movie = { + "title": "Title A", + "genre": "Horror", + "rating": 3.5 + } +def add_to_watched(user_data, movie): + user_data["watched"].append(movie) + print(len(user_data["watched"])) + return user_data + +print(add_to_watched(user_data,movie)) + + +def watch_movie(user_data,title): + pass # ----------------------------------------- # ------------- WAVE 2 -------------------- # ----------------------------------------- From 061598ce1b493b49ef790150bb820d8d7f0c1a64 Mon Sep 17 00:00:00 2001 From: Madina-j Date: Mon, 23 Sep 2024 15:41:53 -0700 Subject: [PATCH 03/19] deleted all unnecessary lines --- viewing_party/party.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index 98de84a6..5c8b2f96 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -11,21 +11,13 @@ def create_movie(title, genre, rating): return movie else: return None -user_data = {"watched": []} -movie = { - "title": "Title A", - "genre": "Horror", - "rating": 3.5 - } def add_to_watched(user_data, movie): user_data["watched"].append(movie) print(len(user_data["watched"])) return user_data -print(add_to_watched(user_data,movie)) - -def watch_movie(user_data,title): +def add_to_watchlist(user_data,title): pass # ----------------------------------------- # ------------- WAVE 2 -------------------- From 3cbd23c1f105a9f66d7afc62c6774a840dc97805 Mon Sep 17 00:00:00 2001 From: Madina-j Date: Mon, 23 Sep 2024 15:58:27 -0700 Subject: [PATCH 04/19] add in party.py named all functions with pass from README.md --- viewing_party/party.py | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index 5c8b2f96..2d4c4ac2 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -16,24 +16,50 @@ def add_to_watched(user_data, movie): print(len(user_data["watched"])) return user_data - -def add_to_watchlist(user_data,title): +# No.3 +def add_to_watchlist(user_data,movie): + pass +# No.4 +def watch_movie(user_data,title): pass + # ----------------------------------------- # ------------- WAVE 2 -------------------- # ----------------------------------------- +# No.1 +def get_watched_avg_rating(user_data): + pass + +# No.2 +def get_most_watched_genre(user_data): + pass + # ----------------------------------------- # ------------- WAVE 3 -------------------- # ----------------------------------------- - +# No.1 +def get_unique_watched(user_data): + pass +# No.2 +def get_friends_unique_watched(user_data): + pass # ----------------------------------------- # ------------- WAVE 4 -------------------- # ----------------------------------------- +# No.1 +def get_available_recs(user_data): + pass # ----------------------------------------- # ------------- WAVE 5 -------------------- # ----------------------------------------- +# No.1 +def get_new_rec_by_genre(user_data): + pass +# No.2 +def get_rec_from_favorites(user_data): + pass From 380a477ba828c55297d5110b1ce76bd36ccf2795 Mon Sep 17 00:00:00 2001 From: Aksana Date: Mon, 23 Sep 2024 17:21:51 -0700 Subject: [PATCH 05/19] wrote create_movie() add_to_watched() add_to_watchlist functions --- tests/test_wave_01.py | 18 +++++++++--------- viewing_party/party.py | 25 ++++++++++++++++++------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index d8e3f5d9..0f6eb3f6 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() +#@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" @@ -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_non_empty_user_watched(): # Arrange movie = { @@ -99,7 +99,7 @@ def test_adds_movie_to_non_empty_user_watched(): assert movie in updated_data["watched"] assert FANTASY_2 in updated_data["watched"] -@pytest.mark.skip() +#@pytest.mark.skip() def test_adds_movie_to_user_watchlist(): # Arrange movie = { @@ -120,7 +120,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_adds_movie_to_non_empty_user_watchlist(): # Arrange movie = { @@ -140,7 +140,7 @@ def test_adds_movie_to_non_empty_user_watchlist(): assert movie in updated_data["watchlist"] assert FANTASY_2 in updated_data["watchlist"] -@pytest.mark.skip() +#@pytest.mark.skip() def test_moves_movie_from_watchlist_to_empty_watched(): # Arrange janes_data = { diff --git a/viewing_party/party.py b/viewing_party/party.py index aa7ea6b5..6ecc239d 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -1,16 +1,27 @@ # ------------- WAVE 1 -------------------- def create_movie(title, genre, rating): - - movie = { - "title": title, - "genre": genre, - "rating": rating - } + movie = {"title": title, "genre": genre, "rating": rating} + if movie["title"] and movie["genre"] and movie["rating"]: return movie - else: return None + else: + return None + + +def add_to_watched(user_data, movie): + #user_data = {"watched": []} + #movie = create_movie() + user_data["watched"].append(movie) + return user_data + +def add_to_watchlist(user_data, movie): + user_data["watchlist"].append(movie) + + + return user_data + # ----------------------------------------- # ------------- WAVE 2 -------------------- # ----------------------------------------- From 8410fe63c35950de0dceb4242bd3d83800c02d57 Mon Sep 17 00:00:00 2001 From: Aksana Date: Mon, 23 Sep 2024 18:26:15 -0700 Subject: [PATCH 06/19] rearrange file --- tests/test_wave_01.py | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index 1ca93f9e..19db9de4 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -36,11 +36,7 @@ def test_create_no_title_movie(): # Assert assert new_movie is None -<<<<<<< HEAD -#@pytest.mark.skip() -======= # @pytest.mark.skip() ->>>>>>> 3cbd23c1f105a9f66d7afc62c6774a840dc97805 def test_create_no_genre_movie(): # Arrange movie_title = "Title A" @@ -53,11 +49,7 @@ def test_create_no_genre_movie(): # Assert assert new_movie is None -<<<<<<< HEAD -#@pytest.mark.skip() -======= # @pytest.mark.skip() ->>>>>>> 3cbd23c1f105a9f66d7afc62c6774a840dc97805 def test_create_no_rating_movie(): # Arrange movie_title = "Title A" @@ -70,11 +62,7 @@ def test_create_no_rating_movie(): # Assert assert new_movie is None -<<<<<<< HEAD -#@pytest.mark.skip() -======= # @pytest.mark.skip() ->>>>>>> 3cbd23c1f105a9f66d7afc62c6774a840dc97805 def test_adds_movie_to_user_watched(): # Arrange movie = { @@ -95,11 +83,7 @@ def test_adds_movie_to_user_watched(): assert updated_data["watched"][0]["genre"] == GENRE_1 assert updated_data["watched"][0]["rating"] == RATING_1 -<<<<<<< HEAD -#@pytest.mark.skip() -======= # @pytest.mark.skip() ->>>>>>> 3cbd23c1f105a9f66d7afc62c6774a840dc97805 def test_adds_movie_to_non_empty_user_watched(): # Arrange movie = { From 12a86f1e7dc672feeff6d3946580eb47b0d54dda Mon Sep 17 00:00:00 2001 From: Madina-j Date: Mon, 23 Sep 2024 18:39:03 -0700 Subject: [PATCH 07/19] add numbers for functions --- viewing_party/party.py | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index d7ebf2fe..8f0c6c32 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -1,5 +1,5 @@ # ------------- WAVE 1 -------------------- - +# No.1 def create_movie(title, genre, rating): movie = {"title": title, "genre": genre, "rating": rating} @@ -7,22 +7,16 @@ def create_movie(title, genre, rating): return movie else: return None - - -def add_to_watchlist(user_data, movie): - user_data["watchlist"].append(movie) - - - return user_data - +# No.2 def add_to_watched(user_data, movie): user_data["watched"].append(movie) print(len(user_data["watched"])) return user_data # No.3 -def add_to_watchlist(user_data,movie): - pass +def add_to_watchlist(user_data, movie): + user_data["watchlist"].append(movie) + return user_data # No.4 def watch_movie(user_data,title): pass From 14b5e85e3ac25d5fa98607dfe08784fbeb0093a7 Mon Sep 17 00:00:00 2001 From: Aksana Date: Mon, 23 Sep 2024 18:58:45 -0700 Subject: [PATCH 08/19] rearrange file --- viewing_party/party.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index d7ebf2fe..8a2ef555 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -8,21 +8,17 @@ def create_movie(title, genre, rating): else: return None - -def add_to_watchlist(user_data, movie): - user_data["watchlist"].append(movie) - - - return user_data - +# 2 def add_to_watched(user_data, movie): user_data["watched"].append(movie) print(len(user_data["watched"])) return user_data - -# No.3 -def add_to_watchlist(user_data,movie): - pass + +# 3 +def add_to_watchlist(user_data, movie): + user_data["watchlist"].append(movie) + return user_data + # No.4 def watch_movie(user_data,title): pass From f4072c3a2bdc481d8ed6b6b5a66b612aedb86eee Mon Sep 17 00:00:00 2001 From: Aksana Date: Tue, 24 Sep 2024 13:16:13 -0700 Subject: [PATCH 09/19] partially wrote function4 for wave1 --- tests/test_wave_01.py | 8 ++------ viewing_party/party.py | 13 ++++++++++++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index 19db9de4..b3e6434f 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -19,11 +19,7 @@ def test_create_successful_movie(): assert new_movie["genre"] == GENRE_1 assert new_movie["rating"] == pytest.approx(RATING_1) -<<<<<<< HEAD -#@pytest.mark.skip() -======= # @pytest.mark.skip() ->>>>>>> 3cbd23c1f105a9f66d7afc62c6774a840dc97805 def test_create_no_title_movie(): # Arrange movie_title = None @@ -168,7 +164,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 @@ -192,7 +188,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() +#@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 8f0c6c32..43e964ed 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -19,7 +19,18 @@ def add_to_watchlist(user_data, movie): return user_data # No.4 def watch_movie(user_data,title): - pass + print(user_data, title) + #user_data["watchlist"] = add_to_watchlist(user_data) + #ser_data["watched"] = add_to_watched(user_data) + for movie in user_data["watchlist"]: + for value in movie.values(): + if title in value: + user_data["watchlist"].remove(movie) + user_data["watched"].append(movie) + return user_data + else: + return user_data + # ----------------------------------------- # ------------- WAVE 2 -------------------- From 8d3048d12e60a6eb38cc1eb1d9e2c080422cf69d Mon Sep 17 00:00:00 2001 From: Madina-j Date: Tue, 24 Sep 2024 14:09:52 -0700 Subject: [PATCH 10/19] implemented get_watched_avg_rating --- tests/test_wave_01.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index 19db9de4..6c0d9ef9 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -20,9 +20,6 @@ def test_create_successful_movie(): assert new_movie["rating"] == pytest.approx(RATING_1) <<<<<<< HEAD -#@pytest.mark.skip() -======= -# @pytest.mark.skip() >>>>>>> 3cbd23c1f105a9f66d7afc62c6774a840dc97805 def test_create_no_title_movie(): # Arrange From 264eaa8b3de445ba771cd53b5d62f88b99a524d3 Mon Sep 17 00:00:00 2001 From: Madina-j Date: Tue, 24 Sep 2024 15:33:19 -0700 Subject: [PATCH 11/19] implemented get_watched_avg_rating function --- tests/test_wave_02.py | 4 ++-- viewing_party/party.py | 27 ++++++++++++++++++--------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/tests/test_wave_02.py b/tests/test_wave_02.py index 19f045c7..acd7c877 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 8f0c6c32..cb17e954 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -1,3 +1,4 @@ +from copy import deepcopy # ------------- WAVE 1 -------------------- # No.1 def create_movie(title, genre, rating): @@ -17,18 +18,26 @@ def add_to_watched(user_data, movie): def add_to_watchlist(user_data, movie): user_data["watchlist"].append(movie) return user_data -# No.4 +# No.4 -A def watch_movie(user_data,title): pass # ----------------------------------------- # ------------- WAVE 2 -------------------- # ----------------------------------------- -# No.1 +# No.1-M def get_watched_avg_rating(user_data): - pass + avg_rating = 0 + ratings = 0 + for movies in user_data.values(): + for movie in movies: + rating = movie["rating"] + ratings += rating + avg_rating = ratings/ len(movies) + return avg_rating -# No.2 + +# No.2-A def get_most_watched_genre(user_data): pass @@ -38,26 +47,26 @@ def get_most_watched_genre(user_data): # ------------- WAVE 3 -------------------- # ----------------------------------------- -# No.1 +# No.1-M def get_unique_watched(user_data): pass -# No.2 +# No.2-A def get_friends_unique_watched(user_data): pass # ----------------------------------------- # ------------- WAVE 4 -------------------- # ----------------------------------------- -# No.1 +# No.1-M def get_available_recs(user_data): pass # ----------------------------------------- # ------------- WAVE 5 -------------------- # ----------------------------------------- -# No.1 +# No.1-A def get_new_rec_by_genre(user_data): pass -# No.2 +# No.2-M def get_rec_from_favorites(user_data): pass From 9a5495399f6348d4f30f0d3b89b0776925ebc9f0 Mon Sep 17 00:00:00 2001 From: Aksana Date: Wed, 25 Sep 2024 14:56:54 -0700 Subject: [PATCH 12/19] implement function 4 in wave 1, made test for wave 1 --- tests/test_wave_01.py | 9 +++++---- viewing_party/party.py | 17 ++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index b3e6434f..6aed219a 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -158,8 +158,8 @@ def test_moves_movie_from_watchlist_to_empty_watched(): # Assert assert len(updated_data["watchlist"]) == 0 assert len(updated_data["watched"]) == 1 - - raise Exception("Test needs to be completed.") + assert updated_data["watched"][0]["title"] == MOVIE_TITLE_1 + #raise Exception("Test needs to be completed.") # ******************************************************************************************* # ****** Add assertions here to test that the correct movie was added to "watched" ********** # ******************************************************************************************* @@ -182,8 +182,9 @@ def test_moves_movie_from_watchlist_to_watched(): # Assert assert len(updated_data["watchlist"]) == 1 assert len(updated_data["watched"]) == 2 - - raise Exception("Test needs to be completed.") + assert HORROR_1 in updated_data["watched"] + + #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 43e964ed..756b82ce 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -19,18 +19,17 @@ def add_to_watchlist(user_data, movie): return user_data # No.4 def watch_movie(user_data,title): - print(user_data, title) + #print(user_data, title) #user_data["watchlist"] = add_to_watchlist(user_data) #ser_data["watched"] = add_to_watched(user_data) for movie in user_data["watchlist"]: - for value in movie.values(): - if title in value: - user_data["watchlist"].remove(movie) - user_data["watched"].append(movie) - return user_data - else: - return user_data - + if title in movie["title"]: + user_data["watchlist"].remove(movie) + user_data["watched"].append(movie) + return user_data + else: + return user_data + # ----------------------------------------- # ------------- WAVE 2 -------------------- From 12f7ebab4a1c4336b7189153cfcd886ff8af05e6 Mon Sep 17 00:00:00 2001 From: Aksana Date: Thu, 26 Sep 2024 13:20:02 -0700 Subject: [PATCH 13/19] implemented function in wave 3 --- tests/test_wave_02.py | 6 ++--- viewing_party/party.py | 51 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/tests/test_wave_02.py b/tests/test_wave_02.py index acd7c877..831ae5f0 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_most_watched_genre_order_mixed(): # Arrange janes_data = clean_wave_2b_data() @@ -51,7 +51,7 @@ def test_most_watched_genre_order_mixed(): assert popular_genre == "Fantasy" assert janes_data == clean_wave_2b_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 35234eeb..8886a39c 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -20,17 +20,11 @@ def add_to_watchlist(user_data, movie): return user_data # No.4 -A def watch_movie(user_data,title): - #print(user_data, title) - #user_data["watchlist"] = add_to_watchlist(user_data) - #ser_data["watched"] = add_to_watched(user_data) for movie in user_data["watchlist"]: if title in movie["title"]: user_data["watchlist"].remove(movie) user_data["watched"].append(movie) - return user_data - else: - return user_data - + return user_data # ----------------------------------------- # ------------- WAVE 2 -------------------- @@ -49,7 +43,20 @@ def get_watched_avg_rating(user_data): # No.2-A def get_most_watched_genre(user_data): - pass + if len(user_data["watched"]) == 0: + return None + most_watched_list = [] + max_count = 0 + max_genre = 0 + for movie in user_data["watched"]: + #for genre in movie["genre"]: + most_watched_list.append(movie["genre"]) + for genre in set(most_watched_list): + if most_watched_list.count(genre) > max_count: + max_count = most_watched_list.count(genre) + max_genre = genre + + return max_genre @@ -62,7 +69,33 @@ def get_unique_watched(user_data): pass # No.2-A def get_friends_unique_watched(user_data): - pass + user_data_copy = deepcopy(user_data) + unique_watched = [] + user_watched_list = [] + #unique_list = [] + user_watched_unique = [] + for movie in user_data_copy["watched"]: + user_watched_list.append(movie["title"]) + for friend in user_data_copy["friends"]: + for movie in friend["watched"]: + if movie["title"] not in user_watched_list: + unique_watched.append(movie) + #unique_list.append(movie["title"]) + #unique_list_set = set(unique_list) + #print(unique_list_set) + unique_list_set = set() + + for movie in unique_watched: + if movie["title"] not in unique_list_set: + user_watched_unique.append(movie) + unique_list_set.add(movie["title"]) + #print(user_watched_unique) + + return user_watched_unique + pr + + + # ----------------------------------------- # ------------- WAVE 4 -------------------- # ----------------------------------------- From 37d39b7d480d7b0ff5bab8109ff82ca88abebfb3 Mon Sep 17 00:00:00 2001 From: Madina-j Date: Thu, 26 Sep 2024 17:52:46 -0700 Subject: [PATCH 14/19] implemented get_unique_watched function --- viewing_party/party.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index 880db05f..5d580bd8 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -1,4 +1,4 @@ -from copy import deepcopy +import copy # ------------- WAVE 1 -------------------- # No.1 def create_movie(title, genre, rating): @@ -60,10 +60,21 @@ def get_most_watched_genre(user_data): # No.1-M def get_unique_watched(user_data): - pass + my_data = user_data["watched"].copy() + friends_data = user_data["friends"] + for watched in friends_data: + their_watched = watched["watched"] + for their_movie in their_watched: + for i in range(0, len(my_data)): + if their_movie["title"] == my_data[i]["title"]: + del my_data[i] + break + return my_data + # No.2-A def get_friends_unique_watched(user_data): pass + # ----------------------------------------- # ------------- WAVE 4 -------------------- # ----------------------------------------- From 22b79abb68b3fbb89b1bb7c1a411d66c03cbbd40 Mon Sep 17 00:00:00 2001 From: Aksana Date: Thu, 26 Sep 2024 18:54:56 -0700 Subject: [PATCH 15/19] implemented function 1 for wave 5, wrote tests for tests_wave_03, tests_wave_05 --- play_tester.py | 18 +++++++++--------- tests/test_wave_03.py | 18 +++++++++++------- tests/test_wave_05.py | 13 +++++++++---- viewing_party/party.py | 22 +++++++++++++--------- 4 files changed, 42 insertions(+), 29 deletions(-) diff --git a/play_tester.py b/play_tester.py index 9e2aecf4..3a69aaa8 100644 --- a/play_tester.py +++ b/play_tester.py @@ -14,16 +14,16 @@ pp.pprint(FANTASY_1) pp.pprint(FANTASY_2) -# print("\n-----Wave 02 user_data-----") -# pp.pprint(clean_wave_2_data()) +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-----") -#pp.pprint(clean_wave_4_data()) +#Wave 04 user data +print("\n-----Wave 04 user_data-----") +pp.pprint(clean_wave_4_data()) # Wave 05 user data -#print("\n-----Wave 05 user_data-----") -#pp.pprint(clean_wave_5_data()) +print("\n-----Wave 05 user_data-----") +pp.pprint(clean_wave_5_data()) diff --git a/tests/test_wave_03.py b/tests/test_wave_03.py index 04642936..a9c2d34d 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() @@ -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() @@ -53,14 +53,18 @@ def test_friends_unique_movies_not_duplicated(): friends_unique_movies = get_friends_unique_watched(amandas_data) # Assert - assert len(friends_unique_movies) == 3 + new_var = friends_unique_movies + assert len(new_var) == 3 + assert INTRIGUE_3 in friends_unique_movies + assert FANTASY_4 in friends_unique_movies + assert HORROR_1 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/tests/test_wave_05.py b/tests/test_wave_05.py index b2ba9ad3..4d50d762 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 these tests ********** # ********************************************************************* diff --git a/viewing_party/party.py b/viewing_party/party.py index 8886a39c..a692ed7c 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -72,7 +72,6 @@ def get_friends_unique_watched(user_data): user_data_copy = deepcopy(user_data) unique_watched = [] user_watched_list = [] - #unique_list = [] user_watched_unique = [] for movie in user_data_copy["watched"]: user_watched_list.append(movie["title"]) @@ -80,19 +79,15 @@ def get_friends_unique_watched(user_data): for movie in friend["watched"]: if movie["title"] not in user_watched_list: unique_watched.append(movie) - #unique_list.append(movie["title"]) - #unique_list_set = set(unique_list) - #print(unique_list_set) + unique_list_set = set() for movie in unique_watched: if movie["title"] not in unique_list_set: user_watched_unique.append(movie) - unique_list_set.add(movie["title"]) - #print(user_watched_unique) + unique_list_set.add(movie["title"]) - return user_watched_unique - pr + return user_watched_unique @@ -108,7 +103,16 @@ def get_available_recs(user_data): # ----------------------------------------- # No.1-A def get_new_rec_by_genre(user_data): - pass + fav_genre = get_most_watched_genre(user_data) + recommend = get_friends_unique_watched(user_data) + recommend_watch = [] + if fav_genre is None: + recommend_watch = [] + else: + for movie in recommend: + if fav_genre in movie["genre"]: + recommend_watch.append(movie) + return recommend_watch # No.2-M def get_rec_from_favorites(user_data): From 7bba5d92c053f9c6114599ffa67f000fb4a3e8e6 Mon Sep 17 00:00:00 2001 From: Madina-j Date: Thu, 26 Sep 2024 23:24:34 -0700 Subject: [PATCH 16/19] implemented get_available_recs function --- tests/test_wave_04.py | 6 +++--- viewing_party/party.py | 20 +++++++++++++++++++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/tests/test_wave_04.py b/tests/test_wave_04.py index 49966907..0b0b3c7e 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 = { diff --git a/viewing_party/party.py b/viewing_party/party.py index 67ea447c..78e53eef 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -111,7 +111,25 @@ def get_friends_unique_watched(user_data): # ----------------------------------------- # No.1-M def get_available_recs(user_data): - pass + my_data = user_data["watched"] + my_data_titles = [] + for movie in my_data: + my_data_titles.append(movie["title"]) + the_movies = [] + added_movies = [] + + friends_data = user_data["friends"] + subscriptions = user_data["subscriptions"] + + for watched in friends_data: + their_watched = watched["watched"] + for their_movie in their_watched: + if their_movie["host"] not in subscriptions: + continue + if their_movie["title"] not in my_data_titles and their_movie["title"] not in added_movies: + the_movies.append(their_movie) + added_movies.append(their_movie["title"]) + return the_movies # ----------------------------------------- # ------------- WAVE 5 -------------------- From 8cd0b2b1fec2f8c2c95da5f5bce56bb453f856df Mon Sep 17 00:00:00 2001 From: Madina-j Date: Thu, 26 Sep 2024 23:25:53 -0700 Subject: [PATCH 17/19] implemented get_available_recs function --- tests/test_wave_03.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/test_wave_03.py b/tests/test_wave_03.py index 04642936..0aa062f3 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() @@ -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() @@ -60,7 +60,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() +# @pytest.mark.skip() def test_friends_not_unique_movies(): # Arrange amandas_data = { From b66f03a5783fcc5837dd55501ec64e56d07b73b4 Mon Sep 17 00:00:00 2001 From: Madina-j Date: Fri, 27 Sep 2024 00:45:58 -0700 Subject: [PATCH 18/19] implemented get_rec_from_favorites --- tests/test_wave_05.py | 6 +++--- viewing_party/party.py | 25 ++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/tests/test_wave_05.py b/tests/test_wave_05.py index 4d50d762..2456066e 100644 --- a/tests/test_wave_05.py +++ b/tests/test_wave_05.py @@ -63,7 +63,7 @@ def test_new_genre_rec_from_empty_friends(): # ****** Complete the Act and Assert Portions of these tests ********** # ********************************************************************* -@pytest.mark.skip() +# @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() +# @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() +# @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 cf1948b5..94736ff8 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -144,4 +144,27 @@ def get_new_rec_by_genre(user_data): # No.2-M def get_rec_from_favorites(user_data): - pass + my_data = user_data["favorites"].copy() + + friends_data = user_data["friends"] + for watched in friends_data: + their_watched = watched["watched"] + for their_movie in their_watched: + for i in range(0, len(my_data)): + if their_movie["title"] != my_data[i]["title"]: + del my_data[i] + break + return my_data + +def get_rec_from_favorites(user_data): + my_data = {} + for movie in user_data["favorites"]: + my_data[movie["title"]] = movie; + + friends_data = user_data["friends"] + for watched in friends_data: + their_watched = watched["watched"] + for their_movie in their_watched: + title = their_movie["title"] + my_data.pop(title, None) + return my_data.values(); \ No newline at end of file From a7e6a03f81ac5b8d4cc895e9421770cb56d2fcac Mon Sep 17 00:00:00 2001 From: Madina-j Date: Fri, 27 Sep 2024 10:05:48 -0700 Subject: [PATCH 19/19] cleaned the code --- viewing_party/party.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/viewing_party/party.py b/viewing_party/party.py index 94736ff8..f39589d7 100644 --- a/viewing_party/party.py +++ b/viewing_party/party.py @@ -159,7 +159,7 @@ def get_rec_from_favorites(user_data): def get_rec_from_favorites(user_data): my_data = {} for movie in user_data["favorites"]: - my_data[movie["title"]] = movie; + my_data[movie["title"]] = movie friends_data = user_data["friends"] for watched in friends_data: @@ -167,4 +167,4 @@ def get_rec_from_favorites(user_data): for their_movie in their_watched: title = their_movie["title"] my_data.pop(title, None) - return my_data.values(); \ No newline at end of file + return my_data.values() \ No newline at end of file