# Canteen Asset Tracker — Full Test Plan

## Areas to Cover

### API Tests (pytest)
- [ ] **Backend Health & Auth** — `/health`, `/api/auth/login`, `/api/auth/me`, auth enforcement
- [ ] **Assets CRUD** — create, read, update, delete, list, search by machine_id, validation
- [ ] **Check-ins** — create with/without GPS, list by asset, cascade on delete
- [ ] **Customers CRUD** — create, read, update, delete, list
- [ ] **Locations CRUD** — create with customer relation, read, update, delete, list with rooms
- [ ] **Rooms CRUD** — create with location relation, read, update, delete, list by location
- [ ] **Users CRUD** — create, read, update (role/password), delete, list
- [ ] **Geofences CRUD** — create polygon, update, delete, list, point-in-geofence check
- [ ] **Proximity** — find assets near GPS point
- [ ] **Visits** — create, list by asset, stats
- [ ] **Activity Feed** — list with user/limit filters
- [ ] **Dashboard Stats** — aggregate counts
- [ ] **CSV Exports** — assets, checkins, service-summary
- [ ] **File Uploads** — icon upload, photo upload
- [ ] **OCR** — image upload and text extraction
- [ ] **Settings CRUD** — categories, makes, models, key_names, key_types, badge_types

### Frontend UI Tests (browser)
- [ ] **Login page** — renders, accepts admin/changeme, redirects
- [ ] **Add Asset tab** — form renders, barcode scan, manual entry, OCR, GPS capture
- [ ] **Asset List tab** — shows assets, filter, detail view, CSV import
- [ ] **Map tab** — pins, geofences drawn, heatmap, GPS status badge
- [ ] **Customers & Locations tab** — lists, CRUD forms
- [ ] **Dashboard tab** — stats cards render
- [ ] **Reporting tab** — export buttons work
- [ ] **Settings tab** — entity lists, add/delete settings
- [ ] **Navigation** — drawer open/close, tab switching
- [ ] **Dark theme** — consistent styling

### E2E Smoke Test
- [ ] **Full workflow** — login → create asset → check in → verify stats → export CSV → delete

## Existing Test Coverage
- `smoke_test.sh`: 16 bash-based API smoke tests (health, asset CRUD, checkins, stats, CSV, 404/422 validation)
- `tests/test_server.py`: 3209-line pytest suite covering DB schema, v2 migration, seed data, asset CRUD
