package web_test import ( "context" "net/http" "net/url" "strings" "testing" ) // TestAdminHatFachebeneRechte prüft die pragmatische Lösung für "Admin // und KI-Verantwortlicher auf derselben Person" (siehe CLAUDE.md, // Offene Punkte / requireFachebene): ein admin sieht den Posteingang // und kann entscheiden, genau wie ein verantwortlicher. func TestAdminSiehtPosteingang(t *testing.T) { fs := newFakeStore() s := newServer(t, fs) _, adminCookie := seedFallImAccount(t, fs, s, "admin") resp := getWithCookie(t, s, adminCookie, "/faelle") if resp.Code != http.StatusOK { t.Fatalf("status = %d, body: %s", resp.Code, resp.Body.String()) } if !strings.Contains(resp.Body.String(), "Angebotstexte generieren") { t.Errorf("expected the open antrag in the Posteingang, got: %s", resp.Body.String()) } } func TestAdminSiehtEntscheidenFormular(t *testing.T) { fs := newFakeStore() s := newServer(t, fs) antragID, adminCookie := seedFallImAccount(t, fs, s, "admin") resp := getWithCookie(t, s, adminCookie, "/faelle/"+antragID) if resp.Code != http.StatusOK { t.Fatalf("status = %d, body: %s", resp.Code, resp.Body.String()) } if !strings.Contains(resp.Body.String(), `name="entscheidung"`) { t.Errorf("expected the Entscheiden form for admin, got: %s", resp.Body.String()) } } func TestAdminKannEntscheiden(t *testing.T) { fs := newFakeStore() s := newServer(t, fs) antragID, adminCookie := seedFallImAccount(t, fs, s, "admin") resp := postForm(t, s, adminCookie, "/faelle/"+antragID+"/entscheiden", url.Values{"entscheidung": {"rueckfrage"}}) if resp.Code != http.StatusSeeOther { t.Fatalf("status = %d, body: %s", resp.Code, resp.Body.String()) } antrag, err := fs.GetAntrag(context.Background(), antragID) if err != nil { t.Fatalf("GetAntrag: %v", err) } if antrag.Status != "entschieden" { t.Errorf("Status = %q, want entschieden", antrag.Status) } } func TestAdminSiehtRegisterUndWiedervorlage(t *testing.T) { fs := newFakeStore() s := newServer(t, fs) adminCookie := seedAccountWithRole(t, fs, "Test-Mandant", "admin@example.com", "admin") for _, path := range []string{"/registereintraege", "/wiedervorlage"} { resp := getWithCookie(t, s, adminCookie, path) if resp.Code != http.StatusOK { t.Errorf("GET %s status = %d, want 200 for admin", path, resp.Code) } } }