Coverage for src/tests/modules/portal/test_update_news_item.py: 100%

13 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2024-01-01 00:00 +0000

1"""Module for testing the "Update News" use case.""" 

2 

3from kwai_bc_portal.applications.application_db_repository import ( 

4 ApplicationDbRepository, 

5) 

6from kwai_bc_portal.domain.news_item import NewsItemEntity 

7from kwai_bc_portal.news.news_item_db_repository import NewsItemDbRepository 

8from kwai_bc_portal.update_news_item import UpdateNewsItem, UpdateNewsItemCommand 

9from kwai_core.db.database import Database 

10from kwai_core.domain.presenter import EntityPresenter 

11from kwai_core.domain.use_case import TextCommand 

12 

13 

14async def test_update_news(database: Database, make_news_item_in_db): 

15 """Test the "Update News" use case.""" 

16 news_item = await make_news_item_in_db() 

17 

18 command = UpdateNewsItemCommand( 

19 id=news_item.id.value, 

20 texts=[ 

21 TextCommand( 

22 locale=text.locale.value, 

23 format=text.format.value, 

24 title=text.title, 

25 summary=text.summary, 

26 content=text.content, 

27 ) 

28 for text in news_item.texts 

29 ], 

30 application=news_item.application.id.value, 

31 publish_datetime=str(news_item.period.start_date), 

32 enabled=news_item.enabled, 

33 end_datetime=str(news_item.period.end_date), 

34 promotion=news_item.promotion.priority, 

35 promotion_end_datetime=str(news_item.promotion.end_date), 

36 remark="Updated with test_update_news_item", 

37 ) 

38 presenter = EntityPresenter[NewsItemEntity]() 

39 await UpdateNewsItem( 

40 NewsItemDbRepository(database), 

41 ApplicationDbRepository(database), 

42 news_item.texts[0].author, 

43 presenter, 

44 ).execute(command) 

45 assert presenter.entity is not None, "There should be a an updated news item."