Coverage for bc/kwai-bc-portal/src/kwai_bc_portal/get_news_item.py: 100%
12 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 the use case "Get News Item"."""
3from dataclasses import dataclass
5from kwai_core.domain.presenter import Presenter
7from kwai_bc_portal.domain.news_item import NewsItemEntity, NewsItemIdentifier
8from kwai_bc_portal.news.news_item_repository import NewsItemRepository
11@dataclass(kw_only=True, frozen=True, slots=True)
12class GetNewsItemCommand:
13 """Input for the use case "Get News Item"."""
15 id: int
18class GetNewsItem:
19 """Use case "Get News Item"."""
21 def __init__(self, repo: NewsItemRepository, presenter: Presenter[NewsItemEntity]):
22 """Initialize the use case.
24 Args:
25 repo: A repository for getting the news item.
26 presenter: A presenter for a news item.
27 """
28 self._repo = repo
29 self._presenter = presenter
31 async def execute(self, command: GetNewsItemCommand):
32 """Executes the use case.
34 Args:
35 command: The input for this use case.
37 Returns: A news item entity.
39 Raises:
40 NewsItemNotFoundException: When the news item does not exist.
41 """
42 self._presenter.present(
43 await self._repo.get_by_id(NewsItemIdentifier(command.id))
44 )