add docstrings for every fixture and test methods

also add tests for missing components
This commit is contained in:
2021-08-11 01:51:23 +03:00
parent 581401d60f
commit 50af309c80
28 changed files with 385 additions and 1 deletions

View File

@ -9,5 +9,11 @@ from ahriman.web.web import setup_service
@pytest.fixture
def application(configuration: Configuration, mocker: MockerFixture) -> web.Application:
"""
application fixture
:param configuration: configuration fixture
:param mocker: mocker object
:return: application test instance
"""
mocker.patch("pathlib.Path.mkdir")
return setup_service("x86_64", configuration)

View File

@ -0,0 +1,15 @@
import pytest
from collections import namedtuple
_request = namedtuple("_request", ["path"])
@pytest.fixture
def aiohttp_request() -> _request:
"""
fixture for aiohttp like object
:return: aiohttp like request test instance
"""
return _request("path")

View File

@ -0,0 +1,48 @@
import logging
import pytest
from aiohttp.web_exceptions import HTTPBadRequest
from pytest_mock import MockerFixture
from typing import Any
from ahriman.web.middlewares.exception_handler import exception_handler
async def test_exception_handler(aiohttp_request: Any, mocker: MockerFixture) -> None:
"""
must pass success response
"""
request_handler = pytest.helpers.AsyncMock()
logging_mock = mocker.patch("logging.Logger.exception")
handler = exception_handler(logging.getLogger())
await handler(aiohttp_request, request_handler)
logging_mock.assert_not_called()
async def test_exception_handler_client_error(aiohttp_request: Any, mocker: MockerFixture) -> None:
"""
must pass client exception
"""
request_handler = pytest.helpers.AsyncMock()
request_handler.side_effect = HTTPBadRequest()
logging_mock = mocker.patch("logging.Logger.exception")
handler = exception_handler(logging.getLogger())
with pytest.raises(HTTPBadRequest):
await handler(aiohttp_request, request_handler)
logging_mock.assert_not_called()
async def test_exception_handler_server_error(aiohttp_request: Any, mocker: MockerFixture) -> None:
"""
must log server exception and re-raise it
"""
request_handler = pytest.helpers.AsyncMock()
request_handler.side_effect = Exception()
logging_mock = mocker.patch("logging.Logger.exception")
handler = exception_handler(logging.getLogger())
with pytest.raises(Exception):
await handler(aiohttp_request, request_handler)
logging_mock.assert_called_once()

View File

@ -0,0 +1,11 @@
from aiohttp import web
from ahriman.web.routes import setup_routes
def test_setup_routes(application: web.Application) -> None:
"""
must generate non empty list of routes
"""
setup_routes(application)
assert application.router.routes()

View File

@ -10,5 +10,13 @@ from typing import Any
@pytest.fixture
def client(application: web.Application, loop: BaseEventLoop,
aiohttp_client: Any, mocker: MockerFixture) -> TestClient:
"""
web client fixture
:param application: application fixture
:param loop: context event loop
:param aiohttp_client: aiohttp client fixture
:param mocker: mocker object
:return: web client test instance
"""
mocker.patch("pathlib.Path.iterdir", return_value=[])
return loop.run_until_complete(aiohttp_client(application))