=== Account Settings Page - Manual Test Plan === ✅ PRE-FLIGHT CHECKS: 1. Route registered: php artisan route:list --name=account-settings Expected: GET|HEAD admin/account-settings → AdminController@accountSettings 2. Controller method exists: Check AdminController::accountSettings() Expected: Method should return view with admin and vendor details 3. View file exists: resources/views/admin/settings/account_settings.blade.php Expected: File should be present with sidebar layout ✅ FUNCTIONAL TESTS: TEST 1: Access Page as Authenticated Vendor Steps: 1. Log in as a vendor user 2. Navigate to /admin/account-settings 3. Verify page loads successfully Expected Result: ✓ Page displays with user profile information Expected Result: ✓ Sidebar shows Profile, Password, Verification, Payment tabs Expected Result: ✓ User's name, email, and avatar displayed TEST 2: Profile Update Steps: 1. Click Profile tab 2. Change first name to 'UpdatedTest' 3. Change mobile to a different valid number 4. Click 'Save profile' button Expected Result: ✓ Success message displayed Expected Result: ✓ Database updated (admins and vendors tables) Expected Result: ✓ Page shows updated information TEST 3: Avatar Upload Steps: 1. In Profile tab, choose an image file 2. Submit the form Expected Result: ✓ Avatar uploads successfully Expected Result: ✓ New avatar displayed in sidebar TEST 4: Password Change (Success) Steps: 1. Click Password tab 2. Enter correct current password 3. Enter new password 4. Confirm new password 5. Click 'Update password' Expected Result: ✓ Success message: 'Password updated successfully' Expected Result: ✓ Can log in with new password TEST 5: Password Change (Wrong Current Password) Steps: 1. Click Password tab 2. Enter incorrect current password 3. Enter new password and confirm 4. Click 'Update password' Expected Result: ✓ Error message: 'Current password is incorrect' Expected Result: ✓ Password not changed TEST 6: Password Change (Mismatch Confirmation) Steps: 1. Click Password tab 2. Enter correct current password 3. Enter new password 4. Enter different confirmation password 5. Click 'Update password' Expected Result: ✓ Error message: 'New password and confirm password do not match' Expected Result: ✓ Password not changed TEST 7: Tab Navigation Steps: 1. Click each tab: Profile, Password, Verification, Payment Expected Result: ✓ Content changes smoothly Expected Result: ✓ Active tab highlighted in sidebar Expected Result: ✓ Page scrolls to top on tab change Expected Result: ✓ No page reload occurs TEST 8: Validation - Empty Required Fields Steps: 1. In Profile tab, clear first_name 2. Submit form Expected Result: ✓ Validation error displayed Expected Result: ✓ Form not submitted TEST 9: Validation - Invalid Mobile Format Steps: 1. In Profile tab, enter 'abc123' as mobile 2. Submit form Expected Result: ✓ Validation error for mobile format Expected Result: ✓ Form not submitted TEST 10: Verification Tab Steps: 1. Click Verification tab Expected Result: ✓ Document status displayed (Verified/Not verified) Expected Result: ✓ Link to manage verification documents present TEST 11: Payment Tab Steps: 1. Click Payment tab Expected Result: ✓ Link to manage payment details present TEST 12: Responsive Design Steps: 1. Resize browser to mobile width (< 575px) 2. Check layout adapts correctly Expected Result: ✓ Sidebar stacks below content on mobile Expected Result: ✓ Buttons become full-width Expected Result: ✓ All content remains accessible TEST 13: Access from Sidebar Links Steps: 1. From vendor dashboard, click 'Settings' in sidebar 2. Click 'Password' link with #password anchor Expected Result: ✓ Redirects to /admin/account-settings Expected Result: ✓ Password tab becomes active when using #password anchor TEST 14: Different User Types Steps: 1. Test as vendor user 2. Test as marketer user 3. Test as admin user Expected Result: ✓ All user types can access the page Expected Result: ✓ Forms POST to correct endpoints ✅ AUTOMATED VERIFICATION COMMANDS: # Check route php artisan route:list --name=account-settings # Check if controller method exists php artisan tinker --execute="echo method_exists(\App\Http\Controllers\Admin\AdminController::class, 'accountSettings') ? 'EXISTS' : 'MISSING';" # Verify view compiles php artisan view:clear && php artisan view:cache # Check for syntax errors php -l app/Http/Controllers/Admin/AdminController.php php -l resources/views/admin/settings/account_settings.blade.php ✅ REGRESSION TESTS: 1. Original endpoints still work: - POST /admin/update-vendor-details/personal - POST /admin/update-admin-password - POST /admin/update-payment-details Expected: All endpoints function as before 2. Old individual settings pages: - /admin/update-vendor-details/personal (if accessed directly) - /admin/update-admin-password (if accessed directly) Expected: Still accessible if needed === END OF TEST PLAN ===