Убрал company из sender и recipient

This commit is contained in:
Раис Юсупалиев
2026-04-05 00:05:28 +03:00
parent c95b6210a7
commit 18f7e251e3
7 changed files with 60 additions and 11 deletions
+8 -2
View File
@@ -2,7 +2,7 @@
from typing import Literal from typing import Literal
from pydantic import BaseModel, Field from pydantic import BaseModel, Field, model_validator
class OrderPhone(BaseModel): class OrderPhone(BaseModel):
@@ -10,11 +10,17 @@ class OrderPhone(BaseModel):
class OrderParty(BaseModel): class OrderParty(BaseModel):
company: str | None = None
name: str = Field(min_length=1) name: str = Field(min_length=1)
email: str = Field(min_length=1) email: str = Field(min_length=1)
phones: list[OrderPhone] = Field(min_length=1) phones: list[OrderPhone] = Field(min_length=1)
@model_validator(mode="before")
@classmethod
def reject_company_field(cls, value: object) -> object:
if isinstance(value, dict) and "company" in value:
raise ValueError("company is not allowed")
return value
class OrderLocation(BaseModel): class OrderLocation(BaseModel):
address: str = Field(min_length=1) address: str = Field(min_length=1)
-1
View File
@@ -22,7 +22,6 @@ Content-Type: application/json
"tariff_code": 535, "tariff_code": 535,
"comment": "Тестовый заказ", "comment": "Тестовый заказ",
"sender": { "sender": {
"company": "ООО Ромашка",
"name": "Петр Петров", "name": "Петр Петров",
"email": "sender@example.com", "email": "sender@example.com",
"phones": [ "phones": [
+3 -3
View File
@@ -31,10 +31,10 @@
| 022 | DONE | 2026-03-25 | Add address suggestion endpoint | `spec/tasks/022_add_address_suggestion_endpoint.md` | | 022 | DONE | 2026-03-25 | Add address suggestion endpoint | `spec/tasks/022_add_address_suggestion_endpoint.md` |
| 023 | DONE | 2026-03-29 | Add Yandex Geosuggest address suggestion adapter and CIS routing | `spec/tasks/023_add_yandex_geosuggest_address_suggestion_adapter.md` | | 023 | DONE | 2026-03-29 | Add Yandex Geosuggest address suggestion adapter and CIS routing | `spec/tasks/023_add_yandex_geosuggest_address_suggestion_adapter.md` |
| 024 | DONE | 2026-03-29 | Add TomTom address suggestion adapter and Europe routing | `spec/tasks/024_add_tomtom_address_suggestion_adapter.md` | | 024 | DONE | 2026-03-29 | Add TomTom address suggestion adapter and Europe routing | `spec/tasks/024_add_tomtom_address_suggestion_adapter.md` |
| 025 | TODO | 2026-04-03 | Remove company from Create Delivery Order parties | `spec/tasks/025_remove_company_from_create_delivery_order.md` | | 025 | DONE | 2026-04-03 | Remove company from Create Delivery Order parties | `spec/tasks/025_remove_company_from_create_delivery_order.md` |
## Summary ## Summary
- Total: **26** - Total: **26**
- TODO: **1** - TODO: **0**
- DONE: **25** - DONE: **26**
@@ -1,7 +1,7 @@
--- ---
id: 025 id: 025
title: Remove company from Create Delivery Order parties title: Remove company from Create Delivery Order parties
status: TODO status: DONE
created: 2026-04-03 created: 2026-04-03
--- ---
@@ -57,7 +57,6 @@ def _make_order_request(**overrides: object) -> OrderCreateRequest:
"tariff_code": 535, "tariff_code": 535,
"comment": "Test order", "comment": "Test order",
"sender": { "sender": {
"company": "Romashka LLC",
"name": "Petr Petrov", "name": "Petr Petrov",
"email": "sender@example.com", "email": "sender@example.com",
"phones": [{"number": "+79009876543"}], "phones": [{"number": "+79009876543"}],
@@ -123,7 +122,6 @@ def test_provider_register_order_posts_cdek_contract_payload_and_maps_response()
"tariff_code": 535, "tariff_code": 535,
"comment": "Test order", "comment": "Test order",
"sender": { "sender": {
"company": "Romashka LLC",
"name": "Petr Petrov", "name": "Petr Petrov",
"email": "sender@example.com", "email": "sender@example.com",
"phones": [{"number": "+79009876543"}], "phones": [{"number": "+79009876543"}],
+48 -1
View File
@@ -37,7 +37,6 @@ def _valid_payload() -> dict[str, object]:
"tariff_code": 535, "tariff_code": 535,
"comment": "Test order", "comment": "Test order",
"sender": { "sender": {
"company": "Romashka LLC",
"name": "Petr Petrov", "name": "Petr Petrov",
"email": "sender@example.com", "email": "sender@example.com",
"phones": [{"number": "+79009876543"}], "phones": [{"number": "+79009876543"}],
@@ -113,6 +112,54 @@ def test_post_delivery_order_rejects_invalid_payload() -> None:
assert service.calls == [] assert service.calls == []
def test_post_delivery_order_rejects_sender_company_field() -> None:
service = StubAggregatorService(response=None)
app = create_app()
_install_service_override(app, service)
invalid_payload = _valid_payload()
invalid_payload["sender"] = {
**invalid_payload["sender"], # type: ignore[arg-type]
"company": "Romashka LLC",
}
async def run_request() -> httpx.Response:
transport = httpx.ASGITransport(app=app)
async with httpx.AsyncClient(
transport=transport,
base_url="http://testserver",
) as client:
return await client.post("/api/v1/delivery/order", json=invalid_payload)
response = asyncio.run(run_request())
assert response.status_code == 422
assert service.calls == []
def test_post_delivery_order_rejects_recipient_company_field() -> None:
service = StubAggregatorService(response=None)
app = create_app()
_install_service_override(app, service)
invalid_payload = _valid_payload()
invalid_payload["recipient"] = {
**invalid_payload["recipient"], # type: ignore[arg-type]
"company": "Romashka LLC",
}
async def run_request() -> httpx.Response:
transport = httpx.ASGITransport(app=app)
async with httpx.AsyncClient(
transport=transport,
base_url="http://testserver",
) as client:
return await client.post("/api/v1/delivery/order", json=invalid_payload)
response = asyncio.run(run_request())
assert response.status_code == 422
assert service.calls == []
def test_post_delivery_order_maps_invalid_request_to_400() -> None: def test_post_delivery_order_maps_invalid_request_to_400() -> None:
service = StubAggregatorService( service = StubAggregatorService(
response=None, response=None,
-1
View File
@@ -37,7 +37,6 @@ def _make_order_request(**overrides: object) -> OrderCreateRequest:
"tariff_code": 535, "tariff_code": 535,
"comment": "Test order", "comment": "Test order",
"sender": { "sender": {
"company": "Romashka LLC",
"name": "Petr Petrov", "name": "Petr Petrov",
"email": "sender@example.com", "email": "sender@example.com",
"phones": [{"number": "+79009876543"}], "phones": [{"number": "+79009876543"}],