Files
simrsx-fe/QUICK_START_TESTING.md
T

322 lines
8.4 KiB
Markdown

# QUICK START - ENCOUNTER EDIT MODE TESTING
## Pre-Test Checklist
- [ ] You have valid encounter IDs to test with
- [ ] Browser DevTools are ready (F12 or Cmd+Opt+I)
- [ ] Network tab can be monitored
- [ ] You have update permissions (RBAC configured)
- [ ] API is running and accessible
---
## Running TEST 1: Load Edit Page (5 min)
### Setup
1. Open browser DevTools → Console tab
2. Navigate to: `http://localhost:3000/outpatient/encounter/123/edit` (replace 123 with valid ID)
### Expected Flow
```
1. Page loads with spinner
2. Console shows: 📥 [EDIT MODE] Loading encounter detail: {id: 123}
3. After 1-2 seconds, data loads
4. Console shows: ✅ [EDIT MODE] Encounter detail loaded and form mapped successfully
5. Form fields auto-populate with encounter data
```
### Verify
- [ ] Patient name visible in form
- [ ] Doctor/Specialist selected
- [ ] Date in YYYY-MM-DD format
- [ ] Payment type shown (jkn, spm, etc.)
- [ ] If JKN payment: Card number and SEP number visible
- [ ] No console errors (❌ should not appear)
- [ ] No red validation error messages
### Success Criteria
✅ Form fully populated and no errors
---
## Running TEST 2: Edit & Save (5 min)
### Setup
- Use same page from TEST 1 (form already populated)
- Open Network tab and filter: `encounter`
### Steps
1. Change doctor to different one
2. Click "Simpan" (Save) button
3. Watch Network tab for PATCH request
4. Watch Console for save logs
### Expected Flow
```
1. Click save
2. Console shows: 💾 [EDIT MODE] Sending PATCH request: {id: 123, payload: {...}}
3. Network shows: PATCH /api/v1/encounter/123
4. After 1-2 seconds: Console shows: 📤 [SAVE] API Response: {success: true}
5. Console shows: ✅ [SAVE] Success - Redirecting to list page
6. Page navigates to list
```
### Verify Network Tab
Click on the PATCH request and check:
- [ ] URL: `/api/v1/encounter/123` (correct ID)
- [ ] Method: PATCH (not PUT or POST)
- [ ] Headers: `Content-Type: application/json`
- [ ] Payload (Request body):
- `appointment_doctor_code` is string
- `registeredAt` has ISO format with Z
- `paymentMethod_code` matches payment type
- [ ] Response: `"success": true`
### Success Criteria
✅ PATCH request sent and success toast shown
---
## Running TEST 3: BPJS Conditional Fields (3 min)
### Setup
- Navigate to new edit page: `/outpatient/encounter/456/edit`
- Form loads with SPM payment type
- Card number field is hidden/empty
### Steps
1. Find the "Jenis Pembayaran" (Payment Type) dropdown
2. Change from SPM to JKN
3. Observe form changes
### Expected Behavior
- [ ] Card number field appears and required
- [ ] SEP type field appears and required
- [ ] SEP number field appears (if SEP type selected)
- [ ] Try to save without card number
- [ ] Validation error appears: "No. Kartu BPJS wajib diisi"
### Fill Fields
1. Enter BPJS card number (e.g., 0000123456789)
2. Select SEP type
3. Try to save again
4. Now validation should pass
### Success Criteria
✅ Conditional fields work and validation enforces requirements
---
## Running TEST 4: Error Handling (5 min)
### Setup (Simulate Error)
- Open DevTools
- Go to Network tab
- Find "Throttling" dropdown (set to "Slow 3G" or "Offline")
### Scenario A: GET Failure
1. Set network to Offline
2. Navigate to edit page: `/outpatient/encounter/789/edit`
3. Observe error handling
### Expected Result
- [ ] Error toast appears: "Gagal memuat data kunjungan"
- [ ] Console shows: ❌ [EDIT MODE] Failed to load encounter
- [ ] Page auto-redirects to list
### Scenario B: PATCH Failure
1. Load page normally (turn network back on)
2. Set network to Offline
3. Try to save changes
4. Observe error handling
### Expected Result
- [ ] Error toast appears: "Gagal memperbarui kunjungan"
- [ ] Console shows: ❌ [SAVE] Failed
- [ ] Page stays on form (user can retry)
- [ ] Turn network back on and retry save
### Success Criteria
✅ Error handling works correctly for both GET and PATCH
---
## Running TEST 5: Data Types (3 min)
### Verify in Browser Console
```javascript
// 1. Check form object structure
// Go to any edit page, then in console:
window.__nuxt__ // If available
// 2. Check Network tab for PATCH payload
// Look at "Request body" for PATCH /api/v1/encounter/{id}
```
### Manual Checks
**Doctor ID Type:**
- Form shows: "Dr. John Doe" (human readable)
- Network payload shows: `"appointment_doctor_code": "5"` (string)
- ✅ Correct
**Date Format:**
- Form shows: "2025-12-02" (YYYY-MM-DD)
- Network payload shows: `"registeredAt": "2025-12-02T10:30:00.000Z"` (ISO)
- ✅ Correct
**Payment Type:**
- Form shows: "BPJS" (human readable)
- Form value: `"jkn"` (code)
- Network payload shows: `"paymentMethod_code": "insurance"` (API code)
- ✅ Correct
### Success Criteria
✅ All type conversions transparent and correct
---
## Console Log Reference
### Good Logs (No Issues)
```
✅ [EDIT MODE] Encounter detail loaded and form mapped successfully
✅ [SAVE] Success - Redirecting to list page
📥 [EDIT MODE] Loading encounter detail: {id: 123}
📋 [EDIT MODE] Mapped encounter to form: {...}
💾 [EDIT MODE] Sending PATCH request: {id: 123, payload: {...}}
📤 [SAVE] API Response: {success: true}
```
### Bad Logs (Issues Found)
```
❌ [EDIT MODE] Failed to load encounter: 'Encounter not found'
❌ [SAVE] Failed: 'Validation error: invalid doctor_id'
❌ [SAVE] Error saving encounter: Error: Failed to put encounter
```
**Action:** If you see ❌, note the exact error and check troubleshooting guide
---
## Common Issues During Testing
| Problem | Cause | Solution |
|---------|-------|----------|
| Form not populated | API call failed | Check Network tab, verify API is running |
| Save button disabled | Validation fails | Check form for required fields marked in red |
| PATCH shows 422 | Invalid data type | Check Network payload vs expected schema |
| Doctor list empty | Specialist not selected | Select specialist first |
| Date shows wrong format | Conversion failed | Check console for mapping logs |
---
## Quick Reference: Test URLs
### Outpatient Tests
```
http://localhost:3000/outpatient/encounter/1/edit
http://localhost:3000/outpatient/encounter/2/edit
http://localhost:3000/outpatient/encounter/3/edit
```
### Inpatient Tests
```
http://localhost:3000/inpatient/encounter/1/edit
http://localhost:3000/inpatient/encounter/2/edit
```
### Emergency Tests
```
http://localhost:3000/emergency/encounter/1/edit
http://localhost:3000/emergency/encounter/2/edit
```
---
## Testing Checklist Summary
### TEST 1 - Load Edit Page
- [ ] Form loads without errors
- [ ] All fields populated
- [ ] Console shows success logs
- **Time:** 5 min
### TEST 2 - Edit & Save
- [ ] Edit values
- [ ] PATCH request sent correctly
- [ ] Success message shown
- [ ] Navigates to list
- **Time:** 5 min
### TEST 3 - BPJS Fields
- [ ] Conditional fields appear
- [ ] Validation enforced
- [ ] Save blocked without required fields
- **Time:** 3 min
### TEST 4 - Error Handling
- [ ] GET errors handled correctly
- [ ] PATCH errors handled correctly
- [ ] User feedback appropriate
- **Time:** 5 min
### TEST 5 - Data Types
- [ ] Doctor ID: string
- [ ] Dates: ISO format with Z
- [ ] Payment type: correct mapping
- **Time:** 3 min
**Total Time: ~21 minutes**
---
## Success Indicators
### All Tests Pass When:
✅ No ❌ in console logs
✅ All form fields populate correctly
✅ PATCH requests appear in Network tab
✅ Success toasts show after save
✅ Redirects work properly
✅ Validation enforces requirements
✅ Error messages are helpful
✅ Data types match expectations
---
## Report Issues
If you encounter issues:
1. **Take a screenshot** of the error
2. **Copy console logs** (search for ❌ patterns)
3. **Check Network tab** for failed requests
4. **Note the encounter ID** and feature type (outpatient/inpatient/emergency)
5. **Describe what you were doing** when issue occurred
---
## Next Steps After Testing
If all tests pass:
1. ✅ Feature is ready for deployment
2. ✅ Can proceed to detail/readonly pages
3. ✅ Can implement additional features
If issues found:
1. Document the issue with error logs
2. Check troubleshooting in ENCOUNTER_EDIT_TEST.md
3. Review data mapping in ENCOUNTER_API_REFERENCE.md
4. Check handler implementation in encounter-entry.handler.ts
---
**Good Luck with Testing!** 🚀
For more details, refer to:
- `ENCOUNTER_EDIT_TEST.md` - Full test guide with detailed steps
- `ENCOUNTER_API_REFERENCE.md` - API and handler reference
- `IMPLEMENTATION_SUMMARY.md` - Overall architecture overview