Changeset c7a211d in Klonkt for test/paid-patron.test.js
- Timestamp:
- 07/21/2026 02:57:49 AM (7 weeks ago)
- Branches:
- main
- Children:
- ec288dc
- Parents:
- 9019a3e
- git-author:
- Robin <roboburr@…> (07/21/2026 02:57:46 AM)
- git-committer:
- Robin <roboburr@…> (07/21/2026 02:57:49 AM)
- File:
-
- 1 edited
-
test/paid-patron.test.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
test/paid-patron.test.js
r9019a3e rc7a211d 27 27 }); 28 28 29 test('pickCampaignMembership finds the right campaign, ignores others', async () => {29 test('pickCampaignMembership: exact campaign match wins', async () => { 30 30 const { pickCampaignMembership } = await import('../src/services/PaidPatreonService.js'); 31 31 const id = identityWith('42', 'active_patron', 500); … … 33 33 assert.equal(m.status, 'active_patron'); 34 34 assert.equal(m.cents, 500); 35 assert.equal(pickCampaignMembership(id, '999'), null); // different campaign 35 }); 36 37 test('pickCampaignMembership: sole membership is used even if campaign_id is wrong (creator-scoped)', async () => { 38 const { pickCampaignMembership } = await import('../src/services/PaidPatreonService.js'); 39 const id = identityWith('42', 'active_patron', 500); 40 // A typo'd campaign_id must not lock out a real patron: memberships from the 41 // owner's own client are already their campaign, so fall back to the sole one. 42 const m = pickCampaignMembership(id, '999'); 43 assert.equal(m.status, 'active_patron'); 44 assert.equal(m.cents, 500); 45 }); 46 47 test('pickCampaignMembership: multiple memberships + no match → null (no silent grant)', async () => { 48 const { pickCampaignMembership } = await import('../src/services/PaidPatreonService.js'); 49 const id = { 50 data: { type: 'user', id: 'u', relationships: { memberships: { data: [{ type: 'member', id: 'm1' }, { type: 'member', id: 'm2' }] } } }, 51 included: [ 52 { type: 'member', id: 'm1', attributes: { patron_status: 'active_patron', currently_entitled_amount_cents: 300 }, relationships: { campaign: { data: { type: 'campaign', id: '42' } } } }, 53 { type: 'member', id: 'm2', attributes: { patron_status: 'active_patron', currently_entitled_amount_cents: 800 }, relationships: { campaign: { data: { type: 'campaign', id: '77' } } } }, 54 ], 55 }; 56 assert.equal(pickCampaignMembership(id, '999'), null); // ambiguous, refuse 57 assert.equal(pickCampaignMembership(id, '77').cents, 800); // exact still works 58 }); 59 60 test('pickCampaignMembership: no memberships → null', async () => { 61 const { pickCampaignMembership } = await import('../src/services/PaidPatreonService.js'); 62 assert.equal(pickCampaignMembership({ data: {}, included: [] }, '42'), null); 36 63 }); 37 64
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)