package test import ( "RenewCMS/api/pkg/apperr" "RenewCMS/internal/domain/audit" "net/http" "strings" "testing" ) func TestArticleCreateSiteDeletedHTTP(t *testing.T) { t.Run("A site deleted between its lookup and the insert answers 409 target_site_deleted", func(t *testing.T) { w := newCreateSiteWorld(t) w.transactor.removed = map[uint32]bool{createSiteNotes: true} before := w.snapshot() response := w.send(storyWriter, http.MethodPost, createSitePath, `{"title":"Plain","site":"notes"}`) if response.Code != http.StatusConflict || strings.TrimSpace(response.text()) != apperr.TargetSiteDeletedErrorMessage { t.Fatalf("expected 409 %q, got %d %q", apperr.TargetSiteDeletedErrorMessage, response.Code, response.text()) } w.expectUnchanged(before) events := w.eventsOf(audit.ActionArticleCreate) if len(events) != 1 || events[0].Outcome != audit.OutcomeFailed || events[0].FailureReason == nil || *events[0].FailureReason != "The site was deleted while the article was being created." { t.Errorf("one failed article.create event with a plain reason expected: %+v", events) } }) }