diff --git a/examples/did_trunk_assignment.py b/examples/did_trunk_assignment.py index 6bd3a8a..b05ab88 100644 --- a/examples/did_trunk_assignment.py +++ b/examples/did_trunk_assignment.py @@ -21,10 +21,10 @@ def print_did_assignment(did_id): result = client.dids().find(did_id, include_params).data - trunk_id = result._relationship_id("voice_in_trunk") - group_id = result._relationship_id("voice_in_trunk_group") - print(f" trunk = {trunk_id or 'null'}") - print(f" group = {group_id or 'null'}") + trunk = result.voice_in_trunk + group = result.voice_in_trunk_group + print(f" trunk = {trunk.id if trunk else 'null'}") + print(f" group = {group.id if group else 'null'}") # Get a DID diff --git a/src/didww/resources/available_did.py b/src/didww/resources/available_did.py index 54e0356..1ea8c4c 100644 --- a/src/didww/resources/available_did.py +++ b/src/didww/resources/available_did.py @@ -10,9 +10,6 @@ class AvailableDid(DidwwApiModel): class Meta: type = "available_dids" - def nanpa_prefix_id(self): - return self._relationship_id("nanpa_prefix") - class AvailableDidRepository(ReadOnlyRepository): _resource_class = AvailableDid diff --git a/src/didww/resources/base.py b/src/didww/resources/base.py index 1f2afda..7e81646 100644 --- a/src/didww/resources/base.py +++ b/src/didww/resources/base.py @@ -328,23 +328,6 @@ def _null_relationship(self, key): self.raw_object.relationships[key] = {"data": None} self._mark_relationship_dirty(key) - def _relationship_id(self, key): - """Get the ID from a to-one relationship without resolving it.""" - try: - rel = self.relationships[key] - if rel.data and rel.data.id is not None: - return rel.data.id - except (KeyError, AttributeError): - pass - return None - - def _relationship_ids(self, key): - """Get IDs from a to-many relationship without resolving them.""" - try: - rel = self.relationships[key] - return [item.id for item in rel.data if item.id is not None] - except (KeyError, AttributeError, TypeError): - return [] class ApiResponse: diff --git a/src/didww/resources/city.py b/src/didww/resources/city.py index 495d2d3..786f512 100644 --- a/src/didww/resources/city.py +++ b/src/didww/resources/city.py @@ -11,9 +11,6 @@ class City(DidwwApiModel): class Meta: type = "cities" - def area_id(self): - return self._relationship_id("area") - class CityRepository(ReadOnlyRepository): _resource_class = City diff --git a/src/didww/resources/requirement.py b/src/didww/resources/requirement.py index 1c2d833..6aa8fc1 100644 --- a/src/didww/resources/requirement.py +++ b/src/didww/resources/requirement.py @@ -28,33 +28,6 @@ class Requirement(DidwwApiModel): class Meta: type = "requirements" - def country_id(self): - return self._relationship_id("country") - - def did_group_type_id(self): - return self._relationship_id("did_group_type") - - def personal_permanent_document_id(self): - return self._relationship_id("personal_permanent_document") - - def business_permanent_document_id(self): - return self._relationship_id("business_permanent_document") - - def personal_onetime_document_id(self): - return self._relationship_id("personal_onetime_document") - - def business_onetime_document_id(self): - return self._relationship_id("business_onetime_document") - - def personal_proof_type_ids(self): - return self._relationship_ids("personal_proof_types") - - def business_proof_type_ids(self): - return self._relationship_ids("business_proof_types") - - def address_proof_type_ids(self): - return self._relationship_ids("address_proof_types") - class RequirementRepository(ReadOnlyRepository): _resource_class = Requirement diff --git a/tests/fixtures/did_groups/show_with_requirement.yaml b/tests/fixtures/did_groups/show_with_requirement.yaml index e9d1b69..d20adc7 100644 --- a/tests/fixtures/did_groups/show_with_requirement.yaml +++ b/tests/fixtures/did_groups/show_with_requirement.yaml @@ -36,20 +36,19 @@ interactions: \ \"links\": {\n \"self\": \"https://sandbox-api.didww.com/v3/did_groups/2187c36d-28fb-436f-8861-5a0f5b5a3ee1/relationships/requirement\"\ ,\n \"related\": \"https://sandbox-api.didww.com/v3/did_groups/2187c36d-28fb-436f-8861-5a0f5b5a3ee1/requirement\"\ \n },\n \"data\": {\n \"type\": \"requirements\",\n\ - \ \"id\": \"c3d4e5f6-a1b2-7890-abcd-ef1234567890\"\n }\n \ + \ \"id\": \"8da1e0b2-047c-4baf-9c57-57143f09b9ce\"\n }\n \ \ }\n }\n },\n \"included\": [\n {\n \"id\": \"dfd1a0a0-bd53-4f7a-9c8e-d2fc5dd1bf7e\"\ ,\n \"type\": \"countries\",\n \"attributes\": {\n \"name\"\ : \"Germany\",\n \"prefix\": \"49\",\n \"iso\": \"DE\"\n \ - \ }\n },\n {\n \"id\": \"c3d4e5f6-a1b2-7890-abcd-ef1234567890\"\ + \ }\n },\n {\n \"id\": \"8da1e0b2-047c-4baf-9c57-57143f09b9ce\"\ ,\n \"type\": \"requirements\",\n \"attributes\": {\n \"\ - identity_type\": \"personal_or_business\",\n \"personal_area_level\"\ - : \"city\",\n \"business_area_level\": \"city\",\n \"address_area_level\"\ - : \"city\",\n \"personal_proof_qty\": 1,\n \"business_proof_qty\"\ - : 1,\n \"address_proof_qty\": 1,\n \"personal_mandatory_fields\"\ - : [\"first_name\", \"last_name\"],\n \"business_mandatory_fields\"\ - : [\"company_name\"],\n \"service_description_required\": false,\n\ - \ \"restriction_message\": null\n }\n }\n ],\n \"meta\":\ - \ {\n \"api_version\": \"2022-05-09\"\n }\n}" + identity_type\": \"Any\",\n \"personal_area_level\": \"WorldWide\"\ + ,\n \"business_area_level\": \"WorldWide\",\n \"address_area_level\"\ + : \"WorldWide\",\n \"personal_proof_qty\": 0,\n \"business_proof_qty\"\ + : 0,\n \"address_proof_qty\": 0,\n \"personal_mandatory_fields\"\ + : [],\n \"business_mandatory_fields\": [],\n \"service_description_required\"\ + : false,\n \"restriction_message\": null\n }\n }\n ],\n \"\ + meta\": {\n \"api_version\": \"2022-05-09\"\n }\n}" headers: Content-Type: - application/vnd.api+json diff --git a/tests/resources/test_did_group.py b/tests/resources/test_did_group.py index 28aa86c..98f150d 100644 --- a/tests/resources/test_did_group.py +++ b/tests/resources/test_did_group.py @@ -1,4 +1,4 @@ -from didww.enums import Feature +from didww.enums import Feature, IdentityType, AreaLevel from tests.conftest import my_vcr from didww.query_params import QueryParams @@ -34,17 +34,15 @@ def test_find_did_group(self, client): @my_vcr.use_cassette("did_groups/show_with_requirement.yaml") def test_find_did_group_with_requirement(self, client): - params = QueryParams().include("country", "requirement") + params = QueryParams().include("requirement") response = client.did_groups().find("2187c36d-28fb-436f-8861-5a0f5b5a3ee1", params) dg = response.data assert dg.id == "2187c36d-28fb-436f-8861-5a0f5b5a3ee1" assert dg.prefix == "241" - country = dg.country - assert country is not None - assert country.name == "Germany" + assert dg.area_name == "Aachen" requirement = dg.requirement assert requirement is not None - assert requirement.id == "c3d4e5f6-a1b2-7890-abcd-ef1234567890" - assert requirement.personal_proof_qty == 1 - assert requirement.business_proof_qty == 1 + assert requirement.id == "8da1e0b2-047c-4baf-9c57-57143f09b9ce" + assert requirement.identity_type == IdentityType.ANY + assert requirement.personal_area_level == AreaLevel.WORLDWIDE assert requirement.service_description_required is False diff --git a/tests/resources/test_requirement.py b/tests/resources/test_requirement.py index 73984c5..e5a85df 100644 --- a/tests/resources/test_requirement.py +++ b/tests/resources/test_requirement.py @@ -33,23 +33,13 @@ def test_find_requirement(self, client): assert "Birth Date" in req.personal_mandatory_fields assert isinstance(req.business_mandatory_fields, list) assert "Company ID" in req.business_mandatory_fields - # relationship ID accessors - assert req.country_id() == "5b156dc2-327e-4665-bdc5-35cd8729b885" - assert req.did_group_type_id() == "994ea201-4a4d-4b27-ac4b-b5916ac969a3" - assert req.personal_permanent_document_id() == "fd38c86d-b69b-4ca8-b73c-286a3b93d107" - assert req.business_permanent_document_id() == "fd38c86d-b69b-4ca8-b73c-286a3b93d107" - assert req.personal_onetime_document_id() == "206ccec2-1166-461f-9f58-3a56823db548" - assert req.business_onetime_document_id() == "206ccec2-1166-461f-9f58-3a56823db548" - assert len(req.personal_proof_type_ids()) == 1 - assert len(req.business_proof_type_ids()) == 7 - assert len(req.address_proof_type_ids()) == 1 - # included resource assertions - assert req.country is not None - assert req.did_group_type is not None - assert req.personal_permanent_document is not None - assert req.business_permanent_document is not None - assert req.personal_onetime_document is not None - assert req.business_onetime_document is not None + # included relationships + assert req.country.id == "5b156dc2-327e-4665-bdc5-35cd8729b885" + assert req.did_group_type.id == "994ea201-4a4d-4b27-ac4b-b5916ac969a3" + assert req.personal_permanent_document.id == "fd38c86d-b69b-4ca8-b73c-286a3b93d107" + assert req.business_permanent_document.id == "fd38c86d-b69b-4ca8-b73c-286a3b93d107" + assert req.personal_onetime_document.id == "206ccec2-1166-461f-9f58-3a56823db548" + assert req.business_onetime_document.id == "206ccec2-1166-461f-9f58-3a56823db548" assert len(req.personal_proof_types) == 1 assert len(req.business_proof_types) == 7 assert len(req.address_proof_types) == 1