Files
cfw-autumn/server/tests/attach/multiProduct/multiProduct3.ts
2025-08-17 13:03:15 -07:00

156 lines
5.1 KiB
TypeScript

// import chalk from "chalk";
// import { expect } from "chai";
// import { AutumnCli } from "tests/cli/AutumnCli.js";
// import { attachProducts } from "tests/global.js";
// import { compareMainProduct } from "tests/utils/compare.js";
// import { searchCusProducts, timeout } from "tests/utils/genUtils.js";
// import { createStripeCli } from "@/external/stripe/utils.js";
// import { getStripeSubs } from "@/external/stripe/stripeSubUtils.js";
// import { CusProductService } from "@/internal/customers/cusProducts/CusProductService.js";
// import { initCustomer } from "@/utils/scriptUtils/initCustomer.js";
// import { setupBefore } from "tests/before.js";
// import Stripe from "stripe";
// // TESTING DOWNGRADE DOWNGRADE THEN
// // 1. UPGRADE FIRST PRODUCT BACK -- SHOULD REPLACE SCHEDULE WITH OLD FIRST PRODUCT
// // 2. UPGRADE SECOND PRODUCT BACK -- SHOULD CANCEL SCHEDULE
// const testCase = "multiProduct3";
// describe(
// chalk.yellowBright(`${testCase}: double downgrade, double upgrade (back)`),
// () => {
// let customerId = testCase;
// let customer;
// let stripeCli: Stripe;
// before(async function () {
// await setupBefore(this);
// stripeCli = this.stripeCli;
// const res = await initCustomer({
// db: this.db,
// org: this.org,
// env: this.env,
// customerId,
// autumn: this.autumnJs,
// attachPm: "success",
// });
// customer = res.customer;
// });
// it("should attach premium group 1 and premium group 2", async function () {
// await AutumnCli.attach({
// customerId: customerId,
// productIds: [
// attachProducts.premiumGroup1.id,
// attachProducts.premiumGroup2.id,
// ],
// });
// let cusRes = await AutumnCli.getCustomer(customerId);
// compareMainProduct({ sent: attachProducts.premiumGroup1, cusRes });
// compareMainProduct({ sent: attachProducts.premiumGroup2, cusRes });
// });
// it("should attach starter group 1, then starter group 2", async function () {
// await AutumnCli.attach({
// customerId: customerId,
// productId: attachProducts.starterGroup1.id,
// });
// await AutumnCli.attach({
// customerId: customerId,
// productId: attachProducts.starterGroup2.id,
// });
// });
// it("should reattach premium group 1", async function () {
// await AutumnCli.attach({
// customerId: customerId,
// productId: attachProducts.premiumGroup1.id,
// });
// await timeout(10000);
// const cusProducts = await CusProductService.list({
// db: this.db,
// internalCustomerId: customer!.internal_id,
// });
// let premiumGroup1 = searchCusProducts({
// cusProducts,
// productId: attachProducts.premiumGroup1.id,
// });
// let starterGroup2 = searchCusProducts({
// cusProducts,
// productId: attachProducts.starterGroup2.id,
// });
// expect(premiumGroup1!.scheduled_ids!.length).to.equal(1);
// expect(starterGroup2!.scheduled_ids!.length).to.equal(1);
// expect(premiumGroup1!.scheduled_ids![0]).to.equal(
// starterGroup2!.scheduled_ids![0]
// );
// // 2. Check that there's no starter group 1
// let starterGroup1 = searchCusProducts({
// cusProducts,
// productId: attachProducts.starterGroup1.id,
// });
// expect(starterGroup1).to.not.exist;
// // 3. TODO: check that in Stripe schedule, premium group 1 and starter group 2 are scheduled
// });
// it("should reattach premium group 2 (scheduled should be cancelled)", async function () {
// await timeout(3000);
// let res = await AutumnCli.attach({
// customerId: customerId,
// productId: attachProducts.premiumGroup2.id,
// });
// await timeout(10000);
// const cusProducts = await CusProductService.list({
// db: this.db,
// internalCustomerId: customer!.internal_id,
// });
// let premiumGroup2 = searchCusProducts({
// cusProducts,
// productId: attachProducts.premiumGroup2.id,
// });
// let premiumGroup1 = searchCusProducts({
// cusProducts,
// productId: attachProducts.premiumGroup1.id,
// });
// expect(premiumGroup2).to.exist.and.have.property("scheduled_ids");
// expect(premiumGroup1).to.exist.and.have.property("scheduled_ids");
// expect(premiumGroup2!.scheduled_ids!.length).to.equal(0);
// expect(premiumGroup1!.scheduled_ids!.length).to.equal(0);
// // Check that subscription is activated
// let stripeCli = createStripeCli({
// org: this.org,
// env: this.env,
// });
// let subs = await getStripeSubs({
// stripeCli,
// subIds: premiumGroup1!.subscription_ids!,
// });
// let sub = subs[0];
// expect(sub.canceled_at).to.equal(null);
// expect(sub.cancel_at).to.equal(null);
// expect(sub.status).to.equal("active");
// });
// }
// );