# Quick Test Guide - useTenantExists Hook ## Setup (One-time) ```bash cd /home/poduck/Desktop/smoothschedule2/frontend ./install-test-deps.sh ``` Then add to `package.json`: ```json { "scripts": { "test": "vitest", "test:ui": "vitest --ui", "test:run": "vitest run", "test:coverage": "vitest run --coverage" } } ``` ## Run Tests ```bash # Run all tests (watch mode) npm run test # Run once (CI mode) npm run test:run # Run with UI npm run test:ui # Run with coverage npm run test:coverage # Run only useTenantExists tests npm run test -- useTenantExists # Run specific test by name npm run test -- -t "returns exists: true" ``` ## Files Created | File | Location | Purpose | |------|----------|---------| | **Test Suite** | `src/hooks/__tests__/useTenantExists.test.ts` | 19 comprehensive tests | | **Vitest Config** | `vitest.config.ts` | Test runner configuration | | **Test Setup** | `src/test/setup.ts` | Global test setup | | **Install Script** | `install-test-deps.sh` | Dependency installation | ## Test Coverage ✓ **All Required Tests Implemented:** 1. Returns exists: true when API returns 200 2. Returns exists: false when API returns 404 3. Returns exists: false when subdomain is null 4. Returns exists: false on other API errors 5. Shows loading state while fetching 6. Caches results (5 minute staleTime) 7. Does not make API call when subdomain is null Plus **12 additional tests** for edge cases and error handling. ## Expected Output ``` ✓ src/hooks/__tests__/useTenantExists.test.ts (19) ✓ useTenantExists ✓ API Success Cases (2) ✓ API Error Cases (4) ✓ Null Subdomain Cases (3) ✓ Loading States (2) ✓ Caching Behavior (2) ✓ Query Key Behavior (1) ✓ Edge Cases (3) ✓ Query Retry Behavior (2) Test Files 1 passed (1) Tests 19 passed (19) ``` ## Troubleshooting | Issue | Solution | |-------|----------| | `Cannot find module 'vitest'` | Run `./install-test-deps.sh` | | `beforeAll is not defined` | Check `vitest.config.ts` has `globals: true` | | `document is not defined` | Ensure `environment: 'jsdom'` in config | | Tests timeout | Increase `testTimeout` in config | ## Documentation - **TEST_SUMMARY.md** - Complete test suite documentation - **SETUP_TESTING.md** - Detailed setup instructions - **TESTING.md** - Comprehensive testing guide - **src/hooks/__tests__/README.md** - Hook testing patterns ## Next Steps 1. ✓ Test files created 2. → Install dependencies: `./install-test-deps.sh` 3. → Update package.json scripts 4. → Run tests: `npm run test` 5. → Check coverage: `npm run test:coverage` --- **Quick Start:** ```bash cd /home/poduck/Desktop/smoothschedule2/frontend ./install-test-deps.sh # Add scripts to package.json npm run test ```