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