Ejemplo n.º 1
0
 def test_search_movie_director(self):
     # Slow test: 5% chance of this test being run.
     if random.randint(0, 99) > 5:
         return
     
     expected = 'Tarkovsky'
     movies = database.find_movies(dict(director='Tark'))
     assert movies[0]['director'] == expected
Ejemplo n.º 2
0
 def test_edit_movies_tag(self, session):
     title_year = database.MovieKeyTypedDict(title='Revanche', year=2008)
     old_tags = ('green', 'yellow')
     new_tags = ('blue', 'yellow')
     database.edit_movie_tag_links(title_year, old_tags, new_tags)
     movies = database.find_movies(database.FindMovieTypedDict(title=title_year['title'],
                                                               year=[str(title_year['year'])]))
     assert set(movies[0]['tags']) == {'blue', 'yellow'}
Ejemplo n.º 3
0
 def test_replace_all_fields(self):
     expected = [dict(title='Omlet', director='Starchild', minutes=42, year=1942, notes='fortytwo',
                      tags=['blue'])]
     new_movie = database.MovieTypedDict(title='Omlet', director='Starchild', minutes=42,
                                         year=1942, notes='fortytwo')
     class_context = self.context_wrapper(self.OLD_MOVIE, new_movie)
     with class_context():
         movies = database.find_movies(dict(title='Omlet'))
         assert movies == expected
Ejemplo n.º 4
0
    def test_value_error_is_raised(self, monkeypatch):
        invalid_keys = {'months', }
        expected = f"Invalid attribute '{invalid_keys}'."
        calls = []
        monkeypatch.setattr(database.logging, 'error', lambda msg: calls.append(msg))

        with pytest.raises(ValueError) as exc:
            # noinspection PyTypeChecker
            for _ in database.find_movies(dict(months=[169])):
                pass
        assert exc.type is ValueError
        assert exc.value.args == (expected,)
        assert calls[0] == expected
Ejemplo n.º 5
0
def select_movie_callback(title: str, year: int):
    """Edit a movie selected by the user from a list of movies.
    
    Args:
        title:
        year:
    """

    # Get record from database
    movie = database.find_movies(dict(title=title, year=year))[0]
    movie_key = config.MovieKeyTypedDict(title=movie['title'],
                                         year=movie['year'])
    # PyCharm bug https://youtrack.jetbrains.com/issue/PY-41268
    # noinspection PyTypeChecker
    guiwidgets.EditMovieGUI(config.app.tk_root,
                            edit_movie_callback_wrapper(movie_key),
                            delete_movie_callback, ['commit', 'delete'],
                            database.all_tags(), movie)
Ejemplo n.º 6
0
def search_movie_callback(criteria: config.FindMovieTypedDict,
                          tags: Sequence[str]):
    """Find movies which match the user entered criteria.
    Continue to the next appropriate stage of processing depending on whether no movies, one movie,
    or more than one movie is found.
    
    Args:
        criteria:
        tags:
    """

    # Find compliant movies.
    criteria['tags'] = tags
    # Remove empty items because SQL treats them as meaningful.
    criteria = {
        k: v
        for k, v in criteria.items()
        if v != '' and v != [] and v != () and v != ['', '']
    }
    movies = database.find_movies(criteria)

    if (movies_found := len(movies)) <= 0:
        raise exception.DatabaseSearchFoundNothing
Ejemplo n.º 7
0
def test_delete_movie_by_title_and_length(loaded_database):
    database.del_movie(database.FindMovieTypedDict(title='Solaris', minutes=['', '169']))
    movies = database.find_movies(dict(title='Solaris'))
    assert movies == []
Ejemplo n.º 8
0
def test_delete_movie_by_title_and_year(loaded_database):
    database.del_movie(database.FindMovieTypedDict(title='Solaris', year=['1972', '']))
    movies = database.find_movies(dict(title='Solaris'))
    assert movies == []
Ejemplo n.º 9
0
 def test_search_movie_all_tags(self):
     expected = {'Hamlet', 'Revanche'}
     movies = database.find_movies(dict(tags=['blue', 'yellow']))
     titles = {movie['title'] for movie in movies}
     assert titles == expected
Ejemplo n.º 10
0
 def test_search_movie_tag(self):
     expected = {'Revanche', 'Solaris'}
     movies = database.find_movies(dict(tags='green'))
     titles = {movie['title'] for movie in movies}
     assert titles == expected
Ejemplo n.º 11
0
 def test_search_movie_with_minute(self):
     expected = {169}
     movies = database.find_movies(database.FindMovieTypedDict(minutes=['169']))
     minutes = {movie['minutes'] for movie in movies}
     assert minutes == expected
Ejemplo n.º 12
0
 def test_search_movie_with_range_of_minutes_2(self):
     expected = {119, 122, 169}
     criteria = database.FindMovieTypedDict(minutes=['170', '100'])
     movies = database.find_movies(criteria)
     minutes = {movie['minutes'] for movie in movies}
     assert minutes == expected
Ejemplo n.º 13
0
 def test_search_movie_notes(self):
     expected = 'Revanche'
     movies = database.find_movies(dict(notes='Oscar'))
     assert movies[0]['title'] == expected
Ejemplo n.º 14
0
 def test_search_movie_title(self):
     expected = 'Hamlet'
     movies = database.find_movies(dict(title='Ham'))
     assert movies[0]['title'] == expected
Ejemplo n.º 15
0
 def test_search_movie_year(self):
     test_year = 1996
     movies = database.find_movies(database.FindMovieTypedDict(year=[str(test_year)]))
     assert movies[0]['year'] == test_year