Files
cfw-autumn/server/tests/utils/fixtures/stripe/subscriptions.ts
Charlie Lamb 5d32be5a11 Reapply "feat: add discounts to attach v2"
This reverts commit ab68a1aa0c.
2026-02-11 09:04:36 -08:00

72 lines
1.7 KiB
TypeScript

import type { StripeDiscountWithCoupon } from "@autumn/shared";
import type Stripe from "stripe";
/**
* Create a Stripe subscription item fixture
*/
const createItem = ({
id,
priceId,
quantity,
}: {
id: string;
priceId: string;
quantity: number;
}): Stripe.SubscriptionItem =>
({
id,
object: "subscription_item",
created: Math.floor(Date.now() / 1000),
quantity,
price: {
id: priceId,
object: "price",
active: true,
currency: "usd",
type: "recurring",
} as Stripe.Price,
}) as Stripe.SubscriptionItem;
/**
* Create a Stripe subscription fixture
*/
const create = ({
id,
items = [],
discounts = [],
}: {
id: string;
items?: { id: string; priceId: string; quantity: number }[];
discounts?: (Stripe.Discount | string | StripeDiscountWithCoupon)[];
}): Stripe.Subscription => {
const subscriptionItems = items.map((item) =>
createItem({
id: item.id,
priceId: item.priceId,
quantity: item.quantity,
}),
);
return {
id,
object: "subscription",
status: "active",
items: {
object: "list",
data: subscriptionItems,
has_more: false,
url: `/v1/subscription_items?subscription=${id}`,
},
discounts,
} as Stripe.Subscription;
};
// ═══════════════════════════════════════════════════════════════════
// EXPORT
// ═══════════════════════════════════════════════════════════════════
export const stripeSubscriptions = {
create,
createItem,
} as const;