Test Cases: Member Directory

Module: Membership & Profiles - Member Directory

Endpoint: GET /api/membership/members/search (guard requireApprovedMember) — search by name/email.

Frontend: /directory (pages/DirectoryPage.tsx). Sidebar Directory is role-gated to MEMBER / ADMIN / OFFICER / MEMBERSHIP_MANAGER.

Note: the member Directory is a search tool (by name/email) for approved members — it does not have status/dues filters. Status / dues filtering + KPIs live on the admin All Members page (/admin/members), covered in TC-MEM-003.

Prerequisites

Test Cases

TC-DIR-01: View Directory

StepActionExpected Result
1As Maria Cruz, sidebar Directory (/directory).Directory loads with a "My Summary" strip (status / member-since, engagement, outstanding dues) + a search panel.
2Verify list rows.Each row shows avatar (or initials), name, email.

TC-DIR-02: Search Members

StepActionExpected Result
1Type a name or email in "Search by name or email…" → click Search.GET /api/membership/members/search; results filter to matches. Pagination (Prev/Next, "Page N of M") appears beyond 20 results.
2Click Clear.Search resets.

TC-DIR-03: View a Member's Detail

StepActionExpected Result
1Click a member in the results.Right detail panel: contact (email/phone), key dates (birthday, anniversary), upcoming events, socials, membership (Member Since + status badge), additional fields. Read-only for others; your own record shows "Edit Profile".

TC-DIR-04: Access Control

StepActionExpected Result
1Log in as a GUEST (guest@demo.membervu.com). Confirm Directory is not in the sidebar; browse directly to /directory.Access denied — "Directory access requires approved membership" (or redirect). The directory search API returns 401/403 for non-approved.
2Log out entirely; browse to /directory.Redirect to login.