Write API wrapper class
- Query by IMDb IMDb - Query by title Remove the pytest-httpx plugin Cleanup some of the omdb.result unit tests
This commit is contained in:
130
tests/api_test.py
Normal file
130
tests/api_test.py
Normal file
@@ -0,0 +1,130 @@
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
from httpx import Client, MockTransport, QueryParams, Request, Response
|
||||
|
||||
from omdb.api import OMDB_SEARCH_API, OmdbApi
|
||||
from omdb.error import OmdbError
|
||||
from omdb.result import SeriesExtendedResult
|
||||
|
||||
|
||||
def test_omdb_api():
|
||||
"""Tests the `OmdbApi` class initialization."""
|
||||
|
||||
client = Client()
|
||||
omdb = OmdbApi("key", client)
|
||||
assert omdb.api_key == "key"
|
||||
assert omdb.client is client
|
||||
|
||||
|
||||
def test_omdb_api_search_data():
|
||||
"""Tests the `OmdbApi._search` method when data is returned."""
|
||||
|
||||
def handler(request: Request):
|
||||
assert request.method == "GET"
|
||||
assert request.url.copy_with(params=None) == OMDB_SEARCH_API
|
||||
assert request.url.params == QueryParams(apikey="key")
|
||||
return Response(200, json={"Response": "True"})
|
||||
|
||||
omdb = OmdbApi("key", Client(transport=MockTransport(handler)))
|
||||
data = omdb._search(QueryParams())
|
||||
assert data == {"Response": "True"}
|
||||
|
||||
|
||||
def test_omdb_api_search_error():
|
||||
"""Tests the `OmdbApi._search` method when an error is raised."""
|
||||
|
||||
def handler(request: Request):
|
||||
assert request.method == "GET"
|
||||
assert request.url.copy_with(params=None) == OMDB_SEARCH_API
|
||||
assert request.url.params == QueryParams(apikey="key")
|
||||
return Response(404, json={"Response": "False", "Error": "Not Found"})
|
||||
|
||||
omdb = OmdbApi("key", Client(transport=MockTransport(handler)))
|
||||
with pytest.raises(OmdbError, match="Not Found"):
|
||||
omdb._search(QueryParams())
|
||||
|
||||
|
||||
def test_omdb_api_query_imdb_id():
|
||||
"""Tests the `OmdbApi.query_imdb_id` method."""
|
||||
|
||||
def handler(request: Request):
|
||||
assert request.method == "GET"
|
||||
assert request.url.copy_with(params=None) == OMDB_SEARCH_API
|
||||
assert request.url.params == QueryParams(
|
||||
apikey="key",
|
||||
i="tt0000000",
|
||||
plot="short",
|
||||
)
|
||||
return Response(200, json={})
|
||||
|
||||
omdb = OmdbApi("key", Client(transport=MockTransport(handler)))
|
||||
|
||||
with patch("omdb.result.ExtendedResult.parse") as mock_parse:
|
||||
omdb.query_imdb_id("tt0000000", plot_mode="short")
|
||||
mock_parse.assert_called()
|
||||
|
||||
|
||||
def test_omdb_api_query_title():
|
||||
"""Tests the `OmdbApi.query_title` method."""
|
||||
|
||||
def handler(request: Request):
|
||||
assert request.method == "GET"
|
||||
assert request.url.copy_with(params=None) == OMDB_SEARCH_API
|
||||
assert request.url.params == QueryParams(
|
||||
apikey="key",
|
||||
t="Title",
|
||||
y="2000",
|
||||
plot="short",
|
||||
)
|
||||
return Response(200, json={})
|
||||
|
||||
omdb = OmdbApi("key", Client(transport=MockTransport(handler)))
|
||||
|
||||
with patch("omdb.result.ExtendedResult.parse") as mock_parse:
|
||||
omdb.query_title("Title", year=2000, plot_mode="short")
|
||||
mock_parse.assert_called()
|
||||
|
||||
|
||||
def test_omdb_api_query_movie_title():
|
||||
"""Tests the `OmdbApi.query_movie_title` method."""
|
||||
|
||||
def handler(request: Request):
|
||||
assert request.method == "GET"
|
||||
assert request.url.copy_with(params=None) == OMDB_SEARCH_API
|
||||
assert request.url.params == QueryParams(
|
||||
apikey="key",
|
||||
t="Title",
|
||||
type="movie",
|
||||
y="2000",
|
||||
plot="short",
|
||||
)
|
||||
return Response(200, json={})
|
||||
|
||||
omdb = OmdbApi("key", Client(transport=MockTransport(handler)))
|
||||
|
||||
with patch("omdb.result.MovieExtendedResult.parse") as mock_parse:
|
||||
omdb.query_movie_title("Title", year=2000, plot_mode="short")
|
||||
mock_parse.assert_called()
|
||||
|
||||
|
||||
def test_omdb_api_query_series_title():
|
||||
"""Tests the `OmdbApi.query_series_title` method."""
|
||||
|
||||
def handler(request: Request):
|
||||
assert request.method == "GET"
|
||||
assert request.url.copy_with(params=None) == OMDB_SEARCH_API
|
||||
assert request.url.params == QueryParams(
|
||||
apikey="key",
|
||||
t="Title",
|
||||
type="series",
|
||||
y="2000",
|
||||
plot="short",
|
||||
)
|
||||
return Response(200, json={})
|
||||
|
||||
omdb = OmdbApi("key", Client(transport=MockTransport(handler)))
|
||||
|
||||
with patch("omdb.result.SeriesExtendedResult.parse") as mock_parse:
|
||||
omdb.query_series_title("Title", year=2000, plot_mode="short")
|
||||
mock_parse.assert_called()
|
Reference in New Issue
Block a user