aiBatteryLifeCycle / tests /api /test_schemas.py
NeerajCodz's picture
Fix metrics loading and restructure pytest suite
536ba3d
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