"""Brotkrumen in der Topbar: Workspaces › Workspace › Bereich › Detail.""" from types import SimpleNamespace from app.web import Crumb, breadcrumbs from helpers import create_workspace WS = SimpleNamespace(id=7, name="Analyse") def labels(path: str, **context) -> list[str]: return [c.label for c in breadcrumbs(path, context)] def test_workspace_bereiche(): assert breadcrumbs("/workspaces/7", {"current_workspace": WS}) == [ Crumb("Workspaces", "/workspaces"), Crumb("Analyse", "/workspaces/7", workspace=True)] assert labels("/workspaces/7/data", current_workspace=WS) == ["Workspaces", "Analyse", "Daten"] assert labels("/workspaces/7/settings", current_workspace=WS)[-1] == "Einstellungen" assert labels("/workspaces/7/hugin/catalog", current_workspace=WS)[-3:] == ["Einstellungen", "Hugin", "Katalog"] assert labels("/workspaces/7/connections/new", current_workspace=WS)[-2:] == ["MCP-Server", "MCP-Server hinzufügen"] def test_chat_fuehrt_zurueck_zur_chat_liste(): crumbs = breadcrumbs("/chats/3", {"current_workspace": WS, "chat": SimpleNamespace(title="Umsatz Q3")}) assert crumbs[-2:] == [Crumb("Chats", "/workspaces/7#chats"), Crumb("Umsatz Q3")] def test_repository_mit_quelle_und_commit(): source = SimpleNamespace(name="app repo") crumbs = breadcrumbs("/workspaces/7/repo/commits/0123456789abcdef", {"current_workspace": WS, "source": source}) assert crumbs[-2:] == [Crumb("Repository", "/workspaces/7/repo?source=app%20repo"), Crumb("Commit 0123456")] crumbs = breadcrumbs("/workspaces/7/repo/compare", {"current_workspace": WS, "source": source, "pr": "12"}) assert crumbs[-2:] == [Crumb("Repository", "/workspaces/7/repo?source=app%20repo&tab=prs"), Crumb("Pull Request #12")] def test_administration_und_freigaben(): assert labels("/admin/teams/2", team=SimpleNamespace(name="Demo")) == ["Administration", "Teams", "Demo"] driver = SimpleNamespace(role="database", label="PostgreSQL") assert labels("/admin/mcp/4", server=driver) == ["Administration", "Datenbank-Treiber", "PostgreSQL"] approval = SimpleNamespace(arguments={"title": "Branch anlegen"}, tool="git_branch") assert labels("/approvals/5", a=approval, current_workspace=WS) == ["Freigaben", "Branch anlegen"] assert labels("/workspaces") == ["Workspaces"] assert labels("/login") == [] def test_topbar_zeigt_pfad(browser, people): anna = browser("anna") workspace_id = create_workspace(anna, people["team_demo"], "Analyse") page = anna.get(f"/workspaces/{workspace_id}/settings").text nav = page.split('class="breadcrumbs aiw-crumbs"')[1].split("")[0] assert 'Workspaces' in nav assert f'href="/workspaces/{workspace_id}" class="aiw-crumb-ws"' in nav assert 'Einstellungen' in nav