Exemplo n.º 1
0
    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]]
        }
Exemplo n.º 2
0
    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"
Exemplo n.º 3
0
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)
Exemplo n.º 5
0
 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>"
Exemplo n.º 6
0
 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
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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
Exemplo n.º 10
0
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 == []
Exemplo n.º 11
0
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
Exemplo n.º 12
0
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]
Exemplo n.º 14
0
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
Exemplo n.º 17
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]
Exemplo n.º 18
0
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
Exemplo n.º 19
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"
Exemplo n.º 20
0
 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
Exemplo n.º 21
0
 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]
Exemplo n.º 22
0
 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)
Exemplo n.º 24
0
 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
Exemplo n.º 25
0
 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)
Exemplo n.º 26
0
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
Exemplo n.º 27
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))
Exemplo n.º 29
0
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)