Coverage for src/tests/api/v1/pages/test_presenters.py: 100%
26 statements
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
1"""Module for testing the presenters of the api/v1/portal/pages endpoint."""
3from typing import AsyncGenerator
5import pytest
7from kwai_api.v1.pages.presenters import (
8 JsonApiPagePresenter,
9 JsonApiPagesPresenter,
10)
11from kwai_bc_portal.domain.page import PageEntity
12from kwai_core.domain.presenter import IterableResult
15def test_json_api_page_presenter(make_page, make_user):
16 """Test a presenter that transforms a page into a JSON:API document."""
17 page = make_page()
18 presenter = JsonApiPagePresenter(make_user())
19 presenter.present(page)
20 document = presenter.get_document()
21 assert document is not None
22 assert document.data.type == "pages"
25async def page_generator(make_page) -> AsyncGenerator[PageEntity, None]:
26 """A generator for news items."""
27 yield make_page()
28 yield make_page()
31@pytest.fixture
32def iterable_result(make_page) -> IterableResult[PageEntity]:
33 """A fixture that creates a IterableResult for page entitites."""
34 return IterableResult[PageEntity](count=2, iterator=page_generator(make_page))
37async def test_json_api_pages_presenter(iterable_result, make_user):
38 """Test a presenter with an iterable result containing news items."""
39 presenter = JsonApiPagesPresenter(make_user())
40 await presenter.present(iterable_result)
41 document = presenter.get_document()
42 assert document is not None, "The presenter should contain a document"
43 assert document.meta.count == 2, "Count should be 2"
44 assert len(document.data) == 2, "There should be 2 resources"
45 assert len(document.included) == 2, "There should be 2 included applications"