Coverage for src/kwai/api/v1/auth/presenters.py: 71%

14 statements  

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

1"""Module that defines presenters for the auth api.""" 

2 

3from kwai.api.v1.auth.schemas.revoked_user import RevokedUserDocument 

4from kwai.api.v1.auth.schemas.user_account import UserAccountDocument 

5from kwai.core.domain.presenter import AsyncPresenter, IterableResult, Presenter 

6from kwai.core.json_api import JsonApiPresenter, Meta 

7from kwai.modules.identity.users.user_account import UserAccountEntity 

8 

9 

10class JsonApiUserAccountsPresenter( 

11 JsonApiPresenter[UserAccountDocument], 

12 AsyncPresenter[IterableResult[UserAccountEntity]], 

13): 

14 """A presenter that transform a user account entity into a JSON:API document.""" 

15 

16 async def present(self, result: IterableResult[UserAccountEntity]) -> None: 

17 self._document = UserAccountDocument( 

18 meta=Meta(count=result.count, offset=result.offset, limit=result.limit), 

19 data=[], 

20 ) 

21 async for user_account in result.iterator: 

22 user_account_document = UserAccountDocument.create(user_account) 

23 self._document.merge(user_account_document) 

24 

25 

26class JsonApiRevokedUserPresenter( 

27 JsonApiPresenter[RevokedUserDocument], 

28 Presenter[UserAccountEntity], 

29): 

30 """A presenter that transform a user account entity into a JSON:API document. 

31 

32 The document will be a [RevokedUserDocument]. 

33 """ 

34 

35 def present(self, use_case_result: UserAccountEntity) -> None: 

36 self._document = RevokedUserDocument.create(use_case_result)