Files
space-booking/TESTING.md
Claude Agent 9c2846cf00 feat: add per-space timezone settings and improve booking management
- Add timezone configuration per space with fallback to system default
- Implement timezone-aware datetime display and editing across frontend
- Add migration for per_space_settings table
- Update booking service to handle timezone conversions properly
- Improve .gitignore to exclude build artifacts
- Add comprehensive testing documentation

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-11 15:54:51 +00:00

223 lines
6.5 KiB
Markdown

# Testing Guide - Spaces & Dashboard Implementation
## Application Status
**Backend**: Running on http://localhost:8000
**Frontend**: Running on http://localhost:5174
**API Tests**: All endpoints working correctly
## Test Data
### Users
- **Admin**: admin@example.com / adminpassword
- **User**: user@example.com / userpassword
### Spaces
- Biblioteca Colorata 1 (sala, capacity: 20) - Active
- Biblioteca Colorata 2 (sala, capacity: 20) - Active
### Bookings
- Test Meeting - Tomorrow at 10:00 (Pending approval)
---
## Manual Testing Steps
### 1. Test Dashboard Page (`/`)
**As Admin User:**
1. Open http://localhost:5174 in your browser
2. Login with: admin@example.com / adminpassword
3. You should see the **Dashboard** with:
-**Quick Stats Cards:**
- Total Bookings: 1
- Pending: 1
- Approved: 0
- Pending Requests: 1 (admin only)
-**Quick Actions Section:**
- "Book a Space" button → links to /spaces
- "My Bookings" button → links to /my-bookings
- "Manage Bookings" button (admin only) → links to /admin/bookings
- "Manage Spaces" button (admin only) → links to /admin/spaces
-**Upcoming Bookings Card:**
- Shows "Test Meeting" for tomorrow at 10:00
- Displays space name "Biblioteca Colorata 1"
- Shows status badge "Pending"
- Has "View All" link to /my-bookings
-**Available Spaces Card:**
- Shows 2 active spaces
- Each space clickable → navigates to /spaces/:id
- Displays type and capacity
- Has "View All" link to /spaces
-**Recent Activity Card (admin only):**
- Shows last 3-5 audit log entries
- Displays action, user, and timestamp
- Has "View All" link to /admin/audit-log
**Expected Behavior:**
- Loading spinner appears briefly while fetching data
- All cards display correctly with accurate data
- Links navigate to correct pages
- Admin-only sections visible only to admin users
---
### 2. Test Spaces Page (`/spaces`)
1. Navigate to http://localhost:5174/spaces (or click "Book a Space" from Dashboard)
2. You should see:
-**Page Header:**
- Title: "Available Spaces"
- Subtitle: "Browse and reserve meeting rooms and desk spaces"
-**Filters:**
- Type dropdown: All Types / Desk / Meeting Room / Conference Room
- Status dropdown: All / Active Only
-**Spaces Grid:**
- 2 space cards displayed in responsive grid
- Each card shows:
- Space name (e.g., "Biblioteca Colorata 1")
- Active/Inactive badge
- Type icon and label
- Capacity icon and count
- Description (truncated to 100 chars)
- "View Details" button
-**Card Interactions:**
- Hover effect: card lifts up with shadow
- Click anywhere on card → navigates to /spaces/:id (detail page)
**Test Filtering:**
- Change Type filter → cards update (currently all are "sala", so mapping may show as is)
- Change Status to "Active Only" → shows only active spaces (both visible)
- Empty filters → should show "No Spaces Found" message
**Expected Behavior:**
- Loading spinner while fetching spaces
- Cards render in a responsive grid (3 columns on desktop, 1 on mobile)
- Clicking a card navigates to SpaceDetail page with calendar
- Empty state shows when no spaces match filters
---
### 3. Test Space Detail Page (`/spaces/:id`)
1. From Spaces page, click on any space card
2. You should see:
-**Breadcrumbs:** Home / Spaces / [Space Name]
-**Space header** with name, badges (type, capacity, status)
-**Reserve Space button** (already implemented)
-**Description card** (if space has description)
-**Availability Calendar** (already implemented)
**Expected Behavior:**
- Page loads space details correctly
- Calendar shows existing bookings
- Reserve button is functional
---
### 4. Test as Regular User
1. Logout (if logged in as admin)
2. Login with: user@example.com / userpassword
3. **Dashboard should show:**
- ✅ Quick stats (Total, Pending, Approved) - WITHOUT "Pending Requests" card
- ✅ Quick actions - WITHOUT "Manage Bookings" and "Manage Spaces" buttons
- ✅ Upcoming Bookings - empty or only user's bookings
- ✅ Available Spaces - same 2 spaces
- ✅ NO "Recent Activity" section
4. **Spaces page should work identically** for regular users
**Expected Behavior:**
- Admin-specific features hidden for regular users
- All other functionality works the same
---
## Automated Test Results
```
✅ All API endpoints tested successfully
✅ Spaces page: Can display 2 spaces with filtering
✅ Dashboard stats: Total: 1, Pending: 1, Approved: 0
✅ Upcoming bookings: 1 upcoming bookings
✅ Available spaces: 2 active spaces
✅ Admin features: 1 pending requests, 3 recent logs
✅ ESLint: No errors
```
---
## Verification Checklist
### Spaces.vue
- [x] Grid layout with space cards
- [x] Filtering by type and status
- [x] Loading state spinner
- [x] Empty state message
- [x] Error handling
- [x] Click navigation to detail page
- [x] Responsive design
- [x] Displays: name, type, capacity, status, description
### Dashboard.vue
- [x] Quick stats cards (total, pending, approved)
- [x] Admin stats (pending requests)
- [x] Quick actions with links
- [x] Upcoming bookings list (sorted by date)
- [x] Available spaces list
- [x] Admin recent activity logs
- [x] Loading state
- [x] Empty states for each section
- [x] Responsive design
- [x] Role-based visibility (admin vs user)
### Code Quality
- [x] TypeScript types correct
- [x] ESLint passing
- [x] Uses existing APIs
- [x] Consistent styling with SpaceDetail.vue
- [x] Error handling implemented
---
## Known Limitations
1. **Type mapping**: Backend uses "sala" type, frontend expects "desk/meeting_room/conference_room"
- Current workaround: formatType() function handles both
- Consider aligning backend types with frontend expectations
2. **Empty bookings**: Test data has only 1 booking
- To test full functionality, create more bookings via UI or API
3. **Time zones**: Dates displayed in UTC
- Future enhancement: format according to user's timezone
---
## Next Steps
1. ✅ Spaces.vue - **IMPLEMENTED**
2. ✅ Dashboard.vue - **IMPLEMENTED**
3. 🔜 Booking creation flow (US-004d)
4. 🔜 My Bookings page
5. 🔜 Admin booking management
---
## Support
If you encounter issues:
1. Check browser console for errors (F12)
2. Verify backend is running: `curl http://localhost:8000/health`
3. Verify frontend is running: `curl http://localhost:5174/`
4. Check API responses: http://localhost:8000/docs