示例#1
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
示例#2
0
    def test_add_review(self):
        user1 = User('user1', 'pw12345')
        movie1 = Movie("Star War", 19879)
        movie1.runtime_minutes = 120
        user1.watch_movie(movie1)
        review = Review(movie1, "This is a great movie!", 9)
        user1.add_review(review)

        assert user1.reviews == [review]
示例#3
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 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)
 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)
示例#6
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)
示例#7
0
 def test_user(self):
     movie = Movie("Moana", 2016)
     movie.runtime_minutes = 50
     review_text = "This movie was very enjoyable."
     rating = 8
     review = Review(movie, review_text, rating)
     user1 = User('Martin', 'pw12345')
     user2 = User('Ian', 'pw67890')
     user3 = User('Daniel', 'pw87465')
     print(user3.time_spent_watching_movies_minutes)
     user3.watch_movie(movie)
     user3.add_review(review)
     print(user3.time_spent_watching_movies_minutes)
     print(user3.watched_movies)
     print(user3.reviews)
     print(user1 == user2)
     print(user1)
     print(user2)
     print(user3)
示例#8
0
def test_add_review():
    user = User("Jack Huang", "123124")
    movie1 = Movie("Your Name", 2000)
    movie2 = Movie("Spirited Away", 1995)
    movie3 = Movie("Avengers 4", 1899)

    review1 = Review(movie1, "Good 1", 1)
    review2 = Review(movie2, "Good 2", 2)
    review3 = Review(movie3, "Good 3", 3)

    assert user.reviews == []
    user.add_review(review1)
    user.add_review(review2)
    user.add_review(review3)
    assert user.reviews == [
        Review(movie1, "Good 1", 1),
        Review(movie2, "Good 2", 2),
        Review(movie3, "Good 3", 3)
    ]
示例#9
0
    def test_all(self):
        user1 = User("nathanl127", "passwordgoeshere")
        user2 = User("boomer127", "passwordgoeshere")
        review = Review(Movie("Star Wars", 1999), "Great Movie", 10)
        a_movie = Movie("Back To The Future", 1965)
        a_movie.runtime_minutes = 10

        assert user1.user_name == "nathanl127"
        assert user1.password == "passwordgoeshere"
        assert user1.reviews == []
        assert user1.time_spent_watching_movies_minutes == 0
        assert len(user1.watched_movies) == 0

        user1.watch_movie(a_movie)
        assert len(user1.watched_movies) == 1
        assert user1.time_spent_watching_movies_minutes == 10

        user1.add_review(review)
        assert len(user1.reviews) == 1

        assert repr(user1) == "<User nathanl127>"
        assert user2 < user1
        assert hash(user1) != hash(user2)
示例#10
0
    def test_user(self):  # add movie
        user1 = User('  Martin   ', 'pw12345')
        print(user1.user_name)

        user1 = User('Martin', 'pw12345')
        user2 = User('Ian', 'pw67890')
        user3 = User('Daniel', 'pw87465')
        print(user1)
        print(user2)
        print(user3)

        movie1 = Movie("Up", 2009)
        movie1.runtime_minutes = 150
        user1.watch_movie(movie1)
        user1.watch_movie(movie1)
        print("Watched Movies:", user1.watched_movies)
        print("Watching  Time:", user1.time_spent_watching_movies_minutes)

        review1 = Review(movie1, "test", 5)
        user1.add_review(review1)
        user1.add_review(review1)

        print(user1.reviews)
示例#11
0
    def test_add_review(self):
        # initialise the different movies
        movies = [
            Movie("Moana", 2016),
            Movie("Guardians of the Galaxy", 2014),
            Movie("Ice Age", 2002),
            Movie("Transformers", 2007)
        ]
        movies[0].runtime_minutes = 107
        movies[1].runtime_minutes = 121
        movies[2].runtime_minutes = 103
        movies[3].runtime_minutes = 144
        movie = Movie("Us", 2019)
        movie.runtime_minutes = 121
        random_movie1 = Movie("Black Panther", 2018)
        random_movie1.runtime_minutes = 135
        random_movie2 = Movie("Night School", 2018)
        random_movie2.runtime_minutes = 112

        # user 1
        user1 = User("Martin", "pw12345")
        for mov in movies:
            user1.watch_movie(mov)
        user1.watchlist.add_movie(movie)
        user1.watchlist.add_movie(random_movie1)

        # user 2
        user2 = User("Alfie", "pw23456")
        user2.watch_movie(movies[0])
        user2.watchlist.add_movie(random_movie1)
        user2.watchlist.add_movie(random_movie2)

        # user 3 will be added in after the movie is watchingsimulation
        user3 = User("Yara", "pw34567")
        user3.watch_movie(movies[0])
        user3.watch_movie(movies[2])
        user3.watch_movie(movies[3])
        user3.watchlist.add_movie(movie)

        # user 4
        user4 = User("Danny", "pw45678")
        user4.watch_movie(movies[0])
        user4.watch_movie(movies[2])
        user4.watch_movie(movie)
        user4.watchlist.add_movie(random_movie2)

        user_list = [user1, user2, user4]
        simulation = MovieWatchingSimulation(movie, user_list)

        user1.add_review(Review(movies[0], "Daughter loved it", 8))
        user1.add_review(Review(movies[1], "Good laugh", 9))
        user1.add_review(Review(movies[2], "Good for the kids", 9))
        user1.add_review(Review(movies[3], "Great action sequences", 7))

        user2.add_review(Review(movies[0], "It was awesome!!", 10))

        user3.add_review(
            Review(movies[0], "Little siblings absolutely enjoyed it.", 9))
        user3.add_review(
            Review(movies[2], "Brings back all the good memories", 10))
        user3.add_review(Review(movies[3], "I'm a fan of giant robots now", 9))

        user4.add_review(Review(movies[0], "Watched it too many times now", 6))
        user4.add_review(Review(movies[2], "Take me back", 7))
        user4.add_review(Review(movie, "Greatly thrilling", 9))

        assert len(user1.reviews) == 4
        assert len(user2.reviews) == 1
        assert len(user3.reviews) == 3
        assert len(user4.reviews) == 3

        simulation.add_user(user3)

        simulation.add_review(user1, "Very entertaining and suspenseful", 9)
        simulation.add_review(user2, "Definitely not for kids my age", 4)
        simulation.add_review(user3, "Oh that was scary", 9)
        simulation.add_review(user4, "Full of wonderful twists and turns", 10)

        assert len(user1.reviews) == 5
        assert len(user2.reviews) == 2
        assert len(user3.reviews) == 4
        assert len(user4.reviews) == 4
 def write_review(self, user: User, text, rating_num):
     review = Review(self.__movie_to_watch, text, rating_num)
     if isinstance(user, User) and user in self.__user_set:
         user.add_review(review)
         self.__review_dict[user] = review
 def add_review(self, user: User, review_text: str, rating: int):
     user_review = Review(self.__movie, review_text, rating)
     user.add_review(user_review)
示例#14
0
def test_add_review_to_user():
    user = User('mike', 'nope')
    movie = Movie("Moana", 2016)
    review = Review(movie, "was pretty good", 9)
    user.add_review(review)
    assert user.reviews == [review]