package app import ( "net/http" "net/http/httptest" "net/url" "strings" "testing" ) func TestAdminMutationsRedirectToOwningTabs(t *testing.T) { srv := newTestServer(t) handler := srv.Routes() cookie := loginCookie(t, handler) for _, test := range []struct { path string form url.Values want string }{ { path: "/admin/contact-details", form: url.Values{"email": {"studio@example.com"}, "phone": {"123"}, "location": {"London"}}, want: "/admin/contact-details?ok=contact+details+saved", }, { path: "/admin/content", form: url.Values{ "hero_title": {"Hero"}, "hero_subtitle": {"Subtitle"}, "intro_title": {"Intro"}, "intro_text": {"Text"}, "about_name": {"Name"}, "about_role": {"Role"}, "about_bio": {"Bio"}, "hero_image_current": {"/static/placeholders/hero.svg"}, "about_image_current": {"/static/placeholders/about.svg"}, }, want: "/admin/main?ok=content+saved", }, } { req := httptest.NewRequest(http.MethodPost, test.path, strings.NewReader(test.form.Encode())) req.Header.Set("Content-Type", "application/x-www-form-urlencoded") req.AddCookie(cookie) rec := httptest.NewRecorder() handler.ServeHTTP(rec, req) if rec.Code != http.StatusSeeOther || rec.Header().Get("Location") != test.want { t.Fatalf("%s expected redirect %q, got %d %q", test.path, test.want, rec.Code, rec.Header().Get("Location")) } } } func TestAdminProjectValidation(t *testing.T) { srv := newTestServer(t) handler := srv.Routes() cookie := loginCookie(t, handler) form := url.Values{"title": {" "}, "location": {"London"}, "year": {"2026"}, "category": {"Residential"}, "description": {"Text"}} req := httptest.NewRequest(http.MethodPost, "/admin/projects", strings.NewReader(form.Encode())) req.Header.Set("Content-Type", "application/x-www-form-urlencoded") req.AddCookie(cookie) rec := httptest.NewRecorder() handler.ServeHTTP(rec, req) if rec.Code != http.StatusSeeOther { t.Fatalf("expected redirect, got %d", rec.Code) } if location := rec.Header().Get("Location"); !strings.Contains(location, "/admin/projects?err=") || !strings.Contains(location, "project+title+is+required") { t.Fatalf("expected validation error redirect, got %q", location) } }