Files
cfw-autumn/server/tests/setup/v2Features.ts
2025-06-12 12:53:36 +01:00

83 lines
2.2 KiB
TypeScript

import dotenv from "dotenv";
dotenv.config();
import {
constructBooleanFeature,
constructCreditSystem,
constructMeteredFeature,
} from "@/internal/features/utils/constructFeatureUtils.js";
import { AppEnv, FeatureUsageType, UsageModel } from "@autumn/shared";
export enum TestFeature {
Messages = "messages", // single use (prepaid)
Users = "users", // cont use
Admin = "admin", // cont use
AdminRights = "admin_rights", // cont use
Words = "words", // single use (pay per use)
Action1 = "action1", // single use (pay per use)
Action2 = "action2", // single use (pay per use)
Credits = "credits", // credit system
}
const orgId = "org_2sWv2S8LJ9iaTjLI6UtNsfL88Kt";
export const features = {
[TestFeature.AdminRights]: constructBooleanFeature({
featureId: TestFeature.AdminRights,
orgId,
env: AppEnv.Sandbox,
}),
[TestFeature.Messages]: constructMeteredFeature({
featureId: TestFeature.Messages,
orgId,
env: AppEnv.Sandbox,
usageType: FeatureUsageType.Single,
}),
[TestFeature.Admin]: constructMeteredFeature({
featureId: TestFeature.Admin,
orgId,
env: AppEnv.Sandbox,
usageType: FeatureUsageType.Continuous,
}),
[TestFeature.Users]: constructMeteredFeature({
featureId: TestFeature.Users,
orgId,
env: AppEnv.Sandbox,
usageType: FeatureUsageType.Continuous,
}),
[TestFeature.Words]: constructMeteredFeature({
featureId: TestFeature.Words,
orgId,
env: AppEnv.Sandbox,
usageType: FeatureUsageType.Single,
}),
[TestFeature.Action1]: constructMeteredFeature({
featureId: TestFeature.Action1,
orgId,
env: AppEnv.Sandbox,
usageType: FeatureUsageType.Single,
}),
[TestFeature.Action2]: constructMeteredFeature({
featureId: TestFeature.Action2,
orgId,
env: AppEnv.Sandbox,
usageType: FeatureUsageType.Single,
}),
[TestFeature.Credits]: constructCreditSystem({
featureId: TestFeature.Credits,
orgId,
env: AppEnv.Sandbox,
schema: [
{
metered_feature_id: TestFeature.Action1,
credit_cost: 0.2,
},
{
metered_feature_id: TestFeature.Action2,
credit_cost: 0.6,
},
],
}),
};