diff --git a/server/tests/_groups/core.ts b/server/tests/_groups/core.ts index 1d3ef30b2..f6620ba5f 100644 --- a/server/tests/_groups/core.ts +++ b/server/tests/_groups/core.ts @@ -1,39 +1,22 @@ +import { coreAttach } from "./core/coreAttach"; +import { coreBalances } from "./core/coreBalances"; +import { coreLegacy } from "./core/coreLegacy"; +import { coreMigrations } from "./core/coreMigrations"; +import { coreStripe } from "./core/coreStripe"; +import { coreUpdateSubscription } from "./core/coreUpdateSubscription"; import type { TestGroup } from "./types"; export const core: TestGroup = { name: "core", description: - "Critical flows that must pass: basic attach, balance operations, CRUD, unit tests", + "Critical flows that must pass: balances, attach, update-subscription, legacy, migrations, stripe webhooks", tier: "core", paths: [ - // ── Balance: Check ── - "integration/balances/check/check-basic.test.ts", - "balances/check/credit-systems", - "balances/check/send-event", - - // ── Balance: Track ── - "balances/track/basic", - "balances/track/concurrency", - "balances/track/credit-systems", - "balances/track/entity-balances", - "balances/track/entity-products", - "balances/track/negative", - "balances/track/paid-allocated", - "integration/balances/track/track-misc.test.ts", - - // ── Balance: Update ── - "integration/balances/update/balance/update-balance-basic.test.ts", - - // ── Legacy Attach ── - "integration/billing/legacy/attach/attach-new-billing-subscription.test.ts", - "integration/billing/legacy/attach/attach-misc.test.ts", - "integration/billing/legacy/attach/downgrade/legacy-downgrade-merged-schedule.test.ts", - "integration/billing/legacy/attach/group/legacy-group-merged.test.ts", - "integration/billing/legacy/attach/invoice/legacy-attach-invoice-mode.test.ts", - "integration/billing/legacy/attach/new/legacy-new-merged.test.ts", - "integration/billing/legacy/attach/separate/legacy-separate.test.ts", - "integration/billing/legacy/attach/trial/legacy-trial.test.ts", - "integration/billing/legacy/attach/update-quantity/legacy-update-quantity.test.ts", - "integration/billing/legacy/attach/upgrade/legacy-upgrade.test.ts", + ...coreBalances.paths, + ...coreLegacy.paths, + ...coreMigrations.paths, + ...coreStripe.paths, + ...coreAttach.paths, + ...coreUpdateSubscription.paths, ], }; diff --git a/server/tests/_groups/core/coreAttach.ts b/server/tests/_groups/core/coreAttach.ts new file mode 100644 index 000000000..223e5ca48 --- /dev/null +++ b/server/tests/_groups/core/coreAttach.ts @@ -0,0 +1,31 @@ +import type { TestGroup } from "../types"; + +export const coreAttach: TestGroup = { + name: "core-attach", + description: "Core v2 attach tests", + tier: "core", + paths: [ + "billing/attach/new-plan/attach-paid.test.ts", + "billing/attach/new-plan/attach-free.test.ts", + "billing/attach/new-plan/attach-addon.test.ts", + "billing/attach/new-plan/attach-entities.test.ts", + "billing/attach/immediate-switch/immediate-switch-basic.test.ts", + "billing/attach/immediate-switch/immediate-switch-prepaid.test.ts", + "billing/attach/immediate-switch/immediate-switch-consumable.test.ts", + "billing/attach/immediate-switch/immediate-switch-entities.test.ts", + "billing/attach/scheduled-switch/scheduled-switch-basic.test.ts", + "billing/attach/scheduled-switch/scheduled-switch-consumable.test.ts", + "billing/attach/scheduled-switch/scheduled-switch-entities-basic.test.ts", + "billing/attach/checkout/stripe-checkout/stripe-checkout-basic.test.ts", + "billing/attach/free-trial/trial-basic.test.ts", + "billing/attach/free-trial/trial-conversion.test.ts", + "billing/attach/free-trial/trial-payment-method.test.ts", + "billing/attach/invoice/attach-invoice-finalized-immediate.test.ts", + "billing/attach/invoice/attach-invoice-draft-deferred.test.ts", + "billing/attach/invoice/payment-failure/payment-failed.test.ts", + "billing/attach/errors/attach-basic-errors.test.ts", + "billing/attach/discounts/attach-discounts-basic.test.ts", + "billing/attach/new-billing-subscription/new-billing-subscription.test.ts", + "billing/attach/params/custom-plan/custom-plan-features.test.ts", + ], +}; diff --git a/server/tests/_groups/core/coreBalances.ts b/server/tests/_groups/core/coreBalances.ts new file mode 100644 index 000000000..d55581cb8 --- /dev/null +++ b/server/tests/_groups/core/coreBalances.ts @@ -0,0 +1,29 @@ +import type { TestGroup } from "../types"; + +export const coreBalances: TestGroup = { + name: "core-balances", + description: "Core balance check, track, and update tests", + tier: "core", + paths: [ + // ── Check ── + "integration/balances/check/check-basic.test.ts", + "balances/check/credit-systems", + "balances/check/send-event", + "balances/check/misc", + + // ── Track ── + "balances/track/basic", + "balances/track/allocated", + "balances/track/breakdown", + "balances/track/concurrency", + "balances/track/credit-systems", + "balances/track/entity-balances", + "balances/track/entity-products", + "balances/track/negative", + "balances/track/paid-allocated", + "integration/balances/track/track-misc.test.ts", + + // ── Update ── + "integration/balances/update/balance/update-balance-basic.test.ts", + ], +}; diff --git a/server/tests/_groups/core/coreLegacy.ts b/server/tests/_groups/core/coreLegacy.ts new file mode 100644 index 000000000..8aa2f3353 --- /dev/null +++ b/server/tests/_groups/core/coreLegacy.ts @@ -0,0 +1,26 @@ +import type { TestGroup } from "../types"; + +export const coreLegacy: TestGroup = { + name: "core-legacy", + description: "Core legacy (v1) attach tests", + tier: "core", + paths: [ + "legacy/attach/attach-misc.test.ts", + "legacy/attach/attach-new-billing-subscription.test.ts", + "legacy/attach/attach-response.test.ts", + "legacy/attach/addon/legacy-addon.test.ts", + "legacy/attach/checkout/legacy-checkout-basic.test.ts", + "legacy/attach/downgrade/legacy-downgrade.test.ts", + "legacy/attach/entities/legacy-entities-basic.test.ts", + "legacy/attach/invoice/legacy-attach-invoice-mode.test.ts", + "legacy/attach/invoice/payment-failure/legacy-attach-payment-failed.test.ts", + "legacy/attach/new/legacy-new-merged.test.ts", + "legacy/attach/new/legacy-new-oneoff.test.ts", + "legacy/attach/trial/legacy-trial.test.ts", + "legacy/attach/update-quantity/legacy-update-quantity.test.ts", + "legacy/attach/upgrade/legacy-upgrade.test.ts", + "legacy/attach/upgrade/legacy-upgrade-usage.test.ts", + "legacy/attach/upgrade/legacy-upgrade-prepaid.test.ts", + "legacy/attach/upgrade/legacy-upgrade-merged.test.ts", + ], +}; diff --git a/server/tests/_groups/core/coreMigrations.ts b/server/tests/_groups/core/coreMigrations.ts new file mode 100644 index 000000000..bd281efc2 --- /dev/null +++ b/server/tests/_groups/core/coreMigrations.ts @@ -0,0 +1,13 @@ +import type { TestGroup } from "../types"; + +export const coreMigrations: TestGroup = { + name: "core-migrations", + description: "Core migration tests", + tier: "core", + paths: [ + "migrations/migrate-free.test.ts", + "migrations/migrate-paid.test.ts", + "migrations/migrate-trials.test.ts", + "migrations/migrate-states.test.ts", + ], +}; diff --git a/server/tests/_groups/core/coreStripe.ts b/server/tests/_groups/core/coreStripe.ts new file mode 100644 index 000000000..cf22a93c6 --- /dev/null +++ b/server/tests/_groups/core/coreStripe.ts @@ -0,0 +1,14 @@ +import type { TestGroup } from "../types"; + +export const coreStripe: TestGroup = { + name: "core-stripe", + description: "Core Stripe webhook tests", + tier: "core", + paths: [ + "stripe-webhooks/subscription-updated", + "stripe-webhooks/subscription-deleted/subscription-deleted.test.ts", + "stripe-webhooks/subscription-deleted/subscription-deleted-invoice.test.ts", + "stripe-webhooks/invoice-created/invoice-created-consumable.test.ts", + "stripe-webhooks/invoice-created/invoice-created-entity-consumable.test.ts", + ], +}; diff --git a/server/tests/_groups/core/coreUpdateSubscription.ts b/server/tests/_groups/core/coreUpdateSubscription.ts new file mode 100644 index 000000000..4bc9eb421 --- /dev/null +++ b/server/tests/_groups/core/coreUpdateSubscription.ts @@ -0,0 +1,31 @@ +import type { TestGroup } from "../types"; + +export const coreUpdateSubscription: TestGroup = { + name: "core-update-subscription", + description: "Core update-subscription tests", + tier: "core", + paths: [ + "billing/update-subscription/cancel/end-of-cycle/cancel-end-of-cycle.test.ts", + "billing/update-subscription/cancel/end-of-cycle/cancel-end-of-cycle-addon.test.ts", + "billing/update-subscription/cancel/immediately/cancel-immediately.test.ts", + "billing/update-subscription/cancel/immediately/cancel-immediately-billing.test.ts", + "billing/update-subscription/cancel/uncancel/uncancel-basic.test.ts", + "billing/update-subscription/cancel/uncancel/uncancel-combined.test.ts", + "billing/update-subscription/update-quantity/increase-quantity.test.ts", + "billing/update-subscription/update-quantity/decrease-quantity.test.ts", + "billing/update-subscription/custom-plan/update-paid-basic.test.ts", + "billing/update-subscription/custom-plan/update-free-to-paid.test.ts", + "billing/update-subscription/custom-plan/update-paid-prepaid.test.ts", + "billing/update-subscription/custom-plan/update-paid-features.test.ts", + "billing/update-subscription/free-trial/update-remove-trial.test.ts", + "billing/update-subscription/free-trial/update-paid-trials.test.ts", + "billing/update-subscription/free-trial/update-quantity-with-trial.test.ts", + "billing/update-subscription/version-update/version-pricing.test.ts", + "billing/update-subscription/version-update/version-entitlements.test.ts", + "billing/update-subscription/invoice/update-with-invoice-basic.test.ts", + "billing/update-subscription/errors/update-errors-basic.test.ts", + "billing/update-subscription/discounts/percent-off-discount.test.ts", + "billing/update-subscription/billing-behavior/next-cycle-only.test.ts", + "billing/update-subscription/billing-behavior/next-cycle-only-cancel.test.ts", + ], +}; diff --git a/server/tests/_groups/domains/balances.ts b/server/tests/_groups/domains/balances.ts deleted file mode 100644 index 329979fec..000000000 --- a/server/tests/_groups/domains/balances.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { TestGroup } from "../types"; - -export const balances: TestGroup = { - name: "balances", - description: "All balance check, track, set-usage, and cron tests", - tier: "domain", - paths: [], -}; diff --git a/server/tests/_groups/domains/balances/balances.ts b/server/tests/_groups/domains/balances/balances.ts new file mode 100644 index 000000000..c5fb5a437 --- /dev/null +++ b/server/tests/_groups/domains/balances/balances.ts @@ -0,0 +1,8 @@ +import type { TestGroup } from "../../types"; + +export const balances: TestGroup = { + name: "balances", + description: "All balance check, track, set-usage, update, and cron tests", + tier: "domain", + paths: ["balances", "integration/balances"], +}; diff --git a/server/tests/_groups/domains/balances/check.ts b/server/tests/_groups/domains/balances/check.ts new file mode 100644 index 000000000..9ba3ec079 --- /dev/null +++ b/server/tests/_groups/domains/balances/check.ts @@ -0,0 +1,8 @@ +import type { TestGroup } from "../../types"; + +export const check: TestGroup = { + name: "check", + description: "Balance check endpoint tests", + tier: "domain", + paths: ["balances/check", "integration/balances/check"], +}; diff --git a/server/tests/_groups/domains/balances/track.ts b/server/tests/_groups/domains/balances/track.ts new file mode 100644 index 000000000..b6526fd0b --- /dev/null +++ b/server/tests/_groups/domains/balances/track.ts @@ -0,0 +1,8 @@ +import type { TestGroup } from "../../types"; + +export const track: TestGroup = { + name: "track", + description: "Balance track endpoint tests", + tier: "domain", + paths: ["balances/track", "integration/balances/track"], +}; diff --git a/server/tests/_groups/domains/balances/updateBalance.ts b/server/tests/_groups/domains/balances/updateBalance.ts new file mode 100644 index 000000000..932be4381 --- /dev/null +++ b/server/tests/_groups/domains/balances/updateBalance.ts @@ -0,0 +1,8 @@ +import type { TestGroup } from "../../types"; + +export const updateBalance: TestGroup = { + name: "update-balance", + description: "Balance update endpoint tests", + tier: "domain", + paths: ["integration/balances/update"], +}; diff --git a/server/tests/_groups/domains/billing.ts b/server/tests/_groups/domains/billing.ts deleted file mode 100644 index 5bb5281d0..000000000 --- a/server/tests/_groups/domains/billing.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { TestGroup } from "../types"; - -export const billing: TestGroup = { - name: "billing", - description: - "All attach, upgrade, downgrade, checkout, invoice, subscription, and legacy billing tests", - tier: "domain", - paths: [], -}; diff --git a/server/tests/_groups/domains/billing/billing.ts b/server/tests/_groups/domains/billing/billing.ts new file mode 100644 index 000000000..644ea60de --- /dev/null +++ b/server/tests/_groups/domains/billing/billing.ts @@ -0,0 +1,15 @@ +import type { TestGroup } from "../../types"; + +export const billing: TestGroup = { + name: "billing", + description: + "All billing tests: legacy attach, migrations, v2 attach, update-subscription, stripe webhooks", + tier: "domain", + paths: [ + "legacy/attach", + "migrations", + "billing/attach", + "billing/update-subscription", + "stripe-webhooks", + ], +}; diff --git a/server/tests/_groups/domains/billing/billingV1.ts b/server/tests/_groups/domains/billing/billingV1.ts new file mode 100644 index 000000000..ecd6b9978 --- /dev/null +++ b/server/tests/_groups/domains/billing/billingV1.ts @@ -0,0 +1,8 @@ +import type { TestGroup } from "../../types"; + +export const billingV1: TestGroup = { + name: "billing-v1", + description: "V1 legacy attach tests", + tier: "domain", + paths: ["legacy/attach"], +}; diff --git a/server/tests/_groups/domains/billing/billingV2.ts b/server/tests/_groups/domains/billing/billingV2.ts new file mode 100644 index 000000000..e8b4b9c34 --- /dev/null +++ b/server/tests/_groups/domains/billing/billingV2.ts @@ -0,0 +1,8 @@ +import type { TestGroup } from "../../types"; + +export const billingV2: TestGroup = { + name: "billing-v2", + description: "V2 billing tests: migrations, attach, update-subscription", + tier: "domain", + paths: ["migrations", "billing/attach", "billing/update-subscription"], +}; diff --git a/server/tests/_groups/index.ts b/server/tests/_groups/index.ts index af1ab112c..9602b49ef 100644 --- a/server/tests/_groups/index.ts +++ b/server/tests/_groups/index.ts @@ -1,9 +1,20 @@ import { readdir } from "node:fs/promises"; import { join, relative } from "node:path"; import { core } from "./core"; +import { coreAttach } from "./core/coreAttach"; +import { coreBalances } from "./core/coreBalances"; +import { coreLegacy } from "./core/coreLegacy"; +import { coreMigrations } from "./core/coreMigrations"; +import { coreStripe } from "./core/coreStripe"; +import { coreUpdateSubscription } from "./core/coreUpdateSubscription"; import { advanced } from "./domains/advanced"; -import { balances } from "./domains/balances"; -import { billing } from "./domains/billing"; +import { balances } from "./domains/balances/balances"; +import { check } from "./domains/balances/check"; +import { track } from "./domains/balances/track"; +import { updateBalance } from "./domains/balances/updateBalance"; +import { billing } from "./domains/billing/billing"; +import { billingV1 } from "./domains/billing/billingV1"; +import { billingV2 } from "./domains/billing/billingV2"; import { crud } from "./domains/crud"; import { misc } from "./domains/misc"; import { webhooks } from "./domains/webhooks"; @@ -14,8 +25,19 @@ export type { TestGroup, TestSuite, TestTier } from "./types"; const allGroups: TestGroup[] = [ core, + coreAttach, + coreBalances, + coreLegacy, + coreMigrations, + coreStripe, + coreUpdateSubscription, balances, + check, + track, + updateBalance, billing, + billingV1, + billingV2, crud, webhooks, advanced,