Esempio n. 1
0
def test_completed_attributes():
    filename = 'datafiles/Data1000Movies.csv'
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()

    movie_name = "Guardians of the Galaxy"
    movie = movie_file_reader.movie_object(movie_name)

    # normal attributes
    assert movie.title == "Guardians of the Galaxy"
    assert movie.release_year == 2014
    assert movie.description == "A group of intergalactic criminals are forced to work together " \
                                "to stop a fanatical warrior from taking control of the universe."
    assert movie.director == Director("James Gunn")
    assert movie.actors == [
        Actor("Chris Pratt"),
        Actor("Vin Diesel"),
        Actor("Bradley Cooper"),
        Actor("Zoe Saldana")
    ]
    assert movie.genres == [
        Genre("Action"), Genre("Adventure"),
        Genre("Sci-Fi")
    ]
    assert movie.runtime_minutes == 121

    # extra attributes
    assert movie.rank == 1
    assert movie.rating == 8.1
    assert movie.revenue == 333.13
    assert movie.votes == 757074
    assert movie.metascore == 76
Esempio n. 2
0
def load_data(data_path: str, repo: MemoryRepository):
    reader = MovieFileCSVReader(os.path.join(data_path, 'data1000Movies.csv'))
    reader.read_csv_file()
    for actor in reader.dataset_of_actors:
        repo.add_actor(actor)
    for movie in reader.dataset_of_movies:
        repo.add_movie(movie)
        for actor in movie.actors:
            for colleague in movie.actors:
                if not actor.check_if_this_actor_worked_with(
                        colleague) and actor != colleague:
                    actor.add_actor_colleague(colleague)
    for director in reader.dataset_of_directors:
        repo.add_director(director)
    for genre in reader.dataset_of_genres:
        repo.add_genre(genre)
    user = User(user_name="Myles Kennedy",
                password=generate_password_hash("123"))
    review = Review(repo.get_movie("Inception", 2010),
                    "Absolutely incredible movie!", 10)
    repo.add_review(review)
    user.add_review(review)
    user.watchlist.add_movie(repo.get_movie("The Da Vinci Code", 2006))
    user.watchlist.add_movie(repo.get_movie("Moana", 2016))
    repo.add_user(user)
Esempio n. 3
0
def test_movies():
    movie_file_reader = MovieFileCSVReader('test.csv')
    movie_file_reader.read_csv_file()
    movie1 = Movie("Guardians of the Galaxy", 2014)
    movie1.description = "A group of intergalactic criminals are forced to work together to stop a fanatical warrior from taking control of the universe."
    movie1.runtime_minutes = 121
    movie1.votes = 757074
    movie1.rating = 8.1
    movie1.add_genre(Genre("Action"))
    movie1.add_genre(Genre("Adventure"))
    movie1.add_genre(Genre("Sci-Fi"))
    movie1.add_actor(Actor("Chris Pratt"))
    movie1.add_actor(Actor("Vin Diesel"))
    movie1.add_actor(Actor("Bradley Cooper"))
    movie1.add_actor(Actor("Zoe Saldana"))
    movie1.director = Director("James Gunn")
    assert movie_file_reader.dataset_of_movies[0] == movie1
    assert movie_file_reader.dataset_of_movies[0].runtime_minutes == movie1.runtime_minutes
    assert movie_file_reader.dataset_of_movies[0].description == movie1.description
    assert movie_file_reader.dataset_of_movies[0].votes == movie1.votes
    assert movie_file_reader.dataset_of_movies[0].rating == movie1.rating
    assert movie_file_reader.dataset_of_movies[0].actors == movie1.actors
    assert movie_file_reader.dataset_of_movies[0].genres == movie1.genres
    assert movie_file_reader.dataset_of_movies[0].director == movie1.director
    assert movie_file_reader.dataset_of_actors[0] == Actor("Chris Pratt")
    assert movie_file_reader.dataset_of_actors[1] == Actor("Vin Diesel")
    assert movie_file_reader.dataset_of_actors[2] == Actor("Bradley Cooper")
    assert movie_file_reader.dataset_of_actors[3] == Actor("Zoe Saldana")
    assert repr(movie_file_reader.dataset_of_actors[0].actor_colleague_list) == "[<Actor Vin Diesel>, <Actor Bradley Cooper>, <Actor Zoe Saldana>, <Actor Jennifer Lawrence>, <Actor Michael Sheen>, <Actor Laurence Fishburne>, <Actor Denzel Washington>, <Actor Ethan Hawke>, <Actor Vincent D'Onofrio>, <Actor Bryce Dallas Howard>, <Actor Ty Simpkins>, <Actor Judy Greer>, <Actor Will Ferrell>, <Actor Elizabeth Banks>, <Actor Will Arnett>, <Actor Jessica Chastain>, <Actor Joel Edgerton>, <Actor Mark Strong>, <Actor Channing Tatum>, <Actor Rosario Dawson>, <Actor Jenna Dewan Tatum>]"
    assert movie_file_reader.dataset_of_directors[0] == Director("James Gunn")
    assert movie_file_reader.dataset_of_genres[0] == Genre("Action")
    assert movie_file_reader.dataset_of_genres[1] == Genre("Adventure")
    assert movie_file_reader.dataset_of_genres[2] == Genre("Sci-Fi")
Esempio n. 4
0
    def test_movie_file_csv_reader(self):
        filename = '../datafiles/Data1000Movies.csv'
        movie_file_reader = MovieFileCSVReader(filename)
        movie_file_reader.read_csv_file()

        assert len(movie_file_reader.dataset_of_movies) == 1000
        assert len(movie_file_reader.dataset_of_actors) == 1985
        assert len(movie_file_reader.dataset_of_directors) == 644
        assert len(movie_file_reader.dataset_of_genres) == 20

        all_movies_sorted = sorted(movie_file_reader.dataset_of_movies)
        print(
            f'first 3 unique directors of sorted dataset: {all_movies_sorted[0:3]}'
        )
        all_actors_sorted = sorted(movie_file_reader.dataset_of_actors)
        print(
            f'first 3 unique directors of sorted dataset: {all_actors_sorted[0:3]}'
        )
        all_directors_sorted = sorted(movie_file_reader.dataset_of_directors)
        print(
            f'first 3 unique directors of sorted dataset: {all_directors_sorted[0:3]}'
        )
        all_genres_sorted = sorted(movie_file_reader.dataset_of_genres)
        print(
            f'first 3 unique directors of sorted dataset: {all_genres_sorted[0:3]}'
        )
Esempio n. 5
0
def test_five_random_movie_from_all_movies():
    seed = 116
    watchlist = WatchList()

    filename = 'datafiles/Data1000Movies.csv'
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()
    movie_list = movie_file_reader.dataset_of_movies

    random_movie_1 = watchlist.add_random(movie_list, seed)
    assert random_movie_1 == movie_list[841]

    random_movie_2 = watchlist.add_random(movie_list, seed)
    assert random_movie_2 == movie_list[763]

    random_movie_3 = watchlist.add_random(movie_list, seed)
    assert random_movie_3 == movie_list[614]

    random_movie_4 = watchlist.add_random(movie_list, seed)
    assert random_movie_4 == movie_list[559]

    random_movie_5 = watchlist.add_random(movie_list, seed)
    assert random_movie_5 == movie_list[739]

    assert watchlist.size() == 5
Esempio n. 6
0
def test_dataset_of_movies_is_valid(reader: MovieFileCSVReader):
    reader.read_csv_file()
    movies = reader.dataset_of_movies
    actors = reader.dataset_of_actors
    directors = reader.dataset_of_directors
    genres = reader.dataset_of_genres

    actor_ids = set()
    director_ids = set()
    genre_ids = set()

    for movie in movies:
        assert movie.title is not None

        # Check all of this movie's actors are in our dataset of actors
        assert all(actor in actors for actor in movie.actors)
        for actor in movie.actors:
            actor_ids.add(id(actor))

        # Check this movie's director is in our dataset of directors
        assert movie.director in directors
        director_ids.add(id(movie.director))

        # Check all of this movie's genres are in our dataset of genres
        assert all(genre in genres for genre in movie.genres)
        for genre in movie.genres:
            genre_ids.add(id(genre))

    # Here we are checking that two movies with the same actor/director/genre both reference the same instance.
    # Note that it is not enough to use the 'in' operator here, as that will look for an actor that is equal, but not
    # necessarily the same instance
    assert len(actor_ids) == len(actors)
    assert len(director_ids) == len(directors)
    assert len(genre_ids) == len(genres)
Esempio n. 7
0
def main():
    filename = 'datafiles/Data1000Movies.csv'
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()

    print(
        f'number of unique movies: {len(movie_file_reader.dataset_of_movies)}')
    print(
        f'number of unique actors: {len(movie_file_reader.dataset_of_actors)}')
    print(
        f'number of unique directors: {len(movie_file_reader.dataset_of_directors)}'
    )
    print(
        f'number of unique genres: {len(movie_file_reader.dataset_of_genres)}')

    filename = 'datafiles/Data1000TVShows.csv'
    tv_show_file_reader = TVShowFileCSVReader(filename)
    tv_show_file_reader.read_csv_file()

    print(
        f'number of unique tv shows: {len(tv_show_file_reader.dataset_of_tv_shows)}'
    )
    print(
        f'number of unique actors: {len(tv_show_file_reader.dataset_of_actors)}'
    )
    print(
        f'number of unique directors: {len(tv_show_file_reader.dataset_of_directors)}'
    )
    print(
        f'number of unique genres: {len(tv_show_file_reader.dataset_of_genres)}'
    )
Esempio n. 8
0
def test_rating_votes():
    filename = "testfiles/Data1000Movies.csv"
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()

    assert len(movie_file_reader.dataset_of_movies) == 1000
    assert movie_file_reader.dataset_of_movies[12].rating_votes == 323118
Esempio n. 9
0
def test_revenue_in_millions():
    filename = "testfiles/Data1000Movies.csv"
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()

    assert len(movie_file_reader.dataset_of_movies) == 1000
    assert movie_file_reader.dataset_of_movies[20].revenue_in_millions == 7.22
Esempio n. 10
0
def test_metascore():
    filename = "testfiles/Data1000Movies.csv"
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()

    assert len(movie_file_reader.dataset_of_movies) == 1000
    assert movie_file_reader.dataset_of_movies[28].metascore == 60
Esempio n. 11
0
def test_incomplete_attributes():
    filename = 'datafiles/Data1000Movies.csv'
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()

    movie_name = "Hounds of Love"
    movie = movie_file_reader.movie_object(movie_name)

    # normal attributes
    assert movie.title == "Hounds of Love"
    assert movie.release_year == 2016
    assert movie.description == "A cold-blooded predatory couple while cruising the streets in search of their " \
                                "next victim, will stumble upon a 17-year-old high school girl, who will be sedated, " \
                                "abducted and chained in the strangers' guest room."
    assert movie.director == Director("Ben Young")
    assert movie.actors == [
        Actor("Emma Booth"),
        Actor("Ashleigh Cummings"),
        Actor("Stephen Curry"),
        Actor("Susie Porter")
    ]
    assert movie.genres == [Genre("Crime"), Genre("Drama"), Genre("Horror")]
    assert movie.runtime_minutes == 108

    # extra attributes
    assert movie.rank == 23
    assert movie.rating == 6.7
    assert movie.revenue is None
    assert movie.votes == 1115
    assert movie.metascore == 72
Esempio n. 12
0
def test_external_rating():
    filename = "testfiles/Data1000Movies.csv"
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()

    assert len(movie_file_reader.dataset_of_movies) == 1000
    assert movie_file_reader.dataset_of_movies[9].external_rating == 7
Esempio n. 13
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_read():
    test = MovieFileCSVReader('datafiles\\Data1000Movies.csv')
    test.read_csv_file()

    assert len(test.dataset_of_movies) == 1000
    assert len(test.dataset_of_actors) == 1985
    assert len(test.dataset_of_directors) == 644
    assert len(test.dataset_of_genres) == 20
Esempio n. 15
0
    def test_attribute(self):
        filename = 'datafiles/Data1000Movies.csv'
        movie_file_reader = MovieFileCSVReader(filename)
        movie_file_reader.read_csv_file()

        assert len(movie_file_reader.dataset_of_movies) == 1000
        assert len(movie_file_reader.dataset_of_directors) == 644
        assert len(movie_file_reader.dataset_of_actors) == 1985
        assert len(movie_file_reader.dataset_of_genres) == 20
Esempio n. 16
0
def test_code_runner():
    filename = pathlib.Path(__file__).parent.parent.joinpath('datafiles/Data1000Movies.csv')
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()

    assert len(movie_file_reader.dataset_of_movies) == 1000
    assert len(movie_file_reader.dataset_of_actors) == 1985
    assert len(movie_file_reader.dataset_of_directors) == 644
    assert len(movie_file_reader.dataset_of_genres) == 20
Esempio n. 17
0
 def __init__(self, file_path: str):
     movie_file_reader = MovieFileCSVReader(file_path)
     movie_file_reader.read_csv_file()
     self._actor = movie_file_reader.dataset_of_actors
     self._director = movie_file_reader.dataset_of_directors
     self._genre = movie_file_reader.dataset_of_genres
     self._movie = movie_file_reader.dataset_of_movies
     self._user = list()
     self._review = list()
Esempio n. 18
0
def test_recs(stats):
    filename = 'test.csv'
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()
    assert stats.make_recommendations(movie_file_reader.dataset_of_movies,
                                      -1) == [
                                          Movie("Guardians of the Galaxy",
                                                2014),
                                          Movie("Split", 2016),
                                          Movie("Sing", 2016),
                                          Movie("Suicide Squad", 2016)
                                      ]
Esempio n. 19
0
def populate_database(session_factory, database_engine, filename):
    metadata.drop_all(database_engine)
    metadata.create_all(
        database_engine)  # Conditionally create database tables.
    # populate data
    file_reader = MovieFileCSVReader(filename)
    file_reader.read_csv_file()

    session = session_factory()
    session.add_all(file_reader.dataset_of_movies)
    print(f"{len(file_reader.dataset_of_movies)} movies")
    session.commit()
Esempio n. 20
0
    def test_read_csv_file(self):
        movie_file_csv_reader_object = MovieFileCSVReader(r"C:\Users\Nathan Longhurst\OneDrive - The University of Auckland\b Comp235\Assignment\GitHub Clone (Current)\CS235FlixSkeleton\datafiles\Data1000Movies.csv")
        movie_file_csv_reader_object.read_csv_file()

        dataset_of_movies = movie_file_csv_reader_object.dataset_of_movies
        dataset_of_actors = movie_file_csv_reader_object.dataset_of_actors
        dataset_of_directors = movie_file_csv_reader_object.dataset_of_directors
        dataset_of_genres = movie_file_csv_reader_object.dataset_of_genres

        assert len(dataset_of_movies) == 1000
        assert len(set(dataset_of_actors)) == len(dataset_of_actors) # check unique items only
        assert len(set(dataset_of_directors)) == len(dataset_of_directors)  # ^ ditto
        assert len(set(dataset_of_genres)) == len(dataset_of_genres)  # ^ ditto
Esempio n. 21
0
def client_with_data():
    filename = 'datafiles/Data100Movies.csv'
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()
    repository = MemoryRepository(movie_file_reader.dataset_of_movies,
                                  movie_file_reader.dataset_of_actors,
                                  movie_file_reader.dataset_of_directors,
                                  movie_file_reader.dataset_of_genres)
    return create_app(repository, {
        'TESTING': True,
        'WTF_CSRF_ENABLED': False,
        'SECRET_KEY': 'test'
    }).test_client(), repository
Esempio n. 22
0
def test_filter_by_director_illeagal_inputs():
    filename = 'datafiles/Data1000Movies.csv'
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()

    director = Director("Nier Automata")
    movie_file_reader.filter_by_director(director)
    assert movie_file_reader.movies_filtered_by_director == []

    director_1 = "James Gunn"
    movie_file_reader.filter_by_director(director_1)
    assert movie_file_reader.movies_filtered_by_director == []

    director_2 = 12345
    movie_file_reader.filter_by_director(director_2)
    assert movie_file_reader.movies_filtered_by_director == []
Esempio n. 23
0
def main():
    filename = 'datafiles/Data1000Movies.csv'
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()
    print(
        f'number of unique movies: {len(movie_file_reader.dataset_of_movies)}')
    print(
        f'number of unique actors: {len(movie_file_reader.dataset_of_actors)}')
    print(
        f'number of unique directors: {len(movie_file_reader.dataset_of_directors)}'
    )
    print(
        f'number of unique genres: {len(movie_file_reader.dataset_of_genres)}')
    print(
        f'first row of actors: {movie_file_reader.dataset_of_movies[2].actors}'
    )
Esempio n. 24
0
def test_filter_by_genres_illeage_inputs():
    filename = 'datafiles/Data1000Movies.csv'
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()

    genre = Genre("Good")
    movie_file_reader.filter_by_genre(genre)
    assert movie_file_reader.movies_filtered_by_genre == []

    genre = [Genre("Happy")]
    movie_file_reader.filter_by_genre(genre)
    assert movie_file_reader.movies_filtered_by_genre == []

    genre = 123456
    movie_file_reader.filter_by_genre(genre)
    assert movie_file_reader.movies_filtered_by_genre == []
Esempio n. 25
0
    def test_csv_reader(self):
        filename = 'C:\Bullshit\CS235FlixSkeleton\datafiles\Data1000Movies.csv'
        movie_file_reader = MovieFileCSVReader(filename)
        movie_file_reader.read_csv_file()

        print(movie_file_reader.dataset_of_movies)

        print(
            f'number of unique movies: {len(movie_file_reader.dataset_of_movies)}'
        )
        print(
            f'number of unique actors: {len(movie_file_reader.dataset_of_actors)}'
        )
        print(
            f'number of unique directors: {len(movie_file_reader.dataset_of_directors)}'
        )
        print(
            f'number of unique genres: {len(movie_file_reader.dataset_of_genres)}'
        )
Esempio n. 26
0
def test_dataset_of_actors_is_valid(reader: MovieFileCSVReader):
    reader.read_csv_file()
    actors = reader.dataset_of_actors

    actor_ids = set()

    for actor in actors:
        assert actor.actor_full_name is not None

        # Check all of this actor's colleagues are in our dataset of actors
        assert all(colleague in actors for colleague in actor.colleagues)

        # Check colleagues are valid
        actor_ids.add(id(actor))
        for colleague in actor.colleagues:
            actor_ids.add(id(colleague))

    # Check that two actors with the same colleague both reference the same instance
    assert len(actor_ids) == len(actors)
Esempio n. 27
0
def client_with_db_data():
    clear_mappers()
    filename = 'datafiles/Data100Movies.csv'
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()

    database_engine = create_engine('sqlite:///')
    map_model()
    session_factory = sessionmaker(autocommit=False,
                                   autoflush=True,
                                   bind=database_engine)
    populate_database(session_factory, database_engine, filename)

    repository = DatabaseRepository(session_factory)

    return create_app(repository, {
        'TESTING': True,
        'WTF_CSRF_ENABLED': False,
        'SECRET_KEY': 'test'
    }).test_client(), repository
Esempio n. 28
0
def test_basic_csv():
    reader = MovieFileCSVReader(pathlib.Path(__file__).parent.joinpath("test.csv"))
    reader.read_csv_file()

    m1 = reader.dataset_of_movies[0]
    assert m1.title == "Darth"
    assert m1.release_year == 2014
    assert m1.genres == [Genre("Plagueis"), Genre("The W")]
    assert m1.description == "ise"
    assert m1.director == Director("Darth Vader")
    assert m1.actors == [Actor("Luke"), Actor("R2-D2"), Actor("Leia")]
    assert m1.rating == 8.1
    assert m1.votes == 757074
    assert m1.revenue == 333.13
    assert m1.metascore == 76
    assert m1.runtime_minutes == 121

    m2 = reader.dataset_of_movies[1]
    assert m2.metascore is None
    assert m2.revenue is None
Esempio n. 29
0
def main():
    filename = 'datafiles/Data1000Movies.csv'
    movie_file_reader = MovieFileCSVReader(filename)
    movie_file_reader.read_csv_file()
    the_sim = MovieWatchingSimulation(movie_file_reader)
    ##the_sim.go()
    the_sim.add_user(User("Paul", "wellington"))
    if the_sim.user_login("paul", "wellington"):
        print("User Paul logged in")
        print('look at genre, Adventure.')
        viewed_list = the_sim.look_at_genre("paul", 'Adventure')
        print("pick some movies")
        user_picks = create_movie_list(len(viewed_list), 15)
        print(user_picks)
        print(viewed_list[user_picks[1]])
        for i in user_picks:
            the_sim.add_to_watchlist("paul", viewed_list[i])
        print("paul views his watchlist")
        new_watchlist = the_sim.get_watchlist("paul")
        assert new_watchlist[1]== viewed_list[user_picks[1]]
    if the_sim.user_logout("Paul"):
        print("Paul logged out")
Esempio n. 30
0
def test_reader():
    filename = 'datafiles/Data1000Movies.csv'
    reader = MovieFileCSVReader(filename)
    reader.read_csv_file()

    assert len(reader.dataset_of_movies) == 1000
    assert len(reader.dataset_of_actors) == 1985
    assert len(reader.dataset_of_directors) == 644
    assert len(reader.dataset_of_genres) == 20

    movie = None
    for item in reader.dataset_of_movies:
        if item.title == "Moana" and item.year == 2016:
            movie = item
            break

    assert movie.title == "Moana"
    assert movie.year == 2016
    assert movie.description == description
    assert movie.director == Director("Ron Clements")
    assert movie.runtime_minutes == 107
    assert movie.external_rating == 7.7
    assert movie.rating_votes == 118151
    assert movie.revenue == 248.75
    assert movie.metascore == 81

    assert movie.genres == [
        Genre("Animation"),
        Genre("Adventure"),
        Genre("Comedy")
    ]
    assert movie.actors == [
        Actor("Auli'i Cravalho"),
        Actor("Dwayne Johnson"),
        Actor("Rachel House"),
        Actor("Temuera Morrison")
    ]