This commit is contained in:
@@ -20,6 +20,7 @@ class CDEKOrderMappingError(ValueError):
|
||||
|
||||
_CDEK_WAYBILL_PRINT_TYPE = "WAYBILL"
|
||||
_CDEK_WAYBILL_RELATED_ENTITY_TYPE = "waybill"
|
||||
_CDEK_INSURANCE_SERVICE_CODE = "INSURANCE"
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
@@ -56,6 +57,9 @@ def map_cdek_order_request(
|
||||
"to_location": _map_location(request.receiver_address),
|
||||
"packages": [_map_package(request, order_uuid)],
|
||||
}
|
||||
services = _map_services(request)
|
||||
if services:
|
||||
payload["services"] = services
|
||||
if request.content.description:
|
||||
payload["comment"] = request.content.description
|
||||
return payload
|
||||
@@ -328,6 +332,18 @@ def _map_package(request: InitPaymentRequest, order_uuid: str) -> dict[str, Any]
|
||||
return package
|
||||
|
||||
|
||||
def _map_services(request: InitPaymentRequest) -> list[dict[str, Any]]:
|
||||
declared_value = request.content.declared_value
|
||||
if declared_value <= 0:
|
||||
return []
|
||||
return [
|
||||
{
|
||||
"code": _CDEK_INSURANCE_SERVICE_CODE,
|
||||
"parameter": declared_value,
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
def _map_dimensions(dimensions: Dimensions) -> dict[str, int]:
|
||||
return {
|
||||
"length": centimeters_string_to_int(dimensions.length, "length"),
|
||||
|
||||
@@ -29,6 +29,23 @@ def test_order_payload_requests_waybill_print() -> None:
|
||||
assert payload["print"] == "WAYBILL"
|
||||
|
||||
|
||||
def test_order_payload_maps_declared_value_to_insurance_service() -> None:
|
||||
payload = map_cdek_order_request(make_init_payment_request(), "order-uuid-1")
|
||||
|
||||
assert payload["services"] == [{"code": "INSURANCE", "parameter": 50000}]
|
||||
|
||||
|
||||
def test_order_payload_omits_insurance_service_for_zero_declared_value() -> None:
|
||||
payload = map_cdek_order_request(
|
||||
make_init_payment_request(
|
||||
content={"description": "Docs", "declared_value": 0}
|
||||
),
|
||||
"order-uuid-1",
|
||||
)
|
||||
|
||||
assert "services" not in payload
|
||||
|
||||
|
||||
def test_map_cdek_order_response_extracts_order_uuid_without_waybill() -> None:
|
||||
result = map_cdek_order_response({"entity": {"uuid": "cdek-order-uuid"}})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user