From f0d79523568bd40786e260acec35e03c47cba5f0 Mon Sep 17 00:00:00 2001 From: Jonas Braathen Date: Sat, 5 Sep 2026 23:12:58 +0200 Subject: [PATCH] Add a volunteer demo user, document demo users --- README.md | 15 +++++++++++++++ src/api.test.ts | 7 +++++++ src/api.ts | 12 ++++++++++++ 3 files changed, 34 insertions(+) diff --git a/README.md b/README.md index b848ef6..e171c44 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,21 @@ server and open the app on your device or simulator: npm run start +### Demo users + +Dev builds accept three fake users (defined in `src/api.ts`) so you can preview the +membership screens without a real account. They are valid with any password: + +| Username | State | +| ----------- | ------------------------------------------------------- | +| `nonmember` | Not a member, no membership history | +| `member` | Valid standard membership, expires 2099-08-01 | +| `volunteer` | Same membership as `member`, but flagged as a volunteer | + +They only work via `npm run start`/`android`/`ios`, not in EAS `preview` or +`production` builds. Only login and fetching user data are faked, so +buying a membership or deleting the account will fail against the real API. + ### Android `mise install` provides the Android SDK (the `android` CLI diff --git a/src/api.test.ts b/src/api.test.ts index 2948f1d..e93d0e2 100644 --- a/src/api.test.ts +++ b/src/api.test.ts @@ -99,6 +99,13 @@ describe('fetchUserData', () => { expect(fetchMock).not.toHaveBeenCalled(); }); + it('resolves the dev fake volunteer as a member with the volunteer flag', async () => { + const user = await fetchUserData('dev-fake-token:volunteer'); + + expect(user).toMatchObject({ is_member: true, is_volunteer: true }); + expect(fetchMock).not.toHaveBeenCalled(); + }); + it('throws an ApiError with the status, so a 401 is recognizable', async () => { mockResponseOnce({ detail: 'Ugyldig token.' }, false, 401); diff --git a/src/api.ts b/src/api.ts index c2eb9c5..ad496b7 100644 --- a/src/api.ts +++ b/src/api.ts @@ -30,6 +30,18 @@ const DEV_FAKE_USERS: Record = { end_date: '2099-08-01', }, }, + volunteer: { + username: 'volunteer', + email: 'volunteer@example.test', + first_name: 'Aktiv', + last_name: 'Frivillig', + is_member: true, + is_volunteer: true, + last_membership: { + membership_type: 'standard', + end_date: '2099-08-01', + }, + }, }; const JSON_HEADERS = {