def test_watching_sim_add_review(self): a = MovieWatchingSimulation() movie1 = Movie("Moana", 2016) movie2 = Movie("Ice Age", 2002) movie3 = Movie("Guardians of the Galaxy", 2012) user1 = User('Jack', 'pw12345') user2 = User('James', 'pw67890') user3 = User('Janice', 'pw87465') review1 = Review(movie1, "Was good", 6) review2 = Review(movie1, "Average", 5) review3 = Review(movie1, "Very Great", 8) review4 = Review(movie2, "Great", 7) review5 = Review(movie2, "Excellent", 9) review6 = Review(movie3, "Boring", 3) a.add_movie_review(review1.movie, user1, review1.rating) a.add_movie_review(review2.movie, user2, review2.rating) a.add_movie_review(review3.movie, user3, review3.rating) a.add_movie_review(review4.movie, user1, review4.rating) a.add_movie_review(review5.movie, user2, review5.rating) a.add_movie_review(review6.movie, user1, review6.rating) a.add_movie_review(review4.movie, user1, review4.rating) assert a.movie_dict == { movie1: [[user1, 6], [user2, 5], [user3, 8]], movie2: [[user1, 7], [user2, 9], [user1, 7]], movie3: [[user1, 3]] }
def test_watching_sim_review_average(self): a = MovieWatchingSimulation() movie1 = Movie("Moana", 2016) movie2 = Movie("Ice Age", 2002) movie3 = Movie("Guardians of the Galaxy", 2012) user1 = User('Jack', 'pw12345') user2 = User('James', 'pw67890') user3 = User('Janice', 'pw87465') review1 = Review(movie1, "Was good", 6) review2 = Review(movie1, "Average", 5) review3 = Review(movie1, "Very Great", 8) review4 = Review(movie2, "Great", 7) review5 = Review(movie2, "Excellent", 9) review6 = Review(movie3, "Boring", 3) a.add_movie_review(review1.movie, user1, review1.rating) a.add_movie_review(review2.movie, user2, review2.rating) a.add_movie_review(review3.movie, user3, review3.rating) a.add_movie_review(review4.movie, user1, review4.rating) a.add_movie_review(review5.movie, user2, review5.rating) a.add_movie_review(review6.movie, user1, review6.rating) a.add_movie_review(review4.movie, user1, review4.rating) assert a.get_movie_rating_average(movie1) == "Average Rating: 6.33" assert a.get_movie_rating_average(Movie("Ice Age", 2003)) == "Unrated: No Reviews"
def test_add_review(): repo = MemoryRepository(movies_mock, [], [], []) u1, u2 = User("bob", "pass123"), User("bobb", "pass12") assert repo.add_user("bob", "pass123") assert repo.add_user("bobb", "pass12") r1 = Review( 1, "Darth Plagueis was dumb, why couldn't he stop his apprentice??!!", 3) r2 = Review(2, "The Sith did nothing wrong, Jedis just spread fake news", 7) r3 = Review(2, "Star Wars is silly", 1) r4 = Review( 2, "Oops the previous review was written by my cat, Star Wars is wonderful", 9) # user_id, review repo.add_review(0, r1) repo.add_review(0, r2) repo.add_review(1, r3) repo.add_review(1, r4) # review for the movie m1 of id "1" assert repo.get_reviews(1) == [(u1, [r1])] assert repo.get_reviews(2) == [(u1, [r2]), (u2, [r3, r4])]
def test_change_movie(self, watching_session): user1 = User("Aidan", "Wasx") user2 = User("Iona", "Mort") watching_session.change_movie(user2, Movie("Lion King", 2019)) assert watching_session.watching == Movie("Cars", 2008) watching_session.change_movie(user1, Movie("Lion King", 2019)) assert watching_session.watching == Movie("Lion King", 2019)
def test_init(self): user1 = User('Martin', 'pw12345') user2 = User('Ian', 'pw67890') user3 = User('Daniel', 'pw87465') assert repr(user1) == "<User martin>" assert repr(user2) == "<User ian>" assert repr(user3) == "<User daniel>"
def test_watched_movies(self): user1 = User('user1', 'pw12345') movie1 = Movie("Star War", 19879) movie1.runtime_minutes = 120 user1.watch_movie(movie1) assert user1.watched_movies == [movie1] assert user1.time_spent_watching_movies_minutes == 120
def test_init(self): user1 = User("Martin", "12345") user2 = User("Vivian", "12345") user_list = [user1, user2] the_movie = Movie("Moana", 2016) watchSimulation1 = MovieWatchingSimulation(user_list, the_movie) assert watchSimulation1.users == user_list
def test_user(): movie1 = Movie("Moana", 2016) movie1.runtime_minutes = 107 movie2 = Movie("The Lion King", 1994) movie2.runtime_minutes = 99 review_text = "This movie was very enjoyable." rating = 8 review = Review(movie1, review_text, rating) user = User("John", "Str0ngP4ssw0rd") user.watch_movie(movie1) user.watch_movie(movie2) user.watch_movie(movie1) user.add_review(review) user2 = User("John", "c0pyc4t") user3 = User("Andrew", "yep") assert user == user2 assert user3 < user2 assert user3.user_name == "andrew" assert user.time_spent_watching_movies_minutes == 313 assert len(user.watched_movies) == 2 assert len(user.reviews) == 1
def test_user_index(): repo = MemoryRepository(movies_mock, [], [], []) assert repo.add_user("a", "c") assert repo.add_user("b", "d") assert repo.get_user(0) == User("a", "c") assert repo.get_user(1) == User("b", "d") assert repo.get_user(2) is None
def test_ignore_all_pending_requests(user, friend): friend2 = User("Picroma", "shadow") friend.send_friend_request(user) friend2.send_friend_request(user) user.ignore_all_pending_requests() assert user.pending_friends == [] assert friend.pending_friends == [] assert friend2.pending_friends == []
def test_normal_user(): user1 = User('Martin', 'pw12345') assert repr(user1) == "<User martin>" movie1 = Movie("Moana", 2016) movie1.runtime_minutes = 107 user1.watch_movie(movie1) assert user1._watched_movies == [Movie("Moana", 2016)] assert user1.time_spent_watching_movies_minutes == 107
def the_sim(): filename = 'datafiles/Data1000Movies.csv' movie_file_reader = MovieFileCSVReader(filename) movie_file_reader.read_csv_file() sim = MovieWatchingSimulation(movie_file_reader) sim.add_user(User("Paul", "wellington")) sim.add_user(User('jessica', 'piano')) return sim
def test_add_user(self): user1 = User("Martin", "12345") user2 = User("Vivian", "12345") user_list = [user1, user2] the_movie = Movie("Moana", 2016) watchSimulation1 = MovieWatchingSimulation(user_list, the_movie) user3 = User("Mark", "54321") watchSimulation1.add_user(user3) assert watchSimulation1.users == [user1, user2, user3]
def test_compare(): user1 = User("Brad Pitt", 4) user2 = User("brad PiTt", 5) assert user1 == user2 user2 = 4 assert user1 != user2 user1 = User("", "goat") user2 = User(45, "HFTbhy") assert user1 == user2
def test_done_watch(self): user1 = User("Martin", "12345") user2 = User("Vivian", "12345") the_movie = Movie("Moana", 2016) user1.add_watchList(the_movie) user_list = [user1, user2] watchSimulation1 = MovieWatchingSimulation(user_list, the_movie) watchSimulation1.done_watching() assert watchSimulation1.finish_watch == True
def test_watch_done(self): user1 = User("Martin", "12345") user2 = User("Vivian", "12345") the_movie = Movie("Moana", 2016) user1.add_watchList(the_movie) assert user1.watchList == [the_movie] user_list = [user1, user2] watchSimulation1 = MovieWatchingSimulation(user_list, the_movie) watchSimulation1.done_watching() assert len(user1.watchList) == 0
def test_add_review(): user1 = User('Me', 'pw12345') movie2 = Movie("Star Wars", 1977) review = Review( movie2, "My car turned into the Millennium Falcon after showing the movie to it", 10) user1.add_review(review) assert user1.reviews == [review]
def test_preference_by_watching(): user = User("Trump", "twitterking") user.watch_movie(movie_list[0]) indicator=0 for movie in recommend.get_recommended_watch_list(user): for genre in movie.genres: if genre in recommend.get_user_preference(user): indicator+=1 assert indicator > 0 # all movie is linked to preference indicator=0
def test_init(self): movie = Movie("Moana", 2016) user2 = User('Ian', 'pw67890') user3 = User('Daniel', 'pw87465') user4 = User('Martin', 'pw12345') user_list = [user2, user3, user4] watch = MovieWatchingSimulation(user_list, movie) assert repr( watch ) == "Movie watching : <Movie Moana, 2016>\nUser(s) watching : [<User ian>, <User daniel>, <User martin>]\nReview : None"
def test_add_review(self): movie = Movie('Moana', 2016) review_text = "This movie was very enjoyable." rating = 8 user2 = User('Ian', 'pw67890') user3 = User('Daniel', 'pw87465') user4 = User('Martin', 'pw12345') user_list = [user2, user3, user4] watch = MovieWatchingSimulation(user_list, movie) watch.add_review(review_text, rating) assert (watch.review != None) == True
def test_change_host(self, watching_session): user1 = User("Aidan", "Wasx") user2 = User("Iona", "Mort") watching_session.change_host(user2, user2) assert watching_session.host == user1 watching_session.add_friend(user1,user2) assert watching_session.size() == 2 watching_session.change_host(user1, user2) assert watching_session.host == user2 assert watching_session.size() == 1 assert watching_session.users_in_session() == [user2]
def test_kick_user(self, watching_session): user1 = User("Aidan", "Wasx") user2 = User("Iona", "Mort") watching_session.add_friend(user1, user2) assert watching_session.size() == 2 watching_session.kick_user(user2, user2) assert watching_session.size() == 2 watching_session.kick_user(user1, User("Dave", "Brown")) assert watching_session.size() == 2 watching_session.kick_user(user1, user2) assert watching_session.size() == 1
def create_and_add_review_movie_and_user_to_group_and_individual_list( self, user: User, review_text: str, rating: int): if type(user) is not User or type(review_text) is not str or type( rating) is not int: raise TypeError() else: self._users.append(user) review = Review(self._movie_watched_together, review_text, rating) self._reviews.append(review) user.watch_movie(self._movie_watched_together) user.add_review(review)
def test_end_session(self, watching_session): user1 = User("Aidan", "Wasx") user2 = User("Iona", "Mort") watching_session.add_friend(user1, user2) watching_session.end_session(user2) assert watching_session.size() == 2 assert watching_session.watching == Movie("Cars", 2008) watching_session.end_session(user1) assert watching_session.size() == 1 assert watching_session.users_in_session() == [user1] assert watching_session.watching is None
def record_user_and_review(self, user: User, review_text: str, rating: int): if type(user) is not User or type(review_text) is not str or type( rating) is not int: raise TypeError() else: self._users.append(user) review = Review(self._movie_watched_together, review_text, rating) self._reviews.append(review) user.watch_movie(self._movie_watched_together) user.add_review(review)
def test_preference_by_preference(): user = User("Trump", "twitterking") user.add_preference(Genre("Action")) user.add_preference(Genre("Sci-Fi")) assert user.preference.sort()==recommend.get_user_preference(user).sort() indicator = 0 for movie in recommend.get_recommended_watch_list(user): for genre in movie.genres: if genre in recommend.get_user_preference(user): indicator += 1 assert indicator > 0 # all movie is linked to preference indicator = 0
def test_init(user): assert user.watched_movies == [] assert user.time_spent_watching_movies_minutes == 0 assert user.reviews == [] assert user.username == "aram485" assert user.password == "spiderman" user1 = User("", 4) user2 = User(45, "") assert user1.username is None assert user1.password is None assert user2.username is None assert user2.password is None
def test_repr_(): movie1 = Movie("Moana", 2016) movie1.runtime_minutes = 107 user1 = User('Martin', 'pw12345') review_text1 = "This movie was very enjoyable." rating1 = 9 user2 = User('Ashton', 'pw54321') review_text2 = "This movie was ok." rating2 = 6 cflix = MovieWatchingSimulation(movie1) cflix.record_user_and_review(user1, review_text1, rating1) cflix.record_user_and_review(user2, review_text2, rating2) print(repr(cflix))
def test_record_user_and_review_multiple(): movie1 = Movie("Moana", 2016) movie1.runtime_minutes = 107 user1 = User('Martin', 'pw12345') review_text1 = "This movie was very enjoyable." rating1 = 9 user2 = User('Ashton', 'pw54321') review_text2 = "This movie was ok." rating2 = 6 cflix = MovieWatchingSimulation(movie1) cflix.create_and_add_review_movie_and_user_to_group_and_individual_list(user1, review_text1, rating1) cflix.create_and_add_review_movie_and_user_to_group_and_individual_list(user2, review_text2, rating2) assert len(cflix.reviews) == 2 assert len(cflix.users) == 2
def simulate( self, num_users: int = _DEFAULT_USER_COUNT, min_num_movies: int = _DEFAULT_MIN_MOVIES_PER_USER, max_num_movies: int = _DEFAULT_MAX_MOVIES_PER_USER) -> 'State': self._validate_params(num_users, min_num_movies, max_num_movies) users = [] reviews = [] num_movies = len(self._movies) upper_bound = min(max_num_movies or num_movies, num_movies) population = list(range(0, num_movies)) now = datetime.utcnow().timestamp() for i in range(num_users): username = _rand_string(4) password = _rand_string() user = User(username, password) # Pick n distinct movies movies = [ self._movies[idx] for idx in sample( population, randint(min_num_movies, upper_bound)) ] # Add those movies to the user's watchlist for movie in movies: user.add_to_watchlist(movie) # Watch a random number of movies on the user's watchlist for j in range(randint(0, user.watchlist_size())): user.watch_movie(movies[j]) # Review a random number of the movies the user watched for j in range(randint(0, len(user.watched_movies))): movie = movies[j] review_text = _rand_string() rating = randint(0, 10) release_date = datetime(movie.release_date, 1, 1).timestamp() delta = randint( 0, int(now - release_date) ) # float -> int will be lossy but not a big deal here delta += random() # Add a random number of milliseconds timestamp = datetime.fromtimestamp(now - delta) review = Review(movie, review_text, rating, timestamp) user.add_review(review) reviews.append(review) users.append(user) return self.State(users, reviews)