🏨 Hotel App

Comprehensive booking system for testing complex business workflows, data relationships, and reservation management

Overview

The Hotel App simulates a real hotel booking platform with properties, room types, reservations, and reviews. Test complex relationships between entities and booking workflows.

What You Can Test

  • Properties: Create and manage hotel properties
  • Room Types: Define rooms with prices, amenities, availability
  • Bookings: Create reservations, manage check-in/out dates
  • Reviews: Guest ratings and comments for properties
  • Chaos Lab: Test error handling with controlled failures

Requirements & Fields

Property Fields

  • name - string, required, max 200 chars
  • location - string, required
  • rating - decimal, 0-5 stars
  • description - text, optional

Room Type Fields

  • property_id - UUID, required (links to property)
  • name - string (Standard, Deluxe, Suite)
  • price - decimal, per night
  • capacity - integer, max guests
  • amenities - array ["wifi", "tv", "minibar"]
  • is_available - boolean

Booking Fields

  • room_type_id - UUID, required
  • check_in - date, required
  • check_out - date, required, after check_in
  • guests - integer, min 1
  • status - string (pending, confirmed, checked_in, completed, cancelled)

Review Fields

  • property_id - UUID, required
  • rating - integer, 1-5
  • comment - text, optional

Test Case Examples

TC-001: Create Property

Objective: Verify hotel property can be created

Steps:

  • Send POST request to /api/hotel/properties
  • Include valid data (name, location, rating)
  • Verify response status 201
  • Verify property returned with generated ID

Expected: Property created successfully

TC-002: Create Booking with Valid Date Range

Objective: Verify booking can be created with valid dates

Steps:

  • Create property and room type
  • Send POST request with check_in = 2026-03-01, check_out = 2026-03-05
  • Verify response status 201
  • Verify booking dates are correct

Expected: Booking created with correct date range

TC-003: Invalid Date Range (Check-out Before Check-in)

Objective: Verify validation for invalid date ranges

Steps:

  • Send POST request with check_out before check_in
  • Verify response status 400
  • Verify error message indicates invalid date range

Expected: Request rejected with validation error

TC-004: Test Room Availability Logic

Objective: Verify room availability status

Steps:

  • Create room with is_available = true
  • Get available rooms, verify room appears
  • Update room to is_available = false
  • Get available rooms, verify room doesn't appear

Expected: Availability filtering works correctly

TC-005: Booking Status Transitions

Objective: Verify booking can move through statuses

Steps:

  • Create booking (status = pending)
  • Update to status = confirmed
  • Update to status = checked_in
  • Update to status = completed
  • Verify each transition succeeds

Expected: All valid status transitions work

TC-006: Review Rating Validation

Objective: Verify review ratings must be 1-5

Steps:

  • Send POST request with rating = 6
  • Verify response status 400
  • Send request with rating = 0
  • Verify response status 400
  • Send request with rating = 3 (valid)
  • Verify response status 201

Expected: Only ratings 1-5 accepted

TC-007: Property-Room Relationship

Objective: Verify rooms are linked to correct property

Steps:

  • Create Property A
  • Create 3 rooms for Property A
  • Get Property A details
  • Verify response includes 3 rooms

Expected: Property shows all associated rooms

Chaos Lab Testing

The Hotel App includes Chaos Lab for testing error handling:

  • Random 500 Errors: Simulate server failures
  • Timeout Scenarios: Test request timeouts
  • Rate Limiting: Verify throttling behavior
  • Data Corruption: Test invalid response handling

Access Chaos Lab via the 🎲 button in the Hotel App UI to configure failure scenarios.