github-actions[bot]
Automated CT: Update daily prices and retrain model [skip ci]
d877708
Raw
History Blame Contribute Delete
1.4 kB
import pytest
from fastapi.testclient import TestClient
from src.models.api import app, COMMODITY_MAP
import src.models.api as api
from unittest.mock import MagicMock
client = TestClient(app)
@pytest.fixture(autouse=True)
def mock_model():
# Mock the global model variable in src.models.api
api.model = MagicMock()
yield
api.model = None
def test_health_check():
response = client.get("/")
assert response.status_code == 200
assert response.json()["service"] == "MLOps Forecasting API"
def test_predict_invalid_commodity():
payload = {
"commodity": "Invalid",
"lag_prices": [200.0] * 7
}
response = client.post("/predict", json=payload)
assert response.status_code == 400
assert "Unknown commodity" in response.json()["detail"]
def test_predict_wrong_lag_count():
payload = {
"commodity": "Samba",
"lag_prices": [200.0] * 5 # Should be 7
}
response = client.post("/predict", json=payload)
assert response.status_code == 400
assert "Exactly 7 lag prices" in response.json()["detail"]
def test_predict_success():
api.model.predict.return_value = [250.0]
payload = {
"commodity": "Samba",
"lag_prices": [200.0] * 7
}
response = client.post("/predict", json=payload)
assert response.status_code == 200
assert response.json()["predicted_price_lkr"] == 250.0