добавлен declaredValue
Deploy / deploy (push) Successful in 53s

This commit is contained in:
Раис Юсупалиев
2026-06-21 22:32:28 +03:00
parent 6a3da82ddc
commit c6c37640fd
8 changed files with 73 additions and 5 deletions
@@ -306,6 +306,16 @@ def _map_package(request: InitPaymentRequest, order_uuid: str) -> dict[str, Any]
"number": order_uuid,
"weight": weight_grams,
"comment": description,
"items": [
{
"name": description,
"ware_key": order_uuid,
"payment": {"value": 0},
"cost": request.content.declared_value,
"amount": 1,
"weight": weight_grams,
}
],
}
if system_data.parcel_type == "parcel" and system_data.dimensions is not None:
package.update(_map_dimensions(system_data.dimensions))
@@ -127,6 +127,7 @@ def map_cse_save_order_request(
make_field("TypeOfCargo", resolve_type_of_cargo(system_data.parcel_type)),
make_field("Weight", system_data.weight, "float"),
make_field("CargoPackageQty", "1", "float"),
make_field("CargoCost", str(request.content.declared_value), "float"),
]
if delivery_type:
fields.append(make_field("DeliveryOfCargo", delivery_type))
+1
View File
@@ -75,6 +75,7 @@ class Contact(_CamelModel):
class Content(_CamelModel):
description: str | None = None
declared_value: int = Field(alias="declared_value", strict=True)
class SystemDataTariff(_CamelModel):
@@ -143,7 +143,7 @@ def test_order_payload_for_parcel_includes_dimensions() -> None:
def test_order_payload_for_doc_omits_dimensions() -> None:
request = make_init_payment_request(
content={"description": "Docs"},
content={"description": "Docs", "declared_value": 25000},
systemData={
"tariff": {
"provider": "СДЭК",
@@ -198,20 +198,33 @@ def test_order_payload_includes_company_requisites_for_legal_entity() -> None:
assert sender["kpp"] == "770701001"
def test_order_payload_propagates_description_to_comments_without_items() -> None:
def test_order_payload_maps_content_to_comments_and_declared_value_item() -> None:
payload = map_cdek_order_request(make_init_payment_request(), "order-uuid-1")
assert payload["comment"] == "Headphones"
assert payload["packages"][0]["comment"] == "Headphones"
assert "items" not in payload["packages"][0]
assert payload["packages"][0]["items"] == [
{
"name": "Headphones",
"ware_key": "order-uuid-1",
"payment": {"value": 0},
"cost": 50000,
"amount": 1,
"weight": 1000,
}
]
def test_order_payload_falls_back_package_comment_to_order_uuid() -> None:
payload = map_cdek_order_request(
make_init_payment_request(content={"description": None}), "order-uuid-1"
make_init_payment_request(
content={"description": None, "declared_value": 50000}
),
"order-uuid-1",
)
assert payload["packages"][0]["comment"] == "order-uuid-1"
assert payload["packages"][0]["items"][0]["name"] == "order-uuid-1"
def test_order_payload_includes_company_for_individual_sender_as_full_name() -> None:
@@ -124,7 +124,7 @@ def test_provider_get_payment_price_omits_dimensions_for_doc() -> None:
)
)
request = make_init_payment_request(
content={"description": "Docs"},
content={"description": "Docs", "declared_value": 25000},
systemData={
"tariff": {
"provider": "СДЭК",
@@ -276,6 +276,7 @@ def test_save_order_request_uses_selected_tariff_urgency() -> None:
assert order.field_value("DeliveryOfCargo") == "ДоставкаДоДверей"
assert order.field_value("Payer") == "payer-1"
assert order.field_value("ShippingMethod") == "sm-1"
assert order.field_value("CargoCost") == "50000"
def test_application_error_in_response_raises_request_error() -> None:
+41
View File
@@ -164,6 +164,47 @@ def test_post_init_payment_rejects_non_integer_price() -> None:
assert service.calls == []
def test_post_init_payment_rejects_missing_declared_value() -> None:
service = StubAggregatorService(response=None)
app = create_app()
_install_service_override(app, service)
invalid_payload = make_init_payment_payload()
del invalid_payload["content"]["declared_value"]
response = _post(app, invalid_payload)
assert response.status_code == 422
assert service.calls == []
def test_post_init_payment_rejects_non_integer_declared_value() -> None:
service = StubAggregatorService(response=None)
app = create_app()
_install_service_override(app, service)
invalid_payload = make_init_payment_payload()
invalid_payload["content"]["declared_value"] = "50000"
response = _post(app, invalid_payload)
assert response.status_code == 422
assert service.calls == []
def test_post_init_payment_rejects_camel_case_declared_value() -> None:
service = StubAggregatorService(response=None)
app = create_app()
_install_service_override(app, service)
invalid_payload = make_init_payment_payload()
invalid_payload["content"]["declaredValue"] = invalid_payload["content"].pop(
"declared_value"
)
response = _post(app, invalid_payload)
assert response.status_code == 422
assert service.calls == []
def test_post_init_payment_requires_company_fields_when_is_company_true() -> None:
service = StubAggregatorService(response=None)
app = create_app()
+1
View File
@@ -49,6 +49,7 @@ def make_init_payment_payload(**overrides: Any) -> dict[str, Any]:
},
"content": {
"description": "Headphones",
"declared_value": 50000,
},
"pickupDate": "2026-05-15T10:00:00.000Z",
"deliveryDate": "2026-05-18T18:00:00.000Z",