Files
cfw-autumn/server/tests/integration/customers/cross-version-list-customers.test.ts
2026-02-13 15:50:07 +00:00

55 lines
1.6 KiB
TypeScript

import { test } from "bun:test";
import {
type ApiCustomer,
ApiCustomerSchema,
type ApiCustomerV3,
ApiCustomerV3Schema,
ApiVersion,
} from "@autumn/shared";
import {
type ApiCustomerV5,
ApiCustomerV5Schema,
} from "@shared/api/customers/apiCustomerV5";
import { initScenario, s } from "@tests/utils/testInitUtils/initScenario";
import chalk from "chalk";
import { AutumnInt } from "@/external/autumn/autumnCli.js";
test.concurrent(`${chalk.yellowBright("cross-version-list-customers: list customers cross version")}`, async () => {
const { autumnV1 } = await initScenario({
customerId: "cross-version-list-customers",
setup: [s.customer({})],
actions: [],
});
const autumnV2_1 = new AutumnInt({ version: ApiVersion.V2_1 });
const autumnV2_0 = new AutumnInt({ version: ApiVersion.V2_0 });
// V2.1 - should return ApiCustomerV5 schema (V1 balances with granted/remaining)
const customersV2_1 = (await autumnV2_1.customers.list()) as {
list: ApiCustomerV5[];
};
for (const customer of customersV2_1.list) {
ApiCustomerV5Schema.parse(customer);
}
// V2.0 - should return ApiCustomer schema (V0 balances with granted_balance/current_balance)
const customersV2_0 = (await autumnV2_0.customers.list()) as {
list: ApiCustomer[];
};
for (const customer of customersV2_0.list) {
ApiCustomerSchema.parse(customer);
}
// V1.2 - should return ApiCustomerV3 schema (features format)
const customersV1_2 = (await autumnV1.customers.list()) as {
list: ApiCustomerV3[];
};
for (const customer of customersV1_2.list) {
ApiCustomerV3Schema.parse(customer);
}
console.log(
"Listed customersV2_1, customersV2_0, and customersV1_2 successfully",
);
});