Step-by-Step Guide — Follow each step exactly as written. Every value you need to type is spelled out. Do not improvise.
TC-DUES-003: Dues Payment & Renewal (Detailed)
Module: Dues & Billing - Payment & Renewal
Admin Test User: admin@rcme.membervu.com / Admin123! (Admin User)
Treasurer Test User: treasurer@demo.membervu.com / Treasurer123! (Ana Reyes)
Member Test User: testmember@rcme.membervu.com / Member123! (Maria Cruz)
URLs for this test:
Frontend:
MailHog (email viewer):
Frontend:
https://stg-rcme.membervu.comMailHog (email viewer):
https://stg-webmail.membervu.com
PREREQUISITE: Dues invoices must already exist. If not, run TC-DUES-002 first to generate them. Maria Cruz should have a dues invoice for ₱15,000 (Regular Member, period 2026).
TC-DPAY-01: Member Pays Dues Invoice
Purpose: Verify that a member can pay their dues invoice through the member portal.
| Step | Action (EXACT clicks/typing) | Expected Result (EXACT text/behavior) | Test Value |
|---|---|---|---|
| 1 | Open your browser and go to:https://stg-rcme.membervu.com/loginEnter email: testmember@rcme.membervu.comEnter password: Member123!Click "Sign In". |
Login succeeds. Member dashboard loads for Maria Cruz. | Email: testmember@rcme.membervu.comPassword: Member123! |
| 2 | Navigate to "My Invoices" or "Billing" in the sidebar. | Your invoice list loads. You should see a dues invoice for 2026 with amount ₱15,000 and status PENDING (or UNPAID). | - |
| 3 | Click on the dues invoice (₱15,000) to view its details. | Invoice detail page opens showing: - Amount: ₱15,000 - Type: Dues / Annual Dues - Period: 2026 - Status: PENDING / UNPAID - A "Pay Now" button (or payment options). |
- |
| 4 | Click the "Pay Now" button. | A payment dialog or page appears showing payment options. You may see options like: - GCash - Maya - Credit Card - Bank Transfer - Or an "Admin will record payment" note. For full payment channel testing, see TC-PAY-001. |
- |
| 5 | Select a payment method (e.g., "GCash" or whichever is available). Follow the payment flow to completion. If using a test/sandbox payment gateway, use any test credentials provided. If no online payment is available, proceed to TC-DPAY-02 for admin-recorded payment. |
Payment is processed. The invoice status changes to "PAID". A confirmation message appears, such as "Payment successful". | - |
| 6 | Return to "My Invoices". Verify the dues invoice now shows status "PAID". | The invoice is marked as PAID with the payment date recorded. | - |
| 7 | Verify that your membership status remains ACTIVE (or was renewed with an updated expiry date). Check your profile or dashboard. | Membership status is ACTIVE. If the membership had an expiry date, it may have been extended to the next renewal period. | - |
NOTE: If online payment gateways are not yet configured in staging (Paynamics integration is pending), skip to TC-DPAY-02 to test admin-recorded payment instead.
PASS if: Dues payment processed, invoice status changed to PAID, membership remains ACTIVE.
TC-DPAY-02: Admin Records Dues Payment
Purpose: Verify that an admin or treasurer can manually record a dues payment.
| Step | Action (EXACT clicks/typing) | Expected Result (EXACT text/behavior) | Test Value |
|---|---|---|---|
| 1 | Log in as treasurer: Email: treasurer@demo.membervu.comPassword: Treasurer123! |
Login succeeds. Dashboard loads for Ana Reyes (Treasurer). | Email: treasurer@demo.membervu.comPassword: Treasurer123! |
| 2 | Navigate to "Admin" > "Invoices" (or "Billing" > "Invoices"). | The invoice list loads showing all invoices across all members. | - |
| 3 | Find a PENDING/UNPAID dues invoice for a member (e.g., a member other than Maria Cruz if her invoice is already paid, or any member with an unpaid dues invoice). Click on the invoice. | Invoice detail page opens. | - |
| 4 | Look for a "Record Payment" or "Mark as Paid" button. Click it. | A payment recording form appears with fields for: - Payment amount (pre-filled with invoice amount) - Payment method (e.g., Cash, Bank Transfer, Check) - Payment date - Reference number (optional) |
- |
| 5 | Fill in the payment details: - Amount: leave as pre-filled (full invoice amount) - Payment Method: select "Bank Transfer" (or "Cash") - Payment Date: today's date - Reference: QA-TEST-PAYMENT-001Click "Record Payment" or "Save". |
A success message appears. The invoice status changes to "PAID". | Reference: QA-TEST-PAYMENT-001 |
| 6 | Return to the invoice list. Verify the invoice now shows "PAID". | Invoice status is PAID. | - |
PASS if: Admin/Treasurer recorded payment, invoice status changed to PAID.
TC-DPAY-03: Overdue Dues Handling
Purpose: Verify the system's behavior when dues are overdue (past due date + grace period).
SKIP (Partial) — Testing actual overdue status transitions requires waiting for the due date + 30-day grace period to pass, or requires database manipulation to set past due dates.
What you CAN verify:
What you CAN verify:
- Check if any existing members have overdue invoices (look for invoices with past due dates).
- Check the expired user
expired@demo.membervu.com(Antonio Dela Cruz) to see if overdue handling is visible. - Look for any overdue warning banners on the member dashboard.
| Step | Action (EXACT clicks/typing) | Expected Result (EXACT text/behavior) | Test Value |
|---|---|---|---|
| 1 | Log in as the expired user: Email: expired@demo.membervu.comPassword: Expired123! |
Either: - Login succeeds but the dashboard shows an overdue/expired notice, or - Login succeeds but with restricted access, or - Login is blocked with a message about expired membership. |
Email: expired@demo.membervu.comPassword: Expired123! |
| 2 | If login succeeded, look for any overdue warnings, expired banners, or renewal prompts on the dashboard or profile. | The system indicates the membership is expired or dues are overdue. There may be a "Renew" or "Pay Now" prompt. | - |
PASS if: Expired member sees appropriate overdue/expired notices.
TC-DPAY-04: Founding Member Exemption
SKIP — The "Founding Member" membership type (with ₱0 dues) is not included in the RCME seed data. Only Regular Member (₱15,000), Associate Member (₱10,000), and Student Member (₱5,000) are seeded.
What would happen: If a Founding Member type existed with ₱0 annual dues, the system should either:
- Not generate a dues invoice for Founding Members (since amount is ₱0), or
- Generate a ₱0 invoice that is automatically marked as PAID.
To test manually: Create a "Founding Member" membership type via Admin > Membership Types with ₱0 dues, assign a member to it, and generate invoices.
What would happen: If a Founding Member type existed with ₱0 annual dues, the system should either:
- Not generate a dues invoice for Founding Members (since amount is ₱0), or
- Generate a ₱0 invoice that is automatically marked as PAID.
To test manually: Create a "Founding Member" membership type via Admin > Membership Types with ₱0 dues, assign a member to it, and generate invoices.
TC-DPAY-05: Partial Payment
Purpose: Verify the system's behavior when a partial payment is made against a dues invoice.
| Step | Action (EXACT clicks/typing) | Expected Result (EXACT text/behavior) | Test Value |
|---|---|---|---|
| 1 | Log in as admin or treasurer. Navigate to "Admin" > "Invoices". Find a PENDING dues invoice for ₱15,000 (Regular Member). Click on it. | Invoice detail page opens showing amount ₱15,000. | - |
| 2 | Click "Record Payment". In the amount field, enter a partial amount:10000Payment Method: "Bank Transfer" Reference: QA-PARTIAL-001Click "Record Payment" or "Save". |
Either: - The partial payment is recorded. Invoice shows ₱10,000 paid with ₱5,000 remaining. Status changes to "PARTIALLY_PAID" or remains "PENDING" with a balance, or - The system rejects partial payments with a message like "Payment amount must match invoice amount". Note the behavior. |
Amount: 10000Reference: QA-PARTIAL-001 |
| 3 | If partial payment was accepted: record a second payment for the remaining amount:5000Reference: QA-PARTIAL-002Click "Record Payment". |
The remaining ₱5,000 is recorded. Invoice is now fully paid (status: PAID). Total payments: ₱10,000 + ₱5,000 = ₱15,000. | Amount: 5000Reference: QA-PARTIAL-002 |
NOTE: If partial payments are not supported, note this in your test results as "Partial payments not supported — system requires full payment amount." This is acceptable behavior.
PASS if: Either partial payments work correctly (balance tracked, final payment completes invoice) OR partial payments are explicitly rejected (also valid).
CLEANUP — Read This Before You Stop
Payments were recorded during this test:
These payments and invoice status changes cannot be easily reversed through the UI. If you need a clean state, reseed the database:
Do NOT change the expired user's status (
- Dues payment for Maria Cruz (TC-DPAY-01) — if online payment was used
- Admin-recorded payment (TC-DPAY-02) — reference QA-TEST-PAYMENT-001
- Partial payments (TC-DPAY-05) — references QA-PARTIAL-001 and QA-PARTIAL-002
These payments and invoice status changes cannot be easily reversed through the UI. If you need a clean state, reseed the database:
docker exec membervu-backend npm run seed:rcmeDo NOT change the expired user's status (
expired@demo.membervu.com) unless you plan to reseed. Other tests depend on Antonio Dela Cruz being in EXPIRED status.