Files
cfw-autumn/server/tests/utils/fixtures/db/customerEntitlements.ts
2026-02-17 12:48:11 +00:00

96 lines
2.4 KiB
TypeScript

import {
type EntInterval,
type EntityBalance,
FeatureType,
type FullCustomerEntitlement,
type RolloverConfig,
} from "@autumn/shared";
import { entitlements } from "./entitlements";
/**
* Create a customer entitlement fixture
*/
const create = ({
id,
entitlementId,
featureId,
internalFeatureId,
featureName,
allowance,
balance,
customerProductId,
featureType = FeatureType.Metered,
featureConfig = {},
interval = null,
intervalCount = 1,
usageAllowed = true,
nextResetAt = null,
entities = null,
entityFeatureId = null,
rollover = null,
}: {
id?: string;
entitlementId?: string;
featureId: string;
internalFeatureId?: string;
featureName: string;
allowance: number;
balance: number;
customerProductId?: string;
featureType?: FeatureType;
featureConfig?: Record<string, unknown>;
interval?: EntInterval | null;
intervalCount?: number;
usageAllowed?: boolean;
nextResetAt?: number | null;
entities?: Record<string, EntityBalance> | null;
entityFeatureId?: string | null;
rollover?: RolloverConfig | null;
}): FullCustomerEntitlement => {
const entId = entitlementId ?? `ent_${featureId}`;
return {
id: id ?? `cus_ent_${featureId}_${crypto.randomUUID().slice(0, 8)}`,
internal_customer_id: "cus_internal",
internal_feature_id: internalFeatureId ?? `internal_${featureId}`,
customer_id: "cus_test",
feature_id: featureId,
customer_product_id: customerProductId ?? "cus_prod_test",
entitlement_id: entId,
created_at: Date.now(),
unlimited: false,
balance,
additional_balance: 0,
usage_allowed: usageAllowed,
next_reset_at: nextResetAt,
adjustment: 0,
entities,
entitlement: entitlements.create({
id: entId,
featureId,
internalFeatureId,
featureName,
allowance,
featureType,
featureConfig,
interval,
intervalCount,
entityFeatureId,
rollover,
}),
replaceables: [],
rollovers: [],
internal_entity_id: null,
expires_at: null,
cache_version: 0,
};
};
// ═══════════════════════════════════════════════════════════════════
// EXPORT
// ═══════════════════════════════════════════════════════════════════
export const customerEntitlements = {
create,
} as const;