16 lines
1.0 KiB
TypeScript
16 lines
1.0 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
||
import { normalizeBillingParameters } from "@/lib/server/billing-service";
|
||
import { DEFAULT_BILLING_PRICE_RULES } from "@/lib/server/billing-catalog";
|
||
|
||
describe("A4 billing metadata", () => {
|
||
it.each([[1680, 2376, "70:99"], [2376, 1680, "99:70"], [848, 1200, "70:99"], [1200, 848, "99:70"]])("recognizes %s × %s without changing the markup", (width, height, aspectRatio) => {
|
||
const dimensions = { width, height };
|
||
for (const payload of [dimensions, { input: dimensions }, { settings: dimensions }, { providerPayload: dimensions }]) {
|
||
expect(normalizeBillingParameters(payload)).toMatchObject({ aspectRatio, size: `${width}*${height}` });
|
||
}
|
||
const rule = DEFAULT_BILLING_PRICE_RULES.find((rule) => rule.id === "base-evolink-gpt-image-2")!;
|
||
const dimension = rule.parameterDimensions!.find((dimension) => dimension.key === "aspectRatio")!;
|
||
expect(dimension.tiers.find((tier) => tier.value === aspectRatio)).toMatchObject({ standardFactor: 1, markupMultiplier: 1.2, enabled: true });
|
||
});
|
||
});
|