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

1"""Module for the use case "Get News Item".""" 

2 

3from dataclasses import dataclass 

4 

5from kwai_core.domain.presenter import Presenter 

6 

7from kwai_bc_portal.domain.news_item import NewsItemEntity, NewsItemIdentifier 

8from kwai_bc_portal.news.news_item_repository import NewsItemRepository 

9 

10 

11@dataclass(kw_only=True, frozen=True, slots=True) 

12class GetNewsItemCommand: 

13 """Input for the use case "Get News Item".""" 

14 

15 id: int 

16 

17 

18class GetNewsItem: 

19 """Use case "Get News Item".""" 

20 

21 def __init__(self, repo: NewsItemRepository, presenter: Presenter[NewsItemEntity]): 

22 """Initialize the use case. 

23 

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 

30 

31 async def execute(self, command: GetNewsItemCommand): 

32 """Executes the use case. 

33 

34 Args: 

35 command: The input for this use case. 

36 

37 Returns: A news item entity. 

38 

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 )