Spaces:
Sleeping
Sleeping
| """Tests for the RawProviderPayload model.""" | |
| from __future__ import annotations | |
| import pytest | |
| from pydantic import ValidationError | |
| from src.app.domain.models import RawProviderPayload | |
| class TestRawProviderPayload: | |
| def test_valid_dict_payload(self) -> None: | |
| rp = RawProviderPayload( | |
| provider_id="paddleocr", | |
| adapter_id="adapter.paddle.v1", | |
| runtime_type="local", | |
| payload={"pages": [{"blocks": []}]}, | |
| ) | |
| assert rp.provider_id == "paddleocr" | |
| def test_valid_list_payload(self) -> None: | |
| rp = RawProviderPayload( | |
| provider_id="paddleocr", | |
| adapter_id="adapter.paddle.v1", | |
| runtime_type="local", | |
| payload=[[[100, 200], [300, 200], [300, 250], [100, 250]], ["text", 0.95]], | |
| ) | |
| assert isinstance(rp.payload, list) | |
| def test_empty_provider_rejected(self) -> None: | |
| with pytest.raises(ValidationError): | |
| RawProviderPayload( | |
| provider_id="", | |
| adapter_id="v1", | |
| runtime_type="local", | |
| payload={}, | |
| ) | |
| def test_with_image_dimensions(self) -> None: | |
| rp = RawProviderPayload( | |
| provider_id="paddle", | |
| adapter_id="v1", | |
| runtime_type="local", | |
| payload={}, | |
| image_width=2480, | |
| image_height=3508, | |
| ) | |
| assert rp.image_width == 2480 | |
| def test_zero_dimension_rejected(self) -> None: | |
| with pytest.raises(ValidationError): | |
| RawProviderPayload( | |
| provider_id="paddle", | |
| adapter_id="v1", | |
| runtime_type="local", | |
| payload={}, | |
| image_width=0, | |
| image_height=100, | |
| ) | |
| def test_with_metadata(self) -> None: | |
| rp = RawProviderPayload( | |
| provider_id="paddle", | |
| adapter_id="v1", | |
| runtime_type="local", | |
| payload={"data": "test"}, | |
| metadata={"processing_time_ms": 1234}, | |
| ) | |
| assert rp.metadata["processing_time_ms"] == 1234 | |
| def test_json_roundtrip(self) -> None: | |
| rp = RawProviderPayload( | |
| provider_id="paddle", | |
| adapter_id="v1", | |
| runtime_type="local", | |
| model_id="PP-OCRv4", | |
| payload={"blocks": [{"text": "hello"}]}, | |
| ) | |
| data = rp.model_dump(mode="json") | |
| rp2 = RawProviderPayload.model_validate(data) | |
| assert rp2.provider_id == rp.provider_id | |
| assert rp2.model_id == "PP-OCRv4" | |