TC_ADMIN_005: Seed Data Verification

Test Case Information

FieldValue
Test IDTC_ADMIN_005
ModulePlatform Administration
PriorityP1 - Critical
TypeData Verification
PrerequisitesSeed script executed

Objective

Verify all test data (events, invoices, membership types) exists and is correctly configured.


Seed Script Reference

# Run seed (safe upserts)

docker exec membervu-backend npm run seed:rcme

Reset and reseed (destructive)

docker exec membervu-backend npm run seed:rcme -- --reset


Test Steps

Step 1: Verify Membership Types

Query:

SELECT name, "amountCents", currency, period, "isActive"

FROM "MembershipType"

WHERE "tenantId" = (SELECT id FROM "Tenant" WHERE slug = 'rcme');

Expected Data:

NameAmount (cents)CurrencyPeriodActive
Regular Member1500000PHPANNUALtrue
Associate Member1000000PHPANNUALtrue
CheckResult
Regular Member exists[ ]
Associate Member exists[ ]
Amounts correct[ ]
Both active[ ]

Step 2: Verify Test Events

Query:

SELECT slug, title, status, visibility, "priceCents", capacity

FROM "Event"

WHERE "tenantId" = (SELECT id FROM "Tenant" WHERE slug = 'rcme')

ORDER BY slug;

Expected Data:

SlugTitleStatusVisibilityPrice (cents)Capacity
e2e-free-eventE2E Test - Free Social EventPUBLISHEDPUBLIC050
e2e-paid-eventE2E Test - Paid Gala EventPUBLISHEDPUBLIC300000100
e2e-past-eventE2E Test - Past EventCOMPLETEDMEMBERS_ONLY10000030
CheckResult
Free event exists[ ]
Paid event exists[ ]
Past event exists[ ]
Status values correct[ ]
Price values correct[ ]

Via UI:

  1. Login as admin
  2. Navigate to /admin/events
  3. Verify all 3 events appear
  4. Verify status badges correct

Step 3: Verify Test Invoices

Query:

SELECT

i."invoiceNumber",

m.email as "memberEmail",

i.status,

i."amountCents",

i.description

FROM "Invoice" i

JOIN "Member" m ON i."memberId" = m.id

WHERE i."tenantId" = (SELECT id FROM "Tenant" WHERE slug = 'rcme')

ORDER BY i."invoiceNumber";

Expected Data:

Invoice #Member EmailStatusAmount (cents)Description
E2E-INV-001testmember@rcme.membervu.comPAID1500000Annual Dues (Paid)
E2E-INV-002pending-payment@demo.membervu.comOUTSTANDING1500000Annual Dues (Pending)
E2E-INV-003pending-payment@demo.membervu.comOVERDUE300000Event Registration (Overdue)
E2E-INV-004testmember@rcme.membervu.comCANCELLED100000Cancelled Registration
E2E-INV-005expired@demo.membervu.comOVERDUE1500000Renewal Dues (Overdue)
CheckResult
5 invoices exist[ ]
Status values correct[ ]
Member links correct[ ]
Amounts correct[ ]

Via UI:

  1. Login as treasurer
  2. Navigate to /admin/invoices
  3. Verify all 5 invoices appear
  4. Use status filter to verify each status

Step 4: Verify Member Records

Query:

SELECT

email,

"firstName",

"lastName",

status,

"membershipApplicationStatus",

roles

FROM "Member"

WHERE "tenantId" = (SELECT id FROM "Tenant" WHERE slug = 'rcme')

ORDER BY email;

Expected Data (12 members):

EmailFirst NameLast NameStatusApp StatusRoles
admin@rcme.membervu.comAdminUserACTIVEAPPROVED[ADMIN]
comms@demo.membervu.comCommsManagerACTIVEAPPROVED[COMMUNICATIONS_MANAGER]
events@demo.membervu.comEventsManagerACTIVEAPPROVED[EVENT_MANAGER]
expired@demo.membervu.comExpiredMemberEXPIREDAPPROVED[MEMBER]
guest@demo.membervu.comGuestUserACTIVEAPPROVED[]
testmember@rcme.membervu.comActiveMemberACTIVEAPPROVED[MEMBER]
membershipchair@demo.membervu.comMembershipManagerACTIVEAPPROVED[MEMBERSHIP_MANAGER]
officer@rcme.membervu.comOfficerReadonlyACTIVEAPPROVED[OFFICER]
pending@demo.membervu.comPendingApplicantPENDING_VERIFICATIONAPPLIED[]
pending-payment@demo.membervu.comPendingPaymentPENDING_PAYMENTAPPROVED[MEMBER]
superadmin@zeniark.comSuperAdminACTIVEAPPROVED[ADMIN, SUPER_ADMIN]
treasurer@demo.membervu.comTreasurerFinanceACTIVEAPPROVED[FINANCE_MANAGER]
CheckResult
12 members exist[ ]
Status values correct[ ]
Roles assigned correctly[ ]

Step 5: Verify User-Member Linking

Query:

SELECT

u.email,

u.roles as "userRoles",

u."platformRoles",

m.roles as "memberRoles",

m.status as "memberStatus"

FROM "User" u

JOIN "Member" m ON u."memberId" = m.id

WHERE u."tenantId" = (SELECT id FROM "Tenant" WHERE slug = 'rcme')

ORDER BY u.email;

CheckResult
All users linked to members[ ]
User roles match member roles[ ]
Super admin has platformRoles[ ]

Step 6: Verify Event Dates

Query:

SELECT slug, "startsAt", "endsAt",

CASE

WHEN "startsAt" > NOW() THEN 'FUTURE'

WHEN "endsAt" < NOW() THEN 'PAST'

ELSE 'CURRENT'

END as timing

FROM "Event"

WHERE "tenantId" = (SELECT id FROM "Tenant" WHERE slug = 'rcme');

EventExpected Timing
e2e-free-eventFUTURE (~14 days)
e2e-paid-eventFUTURE (~30 days)
e2e-past-eventPAST (~30 days ago)
CheckResult
Free event is future[ ]
Paid event is future[ ]
Past event is past[ ]

Step 7: Verify Invoice Dates

Query:

SELECT

"invoiceNumber",

"issuedAt",

"dueAt",

"paidAt",

CASE

WHEN "dueAt" < NOW() AND status != 'PAID' THEN 'OVERDUE'

ELSE 'OK'

END as "dueStatus"

FROM "Invoice"

WHERE "tenantId" = (SELECT id FROM "Tenant" WHERE slug = 'rcme');

InvoiceDue Status
E2E-INV-001OK (paid)
E2E-INV-002OK (future due date)
E2E-INV-003OVERDUE
E2E-INV-004OK (cancelled)
E2E-INV-005OVERDUE

Pass/Fail Criteria

CriteriaRequired
2 membership types existYes
3 events exist with correct statusYes
5 invoices exist with correct statusYes
12 members exist with correct statusYes
All user-member links validYes
Date calculations correctYes

Troubleshooting

Missing Data

# Reseed completely

docker exec membervu-backend npm run seed:rcme -- --reset

Wrong Tenant

# Verify tenant ID

docker exec membervu-backend npx prisma db execute --stdin <<< \

"SELECT id, slug FROM \"Tenant\" WHERE slug = 'rcme';"

Stale Dates

Seed script uses relative dates (daysFromNow, daysAgo). Reseed if dates have drifted.


Result Summary

Data TypeCountStatusNotes
Membership Types/2[ ] Pass
Events/3[ ] Pass
Invoices/5[ ] Pass
Members/12[ ] Pass
User-Member Links/12[ ] Pass
Overall[ ] Pass

Tester: _________________

Date: _________________