Skip to content

JNY-MBR-MEM-002A new member joins through checkout with a chapter

Markdown

JNY-MBR-MEM-002

A new member joins through checkout with a chapter

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationPartially observed

KindJourneyProduct areaMembershipModuleMemberships, Applications and Membership BillingRevision1End-to-endNone

Read atservices-membership 5994c270react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Goal
Buy a first membership with a chapter in the checkout and hold it, numbered and placed in the chapter, as soon as the payment is authorized.

Steps

#SurfaceActionCapabilityExpectedProvenance
1prepare_purchase (advise)Add the Regular package and Atlanta's dues to the cart.CAP-MBR-MEM-009Commerce is told an enrolment with Atlanta and its dues product, priced as new, and nothing is written.test
services-membership:tests/e2e/commerce-purchase.e2e.spec.ts#plans the chapter with its dues product when its dues line is in the checkout
2commerce_commit_claimsPlace the order.CAP-MBR-MEM-009A pending, unnumbered membership and term are reserved for the buyer.test
3fulfillCommerce authorizes fulfilment after payment.CAP-MBR-MEM-009The term is committed, the membership numbered, and Atlanta written with its dues product.test
services-membership:tests/e2e/commerce-purchase.e2e.spec.ts#writes the chapter from the frozen payload at fulfilment
4listMembershipsAtlanta's roster is read.CAP-MBR-MEM-007The new member is on it.test
5getMyMembershipsThe member opens their memberships in the portal.CAP-MBR-MEM-017They see the new membership, its term and Atlanta.test

Alternate and Failure Paths

PathFrom stepConditionPath takenOutcomeProvenance
alternate2The same person's first membership is placed from a second browser tab at the same moment.Only one placement reserves the term.The other order is refused as pending.test
services-membership:tests/e2e/commerce-purchase.e2e.spec.ts#lets one of two concurrent placements claim the person’s term and refuses the other term_pending
alternate3Commerce delivers the same authorization again after a lost acknowledgement.Membership answers the same records.Still one membership and one term.test
services-membership:tests/e2e/commerce-purchase.e2e.spec.ts#answers a redelivered authorization after a lost acknowledgement with the same records (A17)
failure1The buyer chooses a zone instead of a chapter, or leaves out Atlanta's dues line.The package line is refused inline.Nothing is reserved.test
services-membership:tests/e2e/commerce-purchase.e2e.spec.ts#refuses a chapter the package does not allow, inline, writing nothing
failure2The buyer abandons the order and Commerce voids it.The reservation is released.The pending term and membership are gone.test
services-membership:modules/commerce-participant/tests/integration/participant.integration.spec.ts#releases a voided order: the pending term and the membership the claim created are deleted
failure2Commerce's placement transaction commits with Membership's history capture.The commit is refused because Commerce's writes name a source the history does not accept.Today no placement can commit.unknown

Assertions

IdStatementProvenance
01Exactly one membership exists for the buyer, numbered at fulfilment.test
services-membership:tests/e2e/commerce-purchase.e2e.spec.ts#fulfils into a numbered membership holding the authorization id
02The Atlanta affiliation carries Atlanta's dues product.test
services-membership:tests/e2e/commerce-purchase.e2e.spec.ts#writes the chapter from the frozen payload at fulfilment
03Nothing is written before the order is placed.test

End-to-end policy: none: The checkout screens are Commerce's and the portal's; Membership's part is a service exchange with no screen of its own, proved at API level through the participant.

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.