diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index ff9735c..2bbf0b1 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -131,14 +131,16 @@ The portal is a **"command-center" design** — a light, print-like, authoritati **Alpine under the CSP build — no inline JS (`static/js/tags.js`).** The CSP build cannot `eval`, so two rules hold: (1) **every component is registered** via `Alpine.data()` in `static/js/tags.js` (one registry, loaded *before* the Alpine `', page, re.S).group(1) assert json.loads(raw.replace(""", '"'))[anchor] == "analyze" + + +def test_analyst_rail_follows_the_intelligence_cycle(client, login): + login("ANALYST", email="cycle@example.com") + page = client.get("/").text + rail = page.split('class="rail-nav"', 1)[1].split("", 1)[0] + labels = ["Workspace", "Collect", "Produce", "Discover"] + positions = [rail.index(f">{label}") for label in labels] + assert positions == sorted(positions), "rail groups are out of cycle order" + # Tasking is collection, not administration. + collect = rail.split(">Collect", 1)[1].split(">Produce", 1)[0] + assert "/requirements" in collect and "/notebooks" in collect + + +def test_admin_rail_collapses_the_config_consoles_behind_the_hub(client, login): + """Eleven admin links become four; every collapsed console is still one ⌘K + keystroke away, so nothing became unreachable.""" + login("ADMIN", email="railadmin@example.com") + page = client.get("/").text + rail = page.split('class="rail-nav"', 1)[1].split("", 1)[0] + admin = rail.split(">Administration", 1)[1] + assert admin.count(" fallback), and the + lifecycle + render + transition all live under Publish rather than being + spread over a subhead and a separate tab.""" + login("ANALYST", email="publish@example.com") + nb = client.post("/api/notebooks", json={"title": "Publish nb"}).json() + rid = client.post( + "/api/reports", json={"notebook_id": nb["id"], "title": "Publishable"} + ).json()["id"] + + page = client.get(f"/reports/{rid}/edit").text + assert "Save draft" not in page + assert "All changes saved" in page + assert "