Add tests for 4CM routing endpoints (GET/POST /api/routing)
- TestAPIRouting: 7 tests covering get/set routing mode and breakpoint - mock_pipeline now has a real set_routing side_effect that updates properties - Covers connected/disconnected states, mode toggle, breakpoint change, both
This commit is contained in:
+64
-1
@@ -44,6 +44,11 @@ def mock_pipeline():
|
|||||||
pl._master_volume = 0.8
|
pl._master_volume = 0.8
|
||||||
pl.routing_mode = "mono"
|
pl.routing_mode = "mono"
|
||||||
pl.routing_breakpoint = 7
|
pl.routing_breakpoint = 7
|
||||||
|
|
||||||
|
def _set_routing(mode, breakpoint=7):
|
||||||
|
pl.routing_mode = mode
|
||||||
|
pl.routing_breakpoint = breakpoint
|
||||||
|
pl.set_routing = MagicMock(side_effect=_set_routing)
|
||||||
return pl
|
return pl
|
||||||
|
|
||||||
|
|
||||||
@@ -375,4 +380,62 @@ class TestErrors:
|
|||||||
|
|
||||||
def test_empty_model_load_path(self, client):
|
def test_empty_model_load_path(self, client):
|
||||||
res = client.post("/api/models/load", json={"path": ""})
|
res = client.post("/api/models/load", json={"path": ""})
|
||||||
assert res.status_code == 400
|
assert res.status_code == 400
|
||||||
|
|
||||||
|
|
||||||
|
class TestAPIRouting:
|
||||||
|
"""4CM routing mode and breakpoint endpoints."""
|
||||||
|
|
||||||
|
def test_get_routing_default(self, client, mock_pipeline):
|
||||||
|
"""GET /api/routing returns current routing config."""
|
||||||
|
res = client.get("/api/routing")
|
||||||
|
assert res.status_code == 200
|
||||||
|
data = res.json()
|
||||||
|
assert data["routing_mode"] == "mono"
|
||||||
|
assert data["routing_breakpoint"] == 7
|
||||||
|
|
||||||
|
def test_get_routing_no_deps(self, client_no_deps):
|
||||||
|
"""GET /api/routing returns 503 when pipeline not connected."""
|
||||||
|
res = client_no_deps.get("/api/routing")
|
||||||
|
assert res.status_code == 503
|
||||||
|
|
||||||
|
def test_set_routing_mode_4cm(self, client, mock_pipeline):
|
||||||
|
"""POST /api/routing switches to 4CM mode."""
|
||||||
|
res = client.post("/api/routing", json={"routing_mode": "4cm"})
|
||||||
|
assert res.status_code == 200
|
||||||
|
data = res.json()
|
||||||
|
assert data["routing_mode"] == "4cm"
|
||||||
|
mock_pipeline.set_routing.assert_called_with("4cm", 7)
|
||||||
|
|
||||||
|
def test_set_routing_mode_mono(self, client, mock_pipeline):
|
||||||
|
"""POST /api/routing switches back to mono."""
|
||||||
|
res = client.post("/api/routing", json={"routing_mode": "mono"})
|
||||||
|
assert res.status_code == 200
|
||||||
|
data = res.json()
|
||||||
|
assert data["routing_mode"] == "mono"
|
||||||
|
mock_pipeline.set_routing.assert_called_with("mono", 7)
|
||||||
|
|
||||||
|
def test_set_routing_breakpoint(self, client, mock_pipeline):
|
||||||
|
"""POST /api/routing sets breakpoint position."""
|
||||||
|
res = client.post("/api/routing", json={"routing_breakpoint": 3})
|
||||||
|
assert res.status_code == 200
|
||||||
|
data = res.json()
|
||||||
|
assert data["routing_breakpoint"] == 3
|
||||||
|
mock_pipeline.set_routing.assert_called_with("mono", 3)
|
||||||
|
|
||||||
|
def test_set_routing_both(self, client, mock_pipeline):
|
||||||
|
"""POST /api/routing sets both mode and breakpoint."""
|
||||||
|
res = client.post("/api/routing", json={
|
||||||
|
"routing_mode": "4cm",
|
||||||
|
"routing_breakpoint": 5,
|
||||||
|
})
|
||||||
|
assert res.status_code == 200
|
||||||
|
data = res.json()
|
||||||
|
assert data["routing_mode"] == "4cm"
|
||||||
|
assert data["routing_breakpoint"] == 5
|
||||||
|
mock_pipeline.set_routing.assert_called_with("4cm", 5)
|
||||||
|
|
||||||
|
def test_set_routing_no_deps(self, client_no_deps):
|
||||||
|
"""POST /api/routing returns 503 when pipeline not connected."""
|
||||||
|
res = client_no_deps.post("/api/routing", json={"routing_mode": "4cm"})
|
||||||
|
assert res.status_code == 503
|
||||||
Reference in New Issue
Block a user