waste-prediction-api / tests /test_api_schema.py
ALAMDIENG's picture
refactor(backend): modularize architecture into config, core, schemas, services, and routers with single source of truth kecamatan registry
a6ddce9
Raw
History Blame Contribute Delete
1.53 kB
import pytest
from app import APIResponse, PredictionData, LogisticsPlan
def test_api_response_provenance_fields():
"""Verify that the APIResponse schema includes scientific provenance fields."""
schema = APIResponse.model_json_schema()
props = schema["properties"]
assert "data_status" in props
assert "forecast_type" in props
assert "model_version" in props
assert "training_data_type" in props
assert "disclaimer" in props
def test_logistics_plan_schema():
"""Verify LogisticsPlan includes operational assumptions."""
schema = LogisticsPlan.model_json_schema()
props = schema["properties"]
assert "operational_assumptions" in props
assert "calculation_method" in props
def test_kecamatan_registry_json_integrity():
"""Verify that config/kecamatan_registry.json contains exactly 44 sub-districts with valid metadata."""
from core.config import KECAMATAN_DATABASE, ALLOWED_LOCATIONS
assert len(KECAMATAN_DATABASE) == 44, f"Expected 44 kecamatan, got {len(KECAMATAN_DATABASE)}"
assert len(ALLOWED_LOCATIONS) == 44
assert "Menteng" in KECAMATAN_DATABASE
assert "Cakung" in KECAMATAN_DATABASE
assert "Penjaringan" in KECAMATAN_DATABASE
assert "Cengkareng" in KECAMATAN_DATABASE
for loc, info in KECAMATAN_DATABASE.items():
assert "latitude" in info
assert "longitude" in info
assert "population_jiwa" in info
assert "normal_avg" in info
assert "city" in info
assert "zone" in info