feat: add active_view to StatePatch model and patch_state handler
- Add optional active_view field to StatePatch Pydantic model - Add active_view handling in patch_state to persist the field - Add test_patch_state_sets_active_view: verifies PATCH persists active_view - Add test_patch_state_active_view_defaults_to_all: verifies GET returns 'all' by default Closes task-1: Add active_view to StatePatch Model
This commit is contained in:
@@ -423,6 +423,7 @@ class StatePatch(BaseModel):
|
||||
session_order: list[str] | None = None
|
||||
active_session: str | None = None
|
||||
active_remote_id: str | None = None
|
||||
active_view: str | None = None
|
||||
|
||||
|
||||
class HeartbeatPayload(BaseModel):
|
||||
@@ -495,6 +496,8 @@ async def patch_state(patch: StatePatch) -> dict:
|
||||
state["active_session"] = patch.active_session
|
||||
if "active_remote_id" in changed:
|
||||
state["active_remote_id"] = patch.active_remote_id
|
||||
if "active_view" in changed:
|
||||
state["active_view"] = patch.active_view
|
||||
save_state(state)
|
||||
return state
|
||||
|
||||
|
||||
@@ -227,6 +227,39 @@ def test_patch_state_ignores_unknown_fields(client):
|
||||
assert data["session_order"] == ["a", "b"]
|
||||
|
||||
|
||||
def test_patch_state_sets_active_view(client):
|
||||
"""PATCH /api/state with active_view persists the value.
|
||||
|
||||
Verifies response contains active_view and subsequent GET returns the value.
|
||||
"""
|
||||
from muxplex.state import load_state
|
||||
|
||||
# PATCH with a specific active_view value
|
||||
response = client.patch("/api/state", json={"active_view": "my-view"})
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["active_view"] == "my-view"
|
||||
|
||||
# Verify the value persists via GET
|
||||
get_response = client.get("/api/state")
|
||||
assert get_response.status_code == 200
|
||||
get_data = get_response.json()
|
||||
assert get_data["active_view"] == "my-view"
|
||||
|
||||
# Also verify it was persisted to disk
|
||||
persisted = load_state()
|
||||
assert persisted["active_view"] == "my-view"
|
||||
|
||||
|
||||
def test_patch_state_active_view_defaults_to_all(client):
|
||||
"""GET /api/state returns active_view='all' by default."""
|
||||
response = client.get("/api/state")
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert "active_view" in data
|
||||
assert data["active_view"] == "all"
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# GET /api/sessions
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user