def _search_movie( self, name: str, year: Optional[int]) -> Generator[MetadataMovie, None, None]: assert self.api_key year_from, year_to = year_range_parse(year, 5) found = False page = 1 page_max = 10 # each page yields a maximum of 10 results while True: try: response = omdb_search( api_key=self.api_key, media=MediaType.MOVIE.value, query=name, page=page, cache=self.cache, ) except MnamerNotFoundException: break for entry in response["Search"]: if year_from <= int(entry["Year"]) <= year_to: yield from self._lookup_movie(entry["imdbID"]) found = True if page >= page_max: break page += 1 if not found: raise MnamerNotFoundException
def test_omdb_search__page_out_of_bounds(): with pytest.raises(MnamerNotFoundException): omdb_search(Omdb.api_key, "Super Mario", page=100)
def test_omdb_search__page_diff(): p1 = omdb_search(Omdb.api_key, "Dogs", page=1) p2 = omdb_search(Omdb.api_key, "Dogs", page=2) assert p1 != p2
def test_omdb_search__year(): result = omdb_search(Omdb.api_key, "ninja turtles", year=1987) assert "tt0131613" == result["Search"][0]["imdbID"]
def test_omdb_search__query__fail(): with pytest.raises(MnamerNotFoundException): omdb_search(Omdb.api_key, JUNK_TEXT, cache=False)
def test_omdb_search__api_key_fail(): with pytest.raises(MnamerException): omdb_search(JUNK_TEXT, "ninja turtles", cache=False)
def test_omdb_search__query__series(): result = omdb_search(Omdb.api_key, "ninja turtles", media="series") assert all([entry["Type"] == "series" for entry in result["Search"]])
def test_omdb_search__fields__search(): expected_fields = {"Title", "Year", "imdbID", "Type", "Poster"} result = omdb_search(Omdb.api_key, "ninja turtles")["Search"][0] assert set(result.keys()) == expected_fields
def test_omdb_search__fields__top_level(): expected_fields = {"Search", "Response", "totalResults"} result = omdb_search(Omdb.api_key, "ninja turtles") assert set(result.keys()) == expected_fields