Skip to content

Commit a27d0bc

Browse files
committed
test: add POST->204 coverage for requirement validations
Both AddressRequirementValidation and EmergencyRequirementValidation return 204 No Content on success. Handle None body in CreateOnlyRepository.create and add tests covering the 204 path. Also add relationship and path assertions for both resources.
1 parent 8cfcdc8 commit a27d0bc

4 files changed

Lines changed: 68 additions & 0 deletions

File tree

src/didww/resources/base.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,8 @@ def create(self, resource, params=None):
398398
query = params.to_dict() if params else None
399399
body = self.client.post(self._path, doc, params=query)
400400
resource._clear_dirty_state()
401+
if body is None:
402+
return None
401403
response = JsonApiResponse.from_data(body)
402404
created = self._resource_class.from_response_content(response)
403405
return ApiResponse(data=created, meta=body.get("meta", {}))
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
interactions:
2+
- request:
3+
body: '{"data":{"type":"address_requirement_validations","attributes":{},"relationships":{"address_requirement":{"data":{"type":"address_requirements","id":"11111111-2222-3333-4444-555555555555"}},"address":{"data":{"type":"addresses","id":"66666666-7777-8888-9999-aaaaaaaaaaaa"}},"identity":{"data":{"type":"identities","id":"bbbbbbbb-cccc-dddd-eeee-ffffffffffff"}}}}}'
4+
headers:
5+
Accept:
6+
- application/vnd.api+json
7+
Api-Key:
8+
- test-api-key
9+
Content-Type:
10+
- application/vnd.api+json
11+
method: POST
12+
uri: https://sandbox-api.didww.com/v3/address_requirement_validations
13+
response:
14+
body:
15+
string: ''
16+
headers:
17+
Content-Type:
18+
- application/vnd.api+json
19+
status:
20+
code: 204
21+
message: No Content
22+
version: 1

tests/resources/test_address_requirement_validation.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,27 @@
77
from didww.exceptions import DidwwApiError
88

99

10+
class TestAddressRequirementValidationRelationships:
11+
def test_has_address_requirement_relationship(self):
12+
rv = AddressRequirementValidation()
13+
assert hasattr(rv.__class__, "address_requirement")
14+
15+
def test_has_address_relationship(self):
16+
rv = AddressRequirementValidation()
17+
assert hasattr(rv.__class__, "address")
18+
19+
def test_has_identity_relationship(self):
20+
rv = AddressRequirementValidation()
21+
assert hasattr(rv.__class__, "identity")
22+
23+
def test_maps_to_correct_type(self):
24+
assert AddressRequirementValidation.Meta.type == "address_requirement_validations"
25+
26+
def test_repository_path(self, client):
27+
repo = client.address_requirement_validations()
28+
assert repo._path == "address_requirement_validations"
29+
30+
1031
class TestAddressRequirementValidation:
1132
@my_vcr.use_cassette("address_requirement_validations/create.yaml")
1233
def test_create_address_requirement_validation_success(self, client):
@@ -47,3 +68,12 @@ def test_create_address_requirement_validation_echo_response(self, client):
4768
response = client.address_requirement_validations().create(rv)
4869
created = response.data
4970
assert created.id is None
71+
72+
@my_vcr.use_cassette("address_requirement_validations/create_204.yaml")
73+
def test_create_returns_none_on_204(self, client):
74+
rv = AddressRequirementValidation()
75+
rv.address_requirement = AddressRequirement.build("11111111-2222-3333-4444-555555555555")
76+
rv.address = Address.build("66666666-7777-8888-9999-aaaaaaaaaaaa")
77+
rv.identity = Identity.build("bbbbbbbb-cccc-dddd-eeee-ffffffffffff")
78+
result = client.address_requirement_validations().create(rv)
79+
assert result is None

tests/resources/test_emergency_requirement_validation.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1+
import pytest
2+
from tests.conftest import my_vcr
13
from didww.resources.emergency_requirement_validation import EmergencyRequirementValidation
4+
from didww.resources.emergency_requirement import EmergencyRequirement
5+
from didww.resources.address import Address
6+
from didww.resources.identity import Identity
27

38

49
class TestEmergencyRequirementValidation:
@@ -20,3 +25,12 @@ def test_maps_to_correct_type(self):
2025
def test_repository_path(self, client):
2126
repo = client.emergency_requirement_validations()
2227
assert repo._path == "emergency_requirement_validations"
28+
29+
@my_vcr.use_cassette("emergency_requirement_validations/create.yaml")
30+
def test_create_returns_none_on_204(self, client):
31+
rv = EmergencyRequirementValidation()
32+
rv.emergency_requirement = EmergencyRequirement.build("er-001")
33+
rv.address = Address.build("addr-001")
34+
rv.identity = Identity.build("id-001")
35+
result = client.emergency_requirement_validations().create(rv)
36+
assert result is None

0 commit comments

Comments
 (0)