Files
spend-sparrow/test/treasure_chest_it_test.go
Tim Wundenberg c2b96145f3
All checks were successful
Build Docker Image / Build-Docker-Image (push) Successful in 5m5s
Build and Push Docker Image / Build-And-Push-Docker-Image (push) Successful in 5m13s
feat(transaction-recurring): #135 prohibit deletion of treasure chests if referenced
2025-05-29 14:37:49 +02:00

52 lines
1.7 KiB
Go

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.Get(&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.Get(&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")
}