Coverage for src/tests/api/v1/auth/schemas/test_user_invitation_presenters.py: 100%

17 statements  

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

1"""Module for testing the user invitation JSON:API resource.""" 

2 

3import json 

4 

5import pytest 

6 

7from deepdiff import DeepDiff 

8from kwai_api.v1.auth.presenters import JsonApiUserInvitationPresenter 

9from kwai_bc_identity.user_invitations.user_invitation import ( 

10 UserInvitationEntity, 

11 UserInvitationIdentifier, 

12) 

13from kwai_bc_identity.users.user import UserEntity 

14from kwai_core.domain.value_objects.email_address import EmailAddress 

15from kwai_core.domain.value_objects.name import Name 

16 

17 

18@pytest.fixture 

19def user_invitation(user: UserEntity): 

20 """A fixture for a user invitation entity.""" 

21 return UserInvitationEntity( 

22 id=UserInvitationIdentifier(1), 

23 email=EmailAddress("ichiro.abe@kwai.com"), 

24 name=Name(first_name="Ichiro", last_name="Abe"), 

25 user=user, 

26 ) 

27 

28 

29def test_create_user_invitation_document(user_invitation: UserInvitationEntity): 

30 """Test creation of a user invitation JSON:API document.""" 

31 user_invitation_document = ( 

32 JsonApiUserInvitationPresenter().present(user_invitation).get_document() 

33 ) 

34 json_resource = json.loads(user_invitation_document.model_dump_json()) 

35 

36 expected_user_invitation_json = { 

37 "data": { 

38 "id": str(user_invitation.uuid), 

39 "type": "user_invitations", 

40 "attributes": { 

41 "email": "ichiro.abe@kwai.com", 

42 "first_name": "Ichiro", 

43 "last_name": "Abe", 

44 "remark": "", 

45 "mailed_at": None, 

46 "expired_at": str(user_invitation.expired_at), 

47 "confirmed_at": None, 

48 "revoked": False, 

49 }, 

50 } 

51 } 

52 

53 diff = DeepDiff(json_resource, expected_user_invitation_json, ignore_order=True) 

54 assert not diff, f"JSON structure is not as expected: {diff}"