Files
Crussell/backend/handlers/bookings/repo_test.go
T
popertots 3029fd5179
CI / Nginx config check (push) Successful in 13s
CI / Env docs check (push) Successful in 15s
CI / Docker compose check (push) Successful in 15s
CI / Frontend major deps (push) Failing after 24s
CI / Frontend deps check (push) Successful in 30s
CI / Secrets scan (push) Successful in 38s
CI / Go build (push) Successful in 39s
CI / Frontend build (push) Successful in 1m3s
CI / Knip (push) Successful in 45s
CI / Go vet (prod) (push) Failing after 1m42s
CI / Frontend a11y check (push) Successful in 2m34s
CI / Go vet (dev) (push) Successful in 2m29s
CI / Staticcheck (prod) (push) Failing after 2m38s
CI / go mod tidy (push) Successful in 1m3s
CI / Staticcheck (dev) (push) Successful in 2m55s
CI / Frontend QC (audit) (push) Successful in 51s
CI / golangci-lint (push) Successful in 3m22s
CI / Go vulnerabilities (push) Successful in 1m26s
CI / Frontend QC (typecheck) (push) Successful in 2m18s
CI / Security scan (prod) (push) Successful in 4m18s
CI / Security scan (dev) (push) Successful in 4m40s
CI / Tests (prod) (push) Has been skipped
CI / Tests (dev) (push) Has been skipped
CI / Race (prod) (push) Has been skipped
CI / Race (dev) (push) Has been skipped
CI / Frontend QC (lint) (push) Successful in 2m18s
CI / Svelte strict check (push) Successful in 43s
test: add coverage tests across backend + fix mock for PENDING checkout support
New test files cover previously untested paths across DAV, validators,
S3, Square, mw, bookings, user, and payments packages.

Includes mock fix: HoldCheckouts flag on MockClient allows tests to
pause auto-complete goroutine for testing PENDING checkout states.

Coverage: 50.4% → 65.0% (+14.6pp)
2026-07-10 18:13:44 +01:00

103 lines
2.3 KiB
Go

//go:build test && dev
package bookings
import (
"testing"
"crussell/testutils"
"crussell/testutils/fixtures"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestGetBookingStatus(t *testing.T) {
ctx, tx := testutils.SetupTestTx(t)
_ = tx
userID, err := fixtures.CreateTestUser(tx)
require.NoError(t, err)
svcID, err := fixtures.CreateTestService(tx)
require.NoError(t, err)
bookingID, err := fixtures.CreateTestBooking(tx, userID, svcID)
require.NoError(t, err)
status, err := GetBookingStatus(ctx, bookingID)
require.NoError(t, err)
assert.Equal(t, "pending", status)
_, err = GetBookingStatus(ctx, "nonexistent-id")
assert.Error(t, err)
}
func TestGetBookingStartTime(t *testing.T) {
ctx, tx := testutils.SetupTestTx(t)
_ = tx
userID, err := fixtures.CreateTestUser(tx)
require.NoError(t, err)
svcID, err := fixtures.CreateTestService(tx)
require.NoError(t, err)
bookingID, err := fixtures.CreateTestBooking(tx, userID, svcID)
require.NoError(t, err)
startTime, err := GetBookingStartTime(ctx, bookingID)
require.NoError(t, err)
assert.False(t, startTime.IsZero())
_, err = GetBookingStartTime(ctx, "nonexistent-id")
assert.Error(t, err)
}
func TestBookingExists(t *testing.T) {
ctx, tx := testutils.SetupTestTx(t)
_ = tx
userID, err := fixtures.CreateTestUser(tx)
require.NoError(t, err)
svcID, err := fixtures.CreateTestService(tx)
require.NoError(t, err)
bookingID, err := fixtures.CreateTestBooking(tx, userID, svcID)
require.NoError(t, err)
exists, err := BookingExists(ctx, bookingID)
require.NoError(t, err)
assert.True(t, exists)
exists, err = BookingExists(ctx, "nonexistent-id")
require.NoError(t, err)
assert.False(t, exists)
}
func TestCountUserBookingsInStatus(t *testing.T) {
ctx, tx := testutils.SetupTestTx(t)
_ = tx
userID, err := fixtures.CreateTestUser(tx)
require.NoError(t, err)
svcID, err := fixtures.CreateTestService(tx)
require.NoError(t, err)
_, err = fixtures.CreateTestBooking(tx, userID, svcID)
require.NoError(t, err)
_, err = fixtures.CreateTestBooking(tx, userID, svcID)
require.NoError(t, err)
count, err := CountUserBookingsInStatus(ctx, userID, "pending")
require.NoError(t, err)
assert.Equal(t, 2, count)
count, err = CountUserBookingsInStatus(ctx, userID, "confirmed")
require.NoError(t, err)
assert.Equal(t, 0, count)
}