//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) }