Spaces:
Sleeping
Sleeping
File size: 1,403 Bytes
536ba3d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | 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
|