package test_test import ( "net/http" "net/url" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestTreasureChestShouldNotDeleteIfTransactionRecurringExists(t *testing.T) { t.Parallel() db, baseUrl, ctx := setupIntegrationTest(t) _, csrfToken, sessionId := createValidUserSession(t, db, baseUrl) formData := url.Values{ "name": {"Test Treasure Chest Parent"}, } resp := doAuthenticatedRequest(t, ctx, http.MethodPost, baseUrl+"/treasurechest/new", formData, csrfToken, sessionId) assert.Equal(t, http.StatusOK, resp.StatusCode) var parentId string err := db.GetContext(ctx, &parentId, "SELECT id FROM treasure_chest") require.NoError(t, err) formData = url.Values{ "name": {"Test Treasure Chest Child"}, "parent-id": {parentId}, } resp = doAuthenticatedRequest(t, ctx, http.MethodPost, baseUrl+"/treasurechest/new", formData, csrfToken, sessionId) assert.Equal(t, http.StatusOK, resp.StatusCode) var childId string err = db.GetContext(ctx, &childId, "SELECT id FROM treasure_chest WHERE parent_id = ?", parentId) require.NoError(t, err) formData = url.Values{ "treasure-chest-id": {childId}, "value": {"100"}, "interval-months": {"1"}, "party": {"Test Party"}, } resp = doAuthenticatedRequest(t, ctx, http.MethodPost, baseUrl+"/transaction-recurring/new", formData, csrfToken, sessionId) assert.Equal(t, http.StatusOK, resp.StatusCode) resp = doAuthenticatedRequest(t, ctx, http.MethodDelete, baseUrl+"/treasurechest/"+childId, nil, csrfToken, sessionId) assert.Equal(t, http.StatusBadRequest, resp.StatusCode) assert.Contains(t, resp.Header.Get("Hx-Trigger"), "cannot delete treasure chest with existing recurring transactions") }