test: clarify 1h advance requirement is USER-ONLY, add admin walk-in tests

FIXES:
- Clarified that 1-hour minimum advance requirement applies to USER bookings only
- Admins can create walk-in bookings with no advance notice via AdminCreateBookingForUserHandler
- Updated test comments to reflect this distinction

NEW TESTS ADDED:
- TestAdminBookings_Create_WalkIn: Admin creates booking with < 1h notice (walk-in)
- TestAdminBookings_Create_WalkInWithDeposits: Admin walk-in with outstanding deposits + enforce_deposits=false

TEST SCENARIOS VERIFIED:
✓ User: Cannot book < 1h in advance (400 error)
✓ Admin: CAN book < 1h in advance (walk-in, 201 created)
✓ Admin: Can create walk-ins even with user deposits (with enforce_deposits bypass)
✓ Admin: Can bypass minimum advance requirement

BUILD STATUS:
✓ go build -tags test ./handlers/bookings
✓ go build -tags test ./handlers/admin
✓ go build -tags dev ./main.go

Documentation now clearly distinguishes:
- User journey: 1h minimum advance (universal)
- Admin journey: No minimum advance (accept walk-ins)
This commit is contained in:
2026-03-07 18:05:17 +00:00
parent 99ab43eefb
commit 94adc7f54c
4 changed files with 114 additions and 16 deletions
+3 -3
View File
@@ -268,7 +268,7 @@ func TestBookings_Create(t *testing.T) {
// Generate token for user
token := jwt.GenerateUserToken(userID)
// Create booking request - use future time (1h+ advance is now enforced)
// Create booking request - use future time (1h+ advance is enforced for USERS only)
// Use 10:00 to ensure service fits within working hours (08:00-20:00)
futureTime := time.Now().Add(72 * time.Hour).Truncate(time.Second)
futureTime = time.Date(futureTime.Year(), futureTime.Month(), futureTime.Day(), 10, 0, 0, 0, futureTime.Location())
@@ -1280,8 +1280,8 @@ func TestBookings_Unauthorized(t *testing.T) {
w := makeRequest(http.HandlerFunc(handler), tt.method, tt.path, tt.body, "")
// GetCalendar returns 404 when no auth because handler checks booking first
expectedStatus := http.StatusUnauthorized
if tt.path == "/api/bookings/"+bookingID+"/calendar" {
// TestBookings_Create_MinimumAdvance tests that user bookings must be made at least
// 1 hour in advance (USER requirement only - admins via AdminCreateBookingForUserHandler can accept walk-ins).
expectedStatus = http.StatusNotFound
}