@reorderjs/reorder 1.0.7 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/.medusa/server/e2e/auth.setup.js +26 -0
  2. package/.medusa/server/e2e/cancellation-retention.spec.js +133 -0
  3. package/.medusa/server/e2e/pages/CancellationCaseDetailPage.js +69 -0
  4. package/.medusa/server/e2e/pages/CancellationsListPage.js +34 -0
  5. package/.medusa/server/e2e/pages/PlanFormPage.js +89 -0
  6. package/.medusa/server/e2e/pages/RenewalDetailPage.js +101 -0
  7. package/.medusa/server/e2e/pages/SubscriptionDetailPage.js +102 -0
  8. package/.medusa/server/e2e/plans-offers.spec.js +96 -0
  9. package/.medusa/server/e2e/renewal-force.spec.js +154 -0
  10. package/.medusa/server/e2e/seed.setup.js +80 -0
  11. package/.medusa/server/e2e/subscription-status.spec.js +109 -0
  12. package/.medusa/server/e2e/subscriptions-list.spec.js +84 -0
  13. package/.medusa/server/playwright.config.js +37 -0
  14. package/.medusa/server/scripts/reset-subscriptions-test-data.js +279 -0
  15. package/.medusa/server/scripts/seed-subscriptions-test-data.js +2425 -0
  16. package/.medusa/server/scripts/wipe-test-data.js +44 -0
  17. package/.medusa/server/src/admin/index.js +13142 -11709
  18. package/.medusa/server/src/admin/index.mjs +13136 -11703
  19. package/.medusa/server/src/admin/types/activity-log.js +2 -1
  20. package/.medusa/server/src/admin/types/analytics.js +2 -1
  21. package/.medusa/server/src/api/admin/cancellations/validators.js +2 -2
  22. package/.medusa/server/src/api/admin/dunning/validators.js +2 -2
  23. package/.medusa/server/src/api/admin/renewals/validators.js +2 -2
  24. package/.medusa/server/src/api/admin/subscription-analytics/validators.js +2 -2
  25. package/.medusa/server/src/api/admin/subscription-logs/validators.js +2 -2
  26. package/.medusa/server/src/api/admin/subscription-offers/validators.js +2 -2
  27. package/.medusa/server/src/api/admin/subscription-settings/validators.js +2 -2
  28. package/.medusa/server/src/api/admin/subscriptions/[id]/payment-method/route.js +19 -0
  29. package/.medusa/server/src/api/admin/subscriptions/[id]/payment-methods/route.js +10 -0
  30. package/.medusa/server/src/api/admin/subscriptions/middlewares.js +8 -1
  31. package/.medusa/server/src/api/admin/subscriptions/utils.js +5 -1
  32. package/.medusa/server/src/api/admin/subscriptions/validators.js +7 -3
  33. package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/payment-method/route.js +26 -0
  34. package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/payment-methods/route.js +15 -0
  35. package/.medusa/server/src/api/store/customers/me/subscriptions/middlewares.js +8 -1
  36. package/.medusa/server/src/api/store/customers/me/subscriptions/utils.js +72 -1
  37. package/.medusa/server/src/api/store/customers/me/subscriptions/validators.js +7 -3
  38. package/.medusa/server/src/api/store/products/validators.js +2 -2
  39. package/.medusa/server/src/modules/activity-log/__tests__/create-subscription-log-event.spec.js +257 -0
  40. package/.medusa/server/src/modules/activity-log/__tests__/normalize-log-event.spec.js +231 -0
  41. package/.medusa/server/src/modules/activity-log/migrations/Migration20260524220933.js +16 -0
  42. package/.medusa/server/src/modules/activity-log/migrations/Migration20260524225625.js +16 -0
  43. package/.medusa/server/src/modules/activity-log/migrations/Migration20260818120000.js +16 -0
  44. package/.medusa/server/src/modules/activity-log/types/index.js +4 -1
  45. package/.medusa/server/src/modules/activity-log/utils/admin-query.js +15 -1
  46. package/.medusa/server/src/modules/analytics/__tests__/admin-query.spec.js +560 -0
  47. package/.medusa/server/src/modules/analytics/index.js +2 -2
  48. package/.medusa/server/src/modules/analytics/utils/admin-query.js +157 -5
  49. package/.medusa/server/src/modules/plan-offer/__tests__/service.spec.js +94 -0
  50. package/.medusa/server/src/modules/renewal/__tests__/service.spec.js +89 -0
  51. package/.medusa/server/src/modules/settings/__tests__/normalize-settings.spec.js +86 -0
  52. package/.medusa/server/src/modules/settings/__tests__/service.spec.js +124 -0
  53. package/.medusa/server/src/modules/subscription/__tests__/payment-methods.spec.js +186 -0
  54. package/.medusa/server/src/modules/subscription/__tests__/service.spec.js +124 -0
  55. package/.medusa/server/src/modules/subscription/utils/admin-query.js +196 -14
  56. package/.medusa/server/src/modules/subscription/utils/payment-methods.js +146 -0
  57. package/.medusa/server/src/subscription-flows/create-subscription-from-cart.js +55 -2
  58. package/.medusa/server/src/workflows/__tests__/cancel-subscription.spec.js +20 -0
  59. package/.medusa/server/src/workflows/__tests__/pause-subscription.spec.js +20 -0
  60. package/.medusa/server/src/workflows/__tests__/update-subscription-shipping-address.spec.js +49 -0
  61. package/.medusa/server/src/workflows/cancel-subscription.js +21 -1
  62. package/.medusa/server/src/workflows/index.js +6 -2
  63. package/.medusa/server/src/workflows/pause-subscription.js +21 -1
  64. package/.medusa/server/src/workflows/steps/rebuild-analytics-daily-snapshots.js +33 -10
  65. package/.medusa/server/src/workflows/steps/update-subscription-payment-method.js +110 -0
  66. package/.medusa/server/src/workflows/steps/validate-subscription-cart.js +7 -22
  67. package/.medusa/server/src/workflows/update-subscription-payment-method.js +65 -0
  68. package/.medusa/server/src/workflows/utils/analytics-incremental.js +1 -1
  69. package/README.md +89 -36
  70. package/package.json +25 -23
@@ -16,6 +16,7 @@ const METRIC_LABELS = {
16
16
  [analytics_1.AnalyticsMetricKey.CHURN_RATE]: "Churn Rate",
17
17
  [analytics_1.AnalyticsMetricKey.LTV]: "LTV",
18
18
  [analytics_1.AnalyticsMetricKey.ACTIVE_SUBSCRIPTIONS_COUNT]: "Active Subscriptions",
19
+ [analytics_1.AnalyticsMetricKey.CREATED_SUBSCRIPTIONS_COUNT]: "Created Subscriptions",
19
20
  };
20
21
  function getQuery(container) {
21
22
  return container.resolve(utils_2.ContainerRegistrationKeys.QUERY);
@@ -63,6 +64,16 @@ function shiftDays(value, days) {
63
64
  next.setUTCDate(next.getUTCDate() + days);
64
65
  return next;
65
66
  }
67
+ function filterIncludesCurrentUtcDay(filters) {
68
+ if (!filters.date_from || !filters.date_to) {
69
+ return false;
70
+ }
71
+ const todayStart = toUtcDayStart(new Date());
72
+ const rangeFrom = toUtcDayStart(filters.date_from);
73
+ const rangeTo = toUtcDayStart(filters.date_to);
74
+ return (rangeFrom.getTime() <= todayStart.getTime() &&
75
+ rangeTo.getTime() >= todayStart.getTime());
76
+ }
66
77
  function roundValue(value, precision) {
67
78
  if (value === null || !Number.isFinite(value)) {
68
79
  return null;
@@ -187,6 +198,93 @@ async function listMetricsDailyRows(container, filters) {
187
198
  const allowedTokens = new Set(filters.frequency.map((frequency) => `${frequency.interval}:${frequency.value}`));
188
199
  return rows.filter((row) => allowedTokens.has(`${row.frequency_interval}:${row.frequency_value}`));
189
200
  }
201
+ async function getLiveActiveSubscriptionsCount(container, filters) {
202
+ if (filters.status.length && !filters.status.includes("active")) {
203
+ return 0;
204
+ }
205
+ const query = getQuery(container);
206
+ const rows = [];
207
+ const take = 500;
208
+ let skip = 0;
209
+ while (true) {
210
+ const result = await query.graph({
211
+ entity: "subscription",
212
+ fields: ["id", "frequency_interval", "frequency_value"],
213
+ filters: {
214
+ status: ["active"],
215
+ ...(filters.product_id.length ? { product_id: filters.product_id } : {}),
216
+ },
217
+ pagination: {
218
+ take,
219
+ skip,
220
+ order: {
221
+ id: "ASC",
222
+ },
223
+ },
224
+ });
225
+ const batch = (result.data ?? []);
226
+ rows.push(...batch);
227
+ if (!batch.length || rows.length >= (result.metadata?.count ?? 0)) {
228
+ break;
229
+ }
230
+ skip += result.metadata?.take ?? take;
231
+ }
232
+ if (!filters.frequency.length) {
233
+ return rows.length;
234
+ }
235
+ const allowedTokens = new Set(filters.frequency.map((frequency) => `${frequency.interval}:${frequency.value}`));
236
+ return rows.filter((row) => allowedTokens.has(`${row.frequency_interval}:${row.frequency_value}`)).length;
237
+ }
238
+ async function listCreatedSubscriptions(container, filters) {
239
+ const query = getQuery(container);
240
+ const rows = [];
241
+ const take = 500;
242
+ let skip = 0;
243
+ while (true) {
244
+ const result = await query.graph({
245
+ entity: "subscription",
246
+ fields: ["id", "created_at"],
247
+ filters: {
248
+ created_at: {
249
+ $gte: filters.date_from,
250
+ $lte: filters.date_to,
251
+ },
252
+ },
253
+ pagination: {
254
+ take,
255
+ skip,
256
+ order: {
257
+ created_at: "ASC",
258
+ id: "ASC",
259
+ },
260
+ },
261
+ });
262
+ const batch = (result.data ?? []);
263
+ rows.push(...batch);
264
+ if (!batch.length || rows.length >= (result.metadata?.count ?? 0)) {
265
+ break;
266
+ }
267
+ skip += result.metadata?.take ?? take;
268
+ }
269
+ return rows;
270
+ }
271
+ function overrideLiveActiveBucket(buckets, filters, liveActiveSubscriptionsCount) {
272
+ if (!buckets.length || liveActiveSubscriptionsCount === null) {
273
+ return buckets;
274
+ }
275
+ const todayStart = toUtcDayStart(new Date()).getTime();
276
+ return buckets.map((bucket) => {
277
+ const bucketStart = new Date(bucket.bucket_start).getTime();
278
+ const bucketEnd = new Date(bucket.bucket_end).getTime();
279
+ if (bucketStart <= todayStart && bucketEnd >= todayStart) {
280
+ return {
281
+ ...bucket,
282
+ active_subscriptions_count: liveActiveSubscriptionsCount,
283
+ };
284
+ }
285
+ return bucket;
286
+ });
287
+ }
190
288
  function buildDaySummaries(rows) {
191
289
  const summaryByDay = new Map();
192
290
  for (const row of rows) {
@@ -310,7 +408,8 @@ function computeLtv(mrr, churnRate) {
310
408
  return mrr / (churnRate / 100);
311
409
  }
312
410
  function metricUnit(metric) {
313
- if (metric === analytics_1.AnalyticsMetricKey.ACTIVE_SUBSCRIPTIONS_COUNT) {
411
+ if (metric === analytics_1.AnalyticsMetricKey.ACTIVE_SUBSCRIPTIONS_COUNT ||
412
+ metric === analytics_1.AnalyticsMetricKey.CREATED_SUBSCRIPTIONS_COUNT) {
314
413
  return "count";
315
414
  }
316
415
  if (metric === analytics_1.AnalyticsMetricKey.CHURN_RATE) {
@@ -319,7 +418,10 @@ function metricUnit(metric) {
319
418
  return "currency";
320
419
  }
321
420
  function metricPrecision(metric) {
322
- return metric === analytics_1.AnalyticsMetricKey.ACTIVE_SUBSCRIPTIONS_COUNT ? 0 : 2;
421
+ return metric === analytics_1.AnalyticsMetricKey.ACTIVE_SUBSCRIPTIONS_COUNT ||
422
+ metric === analytics_1.AnalyticsMetricKey.CREATED_SUBSCRIPTIONS_COUNT
423
+ ? 0
424
+ : 2;
323
425
  }
324
426
  function buildKpiValue(metric, value, previousValue, currencyCode) {
325
427
  const deltaValue = value === null || previousValue === null ? null : value - previousValue;
@@ -370,6 +472,9 @@ function buildTrendPoints(buckets, metric) {
370
472
  if (metric === analytics_1.AnalyticsMetricKey.ACTIVE_SUBSCRIPTIONS_COUNT) {
371
473
  value = bucket.active_subscriptions_count;
372
474
  }
475
+ else if (metric === analytics_1.AnalyticsMetricKey.CREATED_SUBSCRIPTIONS_COUNT) {
476
+ value = 0;
477
+ }
373
478
  else if (metric === analytics_1.AnalyticsMetricKey.MRR) {
374
479
  value = bucket.has_mixed_currency ? null : bucket.mrr_amount;
375
480
  }
@@ -399,6 +504,36 @@ function buildTrendSeries(buckets, metric) {
399
504
  points: buildTrendPoints(buckets, metric),
400
505
  };
401
506
  }
507
+ function buildCreatedSubscriptionsSeries(filters, rows) {
508
+ const countsByDay = new Map();
509
+ for (const row of rows) {
510
+ const createdAt = new Date(row.created_at);
511
+ if (Number.isNaN(createdAt.getTime())) {
512
+ continue;
513
+ }
514
+ const dayKey = toUtcDayStart(createdAt).toISOString();
515
+ countsByDay.set(dayKey, (countsByDay.get(dayKey) ?? 0) + 1);
516
+ }
517
+ const start = toUtcDayStart(filters.date_from);
518
+ const end = toUtcDayStart(filters.date_to);
519
+ const points = [];
520
+ for (let cursor = new Date(start); cursor.getTime() <= end.getTime(); cursor = shiftDays(cursor, 1)) {
521
+ const bucketStart = toUtcDayStart(cursor).toISOString();
522
+ points.push({
523
+ bucket_start: bucketStart,
524
+ bucket_end: toUtcDayEnd(cursor).toISOString(),
525
+ value: countsByDay.get(bucketStart) ?? 0,
526
+ });
527
+ }
528
+ return {
529
+ metric: analytics_1.AnalyticsMetricKey.CREATED_SUBSCRIPTIONS_COUNT,
530
+ label: METRIC_LABELS[analytics_1.AnalyticsMetricKey.CREATED_SUBSCRIPTIONS_COUNT],
531
+ unit: "count",
532
+ currency_code: null,
533
+ precision: 0,
534
+ points,
535
+ };
536
+ }
402
537
  async function buildAnalyticsSnapshot(container, input) {
403
538
  const normalized = normalizeAnalyticsQueryInput(input);
404
539
  const currentRows = await listMetricsDailyRows(container, normalized.filters);
@@ -416,10 +551,14 @@ async function buildAnalyticsSnapshot(container, input) {
416
551
  };
417
552
  const previousRows = await listMetricsDailyRows(container, previousFilters);
418
553
  const previousBuckets = buildBucketSummaries(buildDaySummaries(previousRows), normalized.filters.group_by);
554
+ const liveActiveSubscriptionsCount = filterIncludesCurrentUtcDay(normalized.filters)
555
+ ? await getLiveActiveSubscriptionsCount(container, normalized.filters)
556
+ : null;
419
557
  return {
420
558
  normalized,
421
559
  currentBuckets,
422
560
  previousBuckets,
561
+ liveActiveSubscriptionsCount,
423
562
  };
424
563
  }
425
564
  async function getAdminAnalyticsKpis(container, input) {
@@ -430,6 +569,7 @@ async function getAdminAnalyticsKpis(container, input) {
430
569
  const snapshot = await buildAnalyticsSnapshot(container, input);
431
570
  const currentSet = deriveKpiSet(snapshot.currentBuckets);
432
571
  const previousSet = deriveKpiSet(snapshot.previousBuckets);
572
+ const currentActiveSubscriptionsCount = snapshot.liveActiveSubscriptionsCount ?? currentSet.active_subscriptions_count;
433
573
  const response = {
434
574
  filters: snapshot.normalized.filters,
435
575
  metrics_version: constants_1.ANALYTICS_METRICS_VERSION,
@@ -438,7 +578,7 @@ async function getAdminAnalyticsKpis(container, input) {
438
578
  buildKpiValue(analytics_1.AnalyticsMetricKey.MRR, currentSet.mrr, previousSet.mrr, currentSet.mrr_currency_code),
439
579
  buildKpiValue(analytics_1.AnalyticsMetricKey.CHURN_RATE, currentSet.churn_rate, previousSet.churn_rate, null),
440
580
  buildKpiValue(analytics_1.AnalyticsMetricKey.LTV, currentSet.ltv, previousSet.ltv, currentSet.mrr_currency_code),
441
- buildKpiValue(analytics_1.AnalyticsMetricKey.ACTIVE_SUBSCRIPTIONS_COUNT, currentSet.active_subscriptions_count, previousSet.active_subscriptions_count, null),
581
+ buildKpiValue(analytics_1.AnalyticsMetricKey.ACTIVE_SUBSCRIPTIONS_COUNT, currentActiveSubscriptionsCount, previousSet.active_subscriptions_count, null),
442
582
  ],
443
583
  };
444
584
  const durationMs = Date.now() - startedAt;
@@ -487,7 +627,14 @@ async function getAdminAnalyticsTrends(container, input) {
487
627
  try {
488
628
  const normalized = normalizeAnalyticsQueryInput(input);
489
629
  const rows = await listMetricsDailyRows(container, normalized.filters);
490
- const buckets = buildBucketSummaries(buildDaySummaries(rows), normalized.filters.group_by);
630
+ const createdSubscriptions = await listCreatedSubscriptions(container, {
631
+ date_from: normalized.filters.date_from,
632
+ date_to: normalized.filters.date_to,
633
+ });
634
+ const liveActiveSubscriptionsCount = filterIncludesCurrentUtcDay(normalized.filters)
635
+ ? await getLiveActiveSubscriptionsCount(container, normalized.filters)
636
+ : null;
637
+ const buckets = overrideLiveActiveBucket(buildBucketSummaries(buildDaySummaries(rows), normalized.filters.group_by), normalized.filters, liveActiveSubscriptionsCount);
491
638
  const response = {
492
639
  filters: normalized.filters,
493
640
  metrics_version: constants_1.ANALYTICS_METRICS_VERSION,
@@ -497,6 +644,10 @@ async function getAdminAnalyticsTrends(container, input) {
497
644
  buildTrendSeries(buckets, analytics_1.AnalyticsMetricKey.CHURN_RATE),
498
645
  buildTrendSeries(buckets, analytics_1.AnalyticsMetricKey.LTV),
499
646
  buildTrendSeries(buckets, analytics_1.AnalyticsMetricKey.ACTIVE_SUBSCRIPTIONS_COUNT),
647
+ buildCreatedSubscriptionsSeries({
648
+ date_from: normalized.filters.date_from,
649
+ date_to: normalized.filters.date_to,
650
+ }, createdSubscriptions),
500
651
  ],
501
652
  };
502
653
  const durationMs = Date.now() - startedAt;
@@ -518,6 +669,7 @@ async function getAdminAnalyticsTrends(container, input) {
518
669
  metadata: {
519
670
  filters: response.filters,
520
671
  row_count: rows.length,
672
+ created_subscription_count: createdSubscriptions.length,
521
673
  bucket_count: buckets.length,
522
674
  series_count: response.series.length,
523
675
  },
@@ -629,4 +781,4 @@ async function getAdminAnalyticsExport(container, input) {
629
781
  throw error;
630
782
  }
631
783
  }
632
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9hbmFseXRpY3MvdXRpbHMvYWRtaW4tcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF3c0JBLHNEQXdGQztBQUVELDBEQXVFQztBQUVELDBEQXFIQztBQS85QkQscURBQXVEO0FBQ3ZELHFEQUFxRTtBQUNyRSw4REFjdUM7QUFDdkMsNENBQXdEO0FBQ3hELG1EQU93QjtBQXFFeEIsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUE7QUFDaEMsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUE7QUFDeEMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUE7QUFDckMsTUFBTSxhQUFhLEdBQXVDO0lBQ3hELENBQUMsOEJBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUMvQixDQUFDLDhCQUFrQixDQUFDLFVBQVUsQ0FBQyxFQUFFLFlBQVk7SUFDN0MsQ0FBQyw4QkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQy9CLENBQUMsOEJBQWtCLENBQUMsMEJBQTBCLENBQUMsRUFBRSxzQkFBc0I7Q0FDeEUsQ0FBQTtBQUVELFNBQVMsUUFBUSxDQUFDLFNBQTBCO0lBQzFDLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBWSxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUN0RSxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsU0FBMEI7SUFDM0MsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUlyQixRQUFRLENBQUMsQ0FBQTtBQUNkLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxLQUFvQjtJQUN6QyxNQUFNLE1BQU0sR0FBRyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFeEUsT0FB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
784
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9hbmFseXRpY3MvdXRpbHMvYWRtaW4tcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE2NUJBLHNEQTBGQztBQUVELDBEQStGQztBQUVELDBEQXFIQztBQTlzQ0QscURBQXVEO0FBQ3ZELHFEQUFxRTtBQUNyRSw4REFjdUM7QUFDdkMsNENBQXdEO0FBQ3hELG1EQU93QjtBQWdGeEIsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUE7QUFDaEMsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUE7QUFDeEMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUE7QUFDckMsTUFBTSxhQUFhLEdBQXVDO0lBQ3hELENBQUMsOEJBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUMvQixDQUFDLDhCQUFrQixDQUFDLFVBQVUsQ0FBQyxFQUFFLFlBQVk7SUFDN0MsQ0FBQyw4QkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQy9CLENBQUMsOEJBQWtCLENBQUMsMEJBQTBCLENBQUMsRUFBRSxzQkFBc0I7SUFDdkUsQ0FBQyw4QkFBa0IsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLHVCQUF1QjtDQUMxRSxDQUFBO0FBRUQsU0FBUyxRQUFRLENBQUMsU0FBMEI7SUFDMUMsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFZLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3RFLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxTQUEwQjtJQUMzQyxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBSXJCLFFBQVEsQ0FBQyxDQUFBO0FBQ2QsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLEtBQW9CO0lBQ3pDLE1BQU0sTUFBTSxHQUFHLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENB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
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const test_utils_1 = require("@medusajs/test-utils");
7
+ const __1 = require("..");
8
+ const plan_offer_1 = __importDefault(require("../models/plan-offer"));
9
+ const types_1 = require("../types");
10
+ (0, test_utils_1.moduleIntegrationTestRunner)({
11
+ moduleName: __1.PLAN_OFFER_MODULE,
12
+ moduleModels: [plan_offer_1.default],
13
+ resolve: "./src/modules/plan-offer",
14
+ testSuite: ({ service }) => {
15
+ describe("PlanOfferModuleService", () => {
16
+ it("creates and retrieves a plan offer", async () => {
17
+ const created = await service.createPlanOffers({
18
+ name: "PLAN-MODULE-001",
19
+ scope: types_1.PlanOfferScope.PRODUCT,
20
+ product_id: "prod_module_001",
21
+ variant_id: null,
22
+ is_enabled: true,
23
+ allowed_frequencies: [
24
+ {
25
+ interval: types_1.PlanOfferFrequencyInterval.MONTH,
26
+ value: 1,
27
+ },
28
+ ],
29
+ frequency_intervals: ["month"],
30
+ discount_per_frequency: [
31
+ {
32
+ interval: types_1.PlanOfferFrequencyInterval.MONTH,
33
+ value: 1,
34
+ discount_type: types_1.PlanOfferDiscountType.PERCENTAGE,
35
+ discount_value: 10,
36
+ },
37
+ ],
38
+ rules: {
39
+ minimum_cycles: 2,
40
+ trial_enabled: false,
41
+ trial_days: null,
42
+ stacking_policy: types_1.PlanOfferStackingPolicy.DISALLOW_SUBSCRIPTION_DISCOUNTS,
43
+ },
44
+ metadata: {
45
+ source: "module-test",
46
+ },
47
+ });
48
+ const retrieved = await service.retrievePlanOffer(created.id);
49
+ expect(retrieved.id).toEqual(created.id);
50
+ expect(retrieved.name).toEqual("PLAN-MODULE-001");
51
+ expect(retrieved.frequency_intervals).toEqual(["month"]);
52
+ });
53
+ it("updates helper and json fields", async () => {
54
+ const created = await service.createPlanOffers({
55
+ name: "PLAN-MODULE-002",
56
+ scope: types_1.PlanOfferScope.VARIANT,
57
+ product_id: "prod_module_002",
58
+ variant_id: "variant_module_002",
59
+ is_enabled: true,
60
+ allowed_frequencies: [
61
+ {
62
+ interval: types_1.PlanOfferFrequencyInterval.MONTH,
63
+ value: 1,
64
+ },
65
+ ],
66
+ frequency_intervals: ["month"],
67
+ discount_per_frequency: [],
68
+ rules: null,
69
+ metadata: null,
70
+ });
71
+ await service.updatePlanOffers({
72
+ id: created.id,
73
+ is_enabled: false,
74
+ frequency_intervals: ["month", "year"],
75
+ allowed_frequencies: [
76
+ {
77
+ interval: types_1.PlanOfferFrequencyInterval.MONTH,
78
+ value: 1,
79
+ },
80
+ {
81
+ interval: types_1.PlanOfferFrequencyInterval.YEAR,
82
+ value: 1,
83
+ },
84
+ ],
85
+ });
86
+ const updated = await service.retrievePlanOffer(created.id);
87
+ expect(updated.is_enabled).toBe(false);
88
+ expect(updated.frequency_intervals).toEqual(["month", "year"]);
89
+ });
90
+ });
91
+ },
92
+ });
93
+ jest.setTimeout(60 * 1000);
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvcGxhbi1vZmZlci9fX3Rlc3RzX18vc2VydmljZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQWtFO0FBQ2xFLDBCQUFzQztBQUN0QyxzRUFBNEM7QUFFNUMsb0NBS2lCO0FBRWpCLElBQUEsd0NBQTJCLEVBQXlCO0lBQ2xELFVBQVUsRUFBRSxxQkFBaUI7SUFDN0IsWUFBWSxFQUFFLENBQUMsb0JBQVMsQ0FBQztJQUN6QixPQUFPLEVBQUUsMEJBQTBCO0lBQ25DLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtRQUN6QixRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO1lBQ3RDLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7b0JBQzdDLElBQUksRUFBRSxpQkFBaUI7b0JBQ3ZCLEtBQUssRUFBRSxzQkFBYyxDQUFDLE9BQU87b0JBQzdCLFVBQVUsRUFBRSxpQkFBaUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsbUJBQW1CLEVBQUU7d0JBQ25COzRCQUNFLFFBQVEsRUFBRSxrQ0FBMEIsQ0FBQyxLQUFLOzRCQUMxQyxLQUFLLEVBQUUsQ0FBQzt5QkFDVDtxQkFDSztvQkFDUixtQkFBbUIsRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDOUIsc0JBQXNCLEVBQUU7d0JBQ3RCOzRCQUNFLFFBQVEsRUFBRSxrQ0FBMEIsQ0FBQyxLQUFLOzRCQUMxQyxLQUFLLEVBQUUsQ0FBQzs0QkFDUixhQUFhLEVBQUUsNkJBQXFCLENBQUMsVUFBVTs0QkFDL0MsY0FBYyxFQUFFLEVBQUU7eUJBQ25CO3FCQUNLO29CQUNSLEtB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
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const test_utils_1 = require("@medusajs/test-utils");
7
+ const __1 = require("..");
8
+ const renewal_attempt_1 = __importDefault(require("../models/renewal-attempt"));
9
+ const renewal_cycle_1 = __importDefault(require("../models/renewal-cycle"));
10
+ const types_1 = require("../types");
11
+ (0, test_utils_1.moduleIntegrationTestRunner)({
12
+ moduleName: __1.RENEWAL_MODULE,
13
+ moduleModels: [renewal_cycle_1.default, renewal_attempt_1.default],
14
+ resolve: "./src/modules/renewal",
15
+ testSuite: ({ service }) => {
16
+ describe("RenewalModuleService", () => {
17
+ it("creates and retrieves a renewal cycle", async () => {
18
+ const created = await service.createRenewalCycles({
19
+ subscription_id: "sub_module_001",
20
+ scheduled_for: new Date("2026-03-30T10:00:00.000Z"),
21
+ processed_at: null,
22
+ status: types_1.RenewalCycleStatus.SCHEDULED,
23
+ approval_required: true,
24
+ approval_status: types_1.RenewalApprovalStatus.PENDING,
25
+ approval_decided_at: null,
26
+ approval_decided_by: null,
27
+ approval_reason: null,
28
+ generated_order_id: null,
29
+ applied_pending_update_data: null,
30
+ last_error: null,
31
+ attempt_count: 0,
32
+ metadata: {
33
+ source: "module-test",
34
+ },
35
+ });
36
+ const retrieved = await service.retrieveRenewalCycle(created.id);
37
+ expect(retrieved.id).toEqual(created.id);
38
+ expect(retrieved.subscription_id).toEqual("sub_module_001");
39
+ expect(retrieved.status).toEqual(types_1.RenewalCycleStatus.SCHEDULED);
40
+ expect(retrieved.approval_status).toEqual(types_1.RenewalApprovalStatus.PENDING);
41
+ });
42
+ it("creates an attempt and updates renewal processing state", async () => {
43
+ const cycle = await service.createRenewalCycles({
44
+ subscription_id: "sub_module_002",
45
+ scheduled_for: new Date("2026-03-30T11:00:00.000Z"),
46
+ processed_at: null,
47
+ status: types_1.RenewalCycleStatus.SCHEDULED,
48
+ approval_required: false,
49
+ approval_status: null,
50
+ approval_decided_at: null,
51
+ approval_decided_by: null,
52
+ approval_reason: null,
53
+ generated_order_id: null,
54
+ applied_pending_update_data: null,
55
+ last_error: null,
56
+ attempt_count: 0,
57
+ metadata: null,
58
+ });
59
+ const attempt = await service.createRenewalAttempts({
60
+ renewal_cycle_id: cycle.id,
61
+ attempt_no: 1,
62
+ started_at: new Date("2026-03-30T11:01:00.000Z"),
63
+ finished_at: null,
64
+ status: types_1.RenewalAttemptStatus.PROCESSING,
65
+ error_code: null,
66
+ error_message: null,
67
+ payment_reference: null,
68
+ order_id: null,
69
+ metadata: {
70
+ trigger_type: "scheduler",
71
+ },
72
+ });
73
+ await service.updateRenewalCycles({
74
+ id: cycle.id,
75
+ status: types_1.RenewalCycleStatus.PROCESSING,
76
+ attempt_count: 1,
77
+ });
78
+ const updatedCycle = await service.retrieveRenewalCycle(cycle.id);
79
+ const retrievedAttempt = await service.retrieveRenewalAttempt(attempt.id);
80
+ expect(updatedCycle.status).toEqual(types_1.RenewalCycleStatus.PROCESSING);
81
+ expect(updatedCycle.attempt_count).toEqual(1);
82
+ expect(retrievedAttempt.renewal_cycle_id).toEqual(cycle.id);
83
+ expect(retrievedAttempt.status).toEqual(types_1.RenewalAttemptStatus.PROCESSING);
84
+ });
85
+ });
86
+ },
87
+ });
88
+ jest.setTimeout(60 * 1000);
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvcmVuZXdhbC9fX3Rlc3RzX18vc2VydmljZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQWtFO0FBQ2xFLDBCQUFtQztBQUNuQyxnRkFBc0Q7QUFDdEQsNEVBQWtEO0FBRWxELG9DQUlpQjtBQUVqQixJQUFBLHdDQUEyQixFQUF1QjtJQUNoRCxVQUFVLEVBQUUsa0JBQWM7SUFDMUIsWUFBWSxFQUFFLENBQUMsdUJBQVksRUFBRSx5QkFBYyxDQUFDO0lBQzVDLE9BQU8sRUFBRSx1QkFBdUI7SUFDaEMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1FBQ3pCLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7WUFDcEMsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUNyRCxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztvQkFDaEQsZUFBZSxFQUFFLGdCQUFnQjtvQkFDakMsYUFBYSxFQUFFLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDO29CQUNuRCxZQUFZLEVBQUUsSUFBSTtvQkFDbEIsTUFBTSxFQUFFLDBCQUFrQixDQUFDLFNBQVM7b0JBQ3BDLGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLGVBQWUsRUFBRSw2QkFBcUIsQ0FBQyxPQUFPO29CQUM5QyxtQkFBbUIsRUFBRSxJQUFJO29CQUN6QixtQkFBbUIsRUFBRSxJQUFJO29CQUN6QixlQUFlLEVBQUUsSUFBSTtvQkFDckIsa0JBQWtCLEVBQUUsSUFBSTtvQkFDeEIsMkJBQTJCLEVBQUUsSUFBSTtvQkFDakMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGFBQWEsRUFBRSxDQUFDO29CQUNoQixRQUFRLEVBQUU7d0JBQ1IsTUFBTSxFQUFFLGFBQWE7cUJBQ3RC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