Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import pytest | |
| from pydantic import ValidationError | |
| from api.schemas import ( | |
| BatchPredictRequest, | |
| PredictRequest, | |
| PredictResponse, | |
| RecommendationRequest, | |
| ) | |
| def test_predict_request_defaults_and_bounds(): | |
| req = PredictRequest(battery_id="B0005", cycle_number=1) | |
| assert req.ambient_temperature == 24.0 | |
| assert req.min_voltage == 2.61 | |
| with pytest.raises(ValidationError): | |
| PredictRequest(battery_id="B0005", cycle_number=0) | |
| def test_recommendation_request_topk_range(): | |
| ok = RecommendationRequest( | |
| battery_id="B0006", | |
| current_cycle=20, | |
| current_soh=90.0, | |
| top_k=5, | |
| ) | |
| assert ok.top_k == 5 | |
| with pytest.raises(ValidationError): | |
| RecommendationRequest( | |
| battery_id="B0006", | |
| current_cycle=20, | |
| current_soh=90.0, | |
| top_k=0, | |
| ) | |
| def test_batch_predict_request_accepts_cycles(): | |
| req = BatchPredictRequest( | |
| battery_id="B0007", | |
| cycles=[{"cycle_number": 1}, {"cycle_number": 2}], | |
| ) | |
| assert len(req.cycles) == 2 | |
| def test_predict_response_optional_fields(): | |
| resp = PredictResponse( | |
| battery_id="B0005", | |
| cycle_number=10, | |
| soh_pct=92.5, | |
| rul_cycles=120.0, | |
| degradation_state="Healthy", | |
| model_used="random_forest", | |
| ) | |
| assert resp.model_version is None | |