fix(console): recover delayed Go subscriptions
This commit is contained in:
parent
c08350b83e
commit
6cc915bcf7
3 changed files with 207 additions and 79 deletions
66
packages/console/app/test/liteSubscription.test.ts
Normal file
66
packages/console/app/test/liteSubscription.test.ts
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
import { expect, test } from "bun:test"
|
||||
import {
|
||||
liteCheckoutSubscriptionToProvision,
|
||||
liteSubscriptionProvisioningData,
|
||||
} from "../src/routes/stripe/lite-subscription"
|
||||
|
||||
test("waits for an unpaid Checkout Session's asynchronous payment", () => {
|
||||
const session = {
|
||||
mode: "subscription" as const,
|
||||
payment_status: "unpaid" as const,
|
||||
subscription: "sub_go",
|
||||
}
|
||||
|
||||
expect(liteCheckoutSubscriptionToProvision("checkout.session.completed", session)).toBeUndefined()
|
||||
expect(liteCheckoutSubscriptionToProvision("checkout.session.async_payment_succeeded", session)).toBe("sub_go")
|
||||
})
|
||||
|
||||
test("provisions a paid Checkout Session immediately", () => {
|
||||
expect(
|
||||
liteCheckoutSubscriptionToProvision("checkout.session.completed", {
|
||||
mode: "subscription",
|
||||
payment_status: "paid",
|
||||
subscription: "sub_go",
|
||||
}),
|
||||
).toBe("sub_go")
|
||||
})
|
||||
|
||||
test("provisions an active Go subscription without a default payment method", () => {
|
||||
expect(
|
||||
liteSubscriptionProvisioningData({
|
||||
id: "sub_go",
|
||||
status: "active",
|
||||
customer: "cus_go",
|
||||
default_payment_method: null,
|
||||
metadata: {
|
||||
type: "lite",
|
||||
workspaceID: "wrk_go",
|
||||
userID: "usr_go",
|
||||
},
|
||||
}),
|
||||
).toEqual({
|
||||
subscriptionID: "sub_go",
|
||||
customerID: "cus_go",
|
||||
workspaceID: "wrk_go",
|
||||
userID: "usr_go",
|
||||
userEmail: undefined,
|
||||
coupon: undefined,
|
||||
paymentMethodID: undefined,
|
||||
})
|
||||
})
|
||||
|
||||
test("waits for an asynchronous Go subscription to become active", () => {
|
||||
expect(
|
||||
liteSubscriptionProvisioningData({
|
||||
id: "sub_go",
|
||||
status: "incomplete",
|
||||
customer: "cus_go",
|
||||
default_payment_method: null,
|
||||
metadata: {
|
||||
type: "lite",
|
||||
workspaceID: "wrk_go",
|
||||
userID: "usr_go",
|
||||
},
|
||||
}),
|
||||
).toBeUndefined()
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue