完善区域漏损识别
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
from fastapi import FastAPI
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from app.api.v1.endpoints import leakage as leakage_endpoint
|
||||
|
||||
|
||||
def _build_client() -> TestClient:
|
||||
app = FastAPI()
|
||||
app.include_router(leakage_endpoint.router, prefix="/api/v1/leakage")
|
||||
return TestClient(app)
|
||||
|
||||
|
||||
def test_identify_leakage_success(monkeypatch):
|
||||
def fake_run_leakage_identification(**kwargs):
|
||||
assert kwargs["network"] == "demo"
|
||||
return {"rows": [], "area_count": 0}
|
||||
|
||||
monkeypatch.setattr(
|
||||
leakage_endpoint, "run_leakage_identification", fake_run_leakage_identification
|
||||
)
|
||||
client = _build_client()
|
||||
response = client.post(
|
||||
"/api/v1/leakage/identify/",
|
||||
json={
|
||||
"network": "demo",
|
||||
"scada_start": "2026-01-01T00:00:00+08:00",
|
||||
"scada_end": "2026-01-01T01:00:00+08:00",
|
||||
"scheme_name": "dma_001",
|
||||
},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert response.json()["area_count"] == 0
|
||||
|
||||
|
||||
def test_query_leakage_schemes_success(monkeypatch):
|
||||
monkeypatch.setattr(
|
||||
leakage_endpoint,
|
||||
"list_leakage_identify_schemes",
|
||||
lambda network, query_date=None: [
|
||||
{"scheme_name": "dma_001", "scheme_type": "dma_leak_identification"}
|
||||
],
|
||||
)
|
||||
client = _build_client()
|
||||
response = client.get("/api/v1/leakage/schemes/", params={"network": "demo"})
|
||||
assert response.status_code == 200
|
||||
assert response.json()[0]["scheme_name"] == "dma_001"
|
||||
|
||||
|
||||
def test_query_leakage_scheme_detail_success(monkeypatch):
|
||||
monkeypatch.setattr(
|
||||
leakage_endpoint,
|
||||
"get_leakage_identify_scheme_detail",
|
||||
lambda network, scheme_name: {
|
||||
"scheme_name": scheme_name,
|
||||
"rows": [{"Area": "1", "LeakageFlow_m3_per_s": 0.1}],
|
||||
},
|
||||
)
|
||||
client = _build_client()
|
||||
response = client.get(
|
||||
"/api/v1/leakage/schemes/dma_001", params={"network": "demo"}
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert response.json()["scheme_name"] == "dma_001"
|
||||
Reference in New Issue
Block a user