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
« 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."""
3import json
5import pytest
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
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 )
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())
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 }
53 diff = DeepDiff(json_resource, expected_user_invitation_json, ignore_order=True)
54 assert not diff, f"JSON structure is not as expected: {diff}"