PASS valid booking expected [] got [] PASS missing name expected [name] got [name] PASS bad email expected [email] got [email] PASS unknown service expected [service] got [service] PASS date today (too soon) expected [date] got [date] PASS weekend date expected [date] got [date] PASS impossible date expected [date] got [date] PASS time before opening expected [time] got [time] PASS time after last slot expected [time] got [time] PASS time not on half hour expected [time] got [time] PASS qty zero expected [qty] got [qty] PASS qty text expected [qty] got [qty] PASS notes too long expected [notes] got [notes] PASS honeypot filled expected [form] got [form] PASS several errors at once expected [email,name,qty] got [email,name,qty] PASS invoice number format PASS net = 2 x 340.00 PASS tax = 10% of net PASS gross = net + tax PASS due date = issued + 14 days PASS same slot reported as taken PASS other slot still free PASS database rejects duplicate slot PASS next sequence number is 2 24 of 24 tests passed