52 lines
1.7 KiB
Go
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.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")
|
|
}
|