@bash-app/bash-common 30.236.0 → 30.238.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 (180) hide show
  1. package/dist/__tests__/statusEnums.test.js +88 -7
  2. package/dist/__tests__/statusEnums.test.js.map +1 -1
  3. package/dist/definitions.d.ts +39 -8
  4. package/dist/definitions.d.ts.map +1 -1
  5. package/dist/definitions.js +31 -10
  6. package/dist/definitions.js.map +1 -1
  7. package/dist/extendedSchemas.d.ts +6 -0
  8. package/dist/extendedSchemas.d.ts.map +1 -1
  9. package/dist/extendedSchemas.js.map +1 -1
  10. package/dist/index.d.ts +13 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +16 -4
  13. package/dist/index.js.map +1 -1
  14. package/dist/mirroredPrismaEnums.d.ts +145 -0
  15. package/dist/mirroredPrismaEnums.d.ts.map +1 -0
  16. package/dist/mirroredPrismaEnums.js +136 -0
  17. package/dist/mirroredPrismaEnums.js.map +1 -0
  18. package/dist/utils/__tests__/nonprofitUtils.test.d.ts +2 -0
  19. package/dist/utils/__tests__/nonprofitUtils.test.d.ts.map +1 -0
  20. package/dist/utils/__tests__/nonprofitUtils.test.js +84 -0
  21. package/dist/utils/__tests__/nonprofitUtils.test.js.map +1 -0
  22. package/dist/utils/__tests__/paymentUtils.test.js +87 -0
  23. package/dist/utils/__tests__/paymentUtils.test.js.map +1 -1
  24. package/dist/utils/nonprofitUtils.d.ts +21 -0
  25. package/dist/utils/nonprofitUtils.d.ts.map +1 -0
  26. package/dist/utils/nonprofitUtils.js +29 -0
  27. package/dist/utils/nonprofitUtils.js.map +1 -0
  28. package/dist/utils/paymentUtils.d.ts +23 -0
  29. package/dist/utils/paymentUtils.d.ts.map +1 -1
  30. package/dist/utils/paymentUtils.js +24 -7
  31. package/dist/utils/paymentUtils.js.map +1 -1
  32. package/dist/utils/service/__tests__/billingCapUtils.test.d.ts +2 -0
  33. package/dist/utils/service/__tests__/billingCapUtils.test.d.ts.map +1 -0
  34. package/dist/utils/service/__tests__/billingCapUtils.test.js +120 -0
  35. package/dist/utils/service/__tests__/billingCapUtils.test.js.map +1 -0
  36. package/dist/utils/service/__tests__/cancellationPolicyRefundResolver.test.js +1 -1
  37. package/dist/utils/service/__tests__/cancellationPolicyRefundResolver.test.js.map +1 -1
  38. package/dist/utils/service/__tests__/eventPromoterPhase3.test.d.ts +2 -0
  39. package/dist/utils/service/__tests__/eventPromoterPhase3.test.d.ts.map +1 -0
  40. package/dist/utils/service/__tests__/eventPromoterPhase3.test.js +243 -0
  41. package/dist/utils/service/__tests__/eventPromoterPhase3.test.js.map +1 -0
  42. package/dist/utils/service/__tests__/eventPromoterUtils.test.d.ts +2 -0
  43. package/dist/utils/service/__tests__/eventPromoterUtils.test.d.ts.map +1 -0
  44. package/dist/utils/service/__tests__/eventPromoterUtils.test.js +333 -0
  45. package/dist/utils/service/__tests__/eventPromoterUtils.test.js.map +1 -0
  46. package/dist/utils/service/__tests__/offerAllowListUtils.test.d.ts +2 -0
  47. package/dist/utils/service/__tests__/offerAllowListUtils.test.d.ts.map +1 -0
  48. package/dist/utils/service/__tests__/offerAllowListUtils.test.js +52 -0
  49. package/dist/utils/service/__tests__/offerAllowListUtils.test.js.map +1 -0
  50. package/dist/utils/service/__tests__/offerComparisonUtils.test.d.ts +2 -0
  51. package/dist/utils/service/__tests__/offerComparisonUtils.test.d.ts.map +1 -0
  52. package/dist/utils/service/__tests__/offerComparisonUtils.test.js +111 -0
  53. package/dist/utils/service/__tests__/offerComparisonUtils.test.js.map +1 -0
  54. package/dist/utils/service/__tests__/serviceBookingExposureUtils.test.d.ts +2 -0
  55. package/dist/utils/service/__tests__/serviceBookingExposureUtils.test.d.ts.map +1 -0
  56. package/dist/utils/service/__tests__/serviceBookingExposureUtils.test.js +155 -0
  57. package/dist/utils/service/__tests__/serviceBookingExposureUtils.test.js.map +1 -0
  58. package/dist/utils/service/__tests__/unifiedPricingResolver.test.d.ts +2 -0
  59. package/dist/utils/service/__tests__/unifiedPricingResolver.test.d.ts.map +1 -0
  60. package/dist/utils/service/__tests__/unifiedPricingResolver.test.js +77 -0
  61. package/dist/utils/service/__tests__/unifiedPricingResolver.test.js.map +1 -0
  62. package/dist/utils/service/__tests__/venueFBSettlementUtils.test.d.ts +2 -0
  63. package/dist/utils/service/__tests__/venueFBSettlementUtils.test.d.ts.map +1 -0
  64. package/dist/utils/service/__tests__/venueFBSettlementUtils.test.js +157 -0
  65. package/dist/utils/service/__tests__/venueFBSettlementUtils.test.js.map +1 -0
  66. package/dist/utils/service/__tests__/venueSettlementUtils.test.d.ts +2 -0
  67. package/dist/utils/service/__tests__/venueSettlementUtils.test.d.ts.map +1 -0
  68. package/dist/utils/service/__tests__/venueSettlementUtils.test.js +175 -0
  69. package/dist/utils/service/__tests__/venueSettlementUtils.test.js.map +1 -0
  70. package/dist/utils/service/__tests__/volunteerCompensationUtils.test.d.ts +2 -0
  71. package/dist/utils/service/__tests__/volunteerCompensationUtils.test.d.ts.map +1 -0
  72. package/dist/utils/service/__tests__/volunteerCompensationUtils.test.js +118 -0
  73. package/dist/utils/service/__tests__/volunteerCompensationUtils.test.js.map +1 -0
  74. package/dist/utils/service/apiServiceBookingApiUtils.d.ts.map +1 -1
  75. package/dist/utils/service/apiServiceBookingApiUtils.js +4 -0
  76. package/dist/utils/service/apiServiceBookingApiUtils.js.map +1 -1
  77. package/dist/utils/service/billingCapUtils.d.ts +86 -0
  78. package/dist/utils/service/billingCapUtils.d.ts.map +1 -0
  79. package/dist/utils/service/billingCapUtils.js +96 -0
  80. package/dist/utils/service/billingCapUtils.js.map +1 -0
  81. package/dist/utils/service/cancellationPolicyRefundResolver.d.ts +1 -1
  82. package/dist/utils/service/cancellationPolicyRefundResolver.d.ts.map +1 -1
  83. package/dist/utils/service/cancellationPolicyRefundResolver.js +1 -1
  84. package/dist/utils/service/cancellationPolicyRefundResolver.js.map +1 -1
  85. package/dist/utils/service/eventPromoterUtils.d.ts +319 -0
  86. package/dist/utils/service/eventPromoterUtils.d.ts.map +1 -0
  87. package/dist/utils/service/eventPromoterUtils.js +372 -0
  88. package/dist/utils/service/eventPromoterUtils.js.map +1 -0
  89. package/dist/utils/service/offerAllowListUtils.d.ts +42 -0
  90. package/dist/utils/service/offerAllowListUtils.d.ts.map +1 -0
  91. package/dist/utils/service/offerAllowListUtils.js +49 -0
  92. package/dist/utils/service/offerAllowListUtils.js.map +1 -0
  93. package/dist/utils/service/offerComparisonUtils.d.ts +69 -0
  94. package/dist/utils/service/offerComparisonUtils.d.ts.map +1 -0
  95. package/dist/utils/service/offerComparisonUtils.js +110 -0
  96. package/dist/utils/service/offerComparisonUtils.js.map +1 -0
  97. package/dist/utils/service/serviceBookingExposureUtils.d.ts +111 -0
  98. package/dist/utils/service/serviceBookingExposureUtils.d.ts.map +1 -0
  99. package/dist/utils/service/serviceBookingExposureUtils.js +133 -0
  100. package/dist/utils/service/serviceBookingExposureUtils.js.map +1 -0
  101. package/dist/utils/service/serviceBookingTypes.d.ts +1 -1
  102. package/dist/utils/service/serviceBookingTypes.d.ts.map +1 -1
  103. package/dist/utils/service/serviceUtils.d.ts +2 -1
  104. package/dist/utils/service/serviceUtils.d.ts.map +1 -1
  105. package/dist/utils/service/serviceUtils.js +17 -16
  106. package/dist/utils/service/serviceUtils.js.map +1 -1
  107. package/dist/utils/service/unifiedPricingResolver.d.ts +67 -0
  108. package/dist/utils/service/unifiedPricingResolver.d.ts.map +1 -0
  109. package/dist/utils/service/unifiedPricingResolver.js +75 -0
  110. package/dist/utils/service/unifiedPricingResolver.js.map +1 -0
  111. package/dist/utils/service/venueFBSettlementUtils.d.ts +122 -0
  112. package/dist/utils/service/venueFBSettlementUtils.d.ts.map +1 -0
  113. package/dist/utils/service/venueFBSettlementUtils.js +106 -0
  114. package/dist/utils/service/venueFBSettlementUtils.js.map +1 -0
  115. package/dist/utils/service/venueSettlementUtils.d.ts +107 -0
  116. package/dist/utils/service/venueSettlementUtils.d.ts.map +1 -0
  117. package/dist/utils/service/venueSettlementUtils.js +117 -0
  118. package/dist/utils/service/venueSettlementUtils.js.map +1 -0
  119. package/dist/utils/service/volunteerCompensationUtils.d.ts +75 -0
  120. package/dist/utils/service/volunteerCompensationUtils.d.ts.map +1 -0
  121. package/dist/utils/service/volunteerCompensationUtils.js +88 -0
  122. package/dist/utils/service/volunteerCompensationUtils.js.map +1 -0
  123. package/dist/utils/venueLoyalty/__tests__/eligibilityUtils.test.d.ts +2 -0
  124. package/dist/utils/venueLoyalty/__tests__/eligibilityUtils.test.d.ts.map +1 -0
  125. package/dist/utils/venueLoyalty/__tests__/eligibilityUtils.test.js +67 -0
  126. package/dist/utils/venueLoyalty/__tests__/eligibilityUtils.test.js.map +1 -0
  127. package/dist/utils/venueLoyalty/__tests__/redemptionCodeUtils.test.d.ts +2 -0
  128. package/dist/utils/venueLoyalty/__tests__/redemptionCodeUtils.test.d.ts.map +1 -0
  129. package/dist/utils/venueLoyalty/__tests__/redemptionCodeUtils.test.js +71 -0
  130. package/dist/utils/venueLoyalty/__tests__/redemptionCodeUtils.test.js.map +1 -0
  131. package/dist/utils/venueLoyalty/eligibilityUtils.d.ts +33 -0
  132. package/dist/utils/venueLoyalty/eligibilityUtils.d.ts.map +1 -0
  133. package/dist/utils/venueLoyalty/eligibilityUtils.js +49 -0
  134. package/dist/utils/venueLoyalty/eligibilityUtils.js.map +1 -0
  135. package/dist/utils/venueLoyalty/redemptionCodeUtils.d.ts +35 -0
  136. package/dist/utils/venueLoyalty/redemptionCodeUtils.d.ts.map +1 -0
  137. package/dist/utils/venueLoyalty/redemptionCodeUtils.js +74 -0
  138. package/dist/utils/venueLoyalty/redemptionCodeUtils.js.map +1 -0
  139. package/dist/venueLoyaltyRedemption.d.ts +146 -1
  140. package/dist/venueLoyaltyRedemption.d.ts.map +1 -1
  141. package/dist/venueLoyaltyRedemption.js +18 -2
  142. package/dist/venueLoyaltyRedemption.js.map +1 -1
  143. package/package.json +1 -1
  144. package/prisma/schema.prisma +609 -214
  145. package/src/__tests__/statusEnums.test.ts +119 -11
  146. package/src/definitions.ts +57 -14
  147. package/src/extendedSchemas.ts +6 -0
  148. package/src/index.ts +16 -6
  149. package/src/mirroredPrismaEnums.ts +181 -0
  150. package/src/utils/__tests__/nonprofitUtils.test.ts +117 -0
  151. package/src/utils/__tests__/paymentUtils.test.ts +93 -0
  152. package/src/utils/nonprofitUtils.ts +44 -0
  153. package/src/utils/paymentUtils.ts +33 -7
  154. package/src/utils/service/__tests__/billingCapUtils.test.ts +175 -0
  155. package/src/utils/service/__tests__/cancellationPolicyRefundResolver.test.ts +1 -1
  156. package/src/utils/service/__tests__/eventPromoterPhase3.test.ts +296 -0
  157. package/src/utils/service/__tests__/eventPromoterUtils.test.ts +396 -0
  158. package/src/utils/service/__tests__/offerAllowListUtils.test.ts +76 -0
  159. package/src/utils/service/__tests__/offerComparisonUtils.test.ts +124 -0
  160. package/src/utils/service/__tests__/serviceBookingExposureUtils.test.ts +171 -0
  161. package/src/utils/service/__tests__/unifiedPricingResolver.test.ts +83 -0
  162. package/src/utils/service/__tests__/venueSettlementUtils.test.ts +219 -0
  163. package/src/utils/service/__tests__/volunteerCompensationUtils.test.ts +172 -0
  164. package/src/utils/service/apiServiceBookingApiUtils.ts +4 -0
  165. package/src/utils/service/billingCapUtils.ts +145 -0
  166. package/src/utils/service/cancellationPolicyRefundResolver.ts +1 -1
  167. package/src/utils/service/eventPromoterUtils.ts +644 -0
  168. package/src/utils/service/offerAllowListUtils.ts +81 -0
  169. package/src/utils/service/offerComparisonUtils.ts +197 -0
  170. package/src/utils/service/serviceBookingExposureUtils.ts +218 -0
  171. package/src/utils/service/serviceBookingTypes.ts +4 -0
  172. package/src/utils/service/serviceUtils.ts +18 -21
  173. package/src/utils/service/unifiedPricingResolver.ts +149 -0
  174. package/src/utils/service/venueSettlementUtils.ts +198 -0
  175. package/src/utils/service/volunteerCompensationUtils.ts +145 -0
  176. package/src/utils/venueLoyalty/__tests__/eligibilityUtils.test.ts +103 -0
  177. package/src/utils/venueLoyalty/__tests__/redemptionCodeUtils.test.ts +92 -0
  178. package/src/utils/venueLoyalty/eligibilityUtils.ts +84 -0
  179. package/src/utils/venueLoyalty/redemptionCodeUtils.ts +94 -0
  180. package/src/venueLoyaltyRedemption.ts +177 -2
@@ -0,0 +1,120 @@
1
+ import { DEFAULT_MAX_BILLABLE_MULTIPLIER, DEFAULT_MAX_BILLABLE_ROUNDING_CENTS, DEFAULT_VARIABLE_PAYOUT_TIMING_NOTE, defaultMaxBillableBashPoints, defaultMaxBillableCents, isFlatPricingModel, } from "../billingCapUtils";
2
+ describe("defaultMaxBillableCents", () => {
3
+ it("computes 1.5x of expectedAttendees * baseRateCents, rounded up to $10", () => {
4
+ // 200 * $5 * 1.5 = $1500 — already a $10 multiple.
5
+ expect(defaultMaxBillableCents({ expectedAttendees: 200, baseRateCents: 500 })).toBe(150_000);
6
+ });
7
+ it("rounds the cap UP to the nearest $10", () => {
8
+ // 217 * 500 * 1.5 = 162,750 cents = $1,627.50 → round up to $1,630.
9
+ expect(defaultMaxBillableCents({ expectedAttendees: 217, baseRateCents: 500 })).toBe(163_000);
10
+ });
11
+ it("returns 0 when expectedAttendees is zero", () => {
12
+ expect(defaultMaxBillableCents({ expectedAttendees: 0, baseRateCents: 500 })).toBe(0);
13
+ });
14
+ it("returns 0 when expectedAttendees is null or undefined", () => {
15
+ expect(defaultMaxBillableCents({ expectedAttendees: null, baseRateCents: 500 })).toBe(0);
16
+ expect(defaultMaxBillableCents({
17
+ expectedAttendees: undefined,
18
+ baseRateCents: 500,
19
+ })).toBe(0);
20
+ });
21
+ it("returns null when baseRateCents is missing or zero", () => {
22
+ expect(defaultMaxBillableCents({ expectedAttendees: 100, baseRateCents: null })).toBeNull();
23
+ expect(defaultMaxBillableCents({ expectedAttendees: 100, baseRateCents: 0 })).toBeNull();
24
+ expect(defaultMaxBillableCents({
25
+ expectedAttendees: 100,
26
+ baseRateCents: undefined,
27
+ })).toBeNull();
28
+ });
29
+ it("clamps negative expectedAttendees to zero", () => {
30
+ expect(defaultMaxBillableCents({ expectedAttendees: -50, baseRateCents: 500 })).toBe(0);
31
+ });
32
+ it("respects an explicit multiplier override", () => {
33
+ // 100 * 500 * 2.0 = 100,000 → $1,000.
34
+ expect(defaultMaxBillableCents({
35
+ expectedAttendees: 100,
36
+ baseRateCents: 500,
37
+ multiplier: 2,
38
+ })).toBe(100_000);
39
+ });
40
+ it("falls back to default multiplier when override is invalid", () => {
41
+ const out = defaultMaxBillableCents({
42
+ expectedAttendees: 100,
43
+ baseRateCents: 500,
44
+ multiplier: 0,
45
+ });
46
+ expect(out).toBe(100 * 500 * DEFAULT_MAX_BILLABLE_MULTIPLIER);
47
+ });
48
+ it("respects a custom rounding granularity", () => {
49
+ // 200 * 500 * 1.5 = 150,000 cents = $1,500 — already a $100 multiple.
50
+ expect(defaultMaxBillableCents({
51
+ expectedAttendees: 200,
52
+ baseRateCents: 500,
53
+ roundingCents: 10_000,
54
+ })).toBe(150_000);
55
+ // 101 * 500 * 1.5 = 75,750 cents = $757.50 → round up to nearest $100 = $800 = 80_000 cents.
56
+ expect(defaultMaxBillableCents({
57
+ expectedAttendees: 101,
58
+ baseRateCents: 500,
59
+ roundingCents: 10_000,
60
+ })).toBe(80_000);
61
+ });
62
+ it("uses the platform default rounding when override is invalid", () => {
63
+ const out = defaultMaxBillableCents({
64
+ expectedAttendees: 217,
65
+ baseRateCents: 500,
66
+ roundingCents: 0,
67
+ });
68
+ // Falls back to DEFAULT rounding ($10) → same as the rounded case above.
69
+ expect(out).toBe(Math.ceil((217 * 500 * 1.5) / DEFAULT_MAX_BILLABLE_ROUNDING_CENTS) *
70
+ DEFAULT_MAX_BILLABLE_ROUNDING_CENTS);
71
+ });
72
+ });
73
+ describe("defaultMaxBillableBashPoints", () => {
74
+ it("computes the BP parallel of the USD cap, rounded up to nearest 100 BP", () => {
75
+ // 100 * 50 * 1.5 = 7,500 — already a 100-multiple.
76
+ expect(defaultMaxBillableBashPoints({
77
+ expectedAttendees: 100,
78
+ baseRateBashPoints: 50,
79
+ })).toBe(7_500);
80
+ });
81
+ it("rounds up to the nearest 100 BashPoints", () => {
82
+ // 33 * 50 * 1.5 = 2,475 → round up to 2,500.
83
+ expect(defaultMaxBillableBashPoints({
84
+ expectedAttendees: 33,
85
+ baseRateBashPoints: 50,
86
+ })).toBe(2_500);
87
+ });
88
+ it("returns null when baseRateBashPoints is missing", () => {
89
+ expect(defaultMaxBillableBashPoints({
90
+ expectedAttendees: 100,
91
+ baseRateBashPoints: null,
92
+ })).toBeNull();
93
+ });
94
+ });
95
+ describe("isFlatPricingModel", () => {
96
+ it("recognizes the three flat models", () => {
97
+ expect(isFlatPricingModel("FLAT_FEE")).toBe(true);
98
+ expect(isFlatPricingModel("HOURLY")).toBe(true);
99
+ expect(isFlatPricingModel("PER_DAY")).toBe(true);
100
+ });
101
+ it("returns false for variable models", () => {
102
+ expect(isFlatPricingModel("PER_ATTENDEE")).toBe(false);
103
+ expect(isFlatPricingModel("PER_PAID_ATTENDEE")).toBe(false);
104
+ expect(isFlatPricingModel("PER_BASHPOINTS_ATTENDEE")).toBe(false);
105
+ expect(isFlatPricingModel("TICKET_REVENUE_PERCENTAGE")).toBe(false);
106
+ expect(isFlatPricingModel("TIERED")).toBe(false);
107
+ expect(isFlatPricingModel("CUSTOM")).toBe(false);
108
+ });
109
+ it("returns false for null / undefined / empty", () => {
110
+ expect(isFlatPricingModel(null)).toBe(false);
111
+ expect(isFlatPricingModel(undefined)).toBe(false);
112
+ expect(isFlatPricingModel("")).toBe(false);
113
+ });
114
+ });
115
+ describe("DEFAULT_VARIABLE_PAYOUT_TIMING_NOTE", () => {
116
+ it("mentions the ~3 business day window", () => {
117
+ expect(DEFAULT_VARIABLE_PAYOUT_TIMING_NOTE).toMatch(/3 business days/i);
118
+ });
119
+ });
120
+ //# sourceMappingURL=billingCapUtils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billingCapUtils.test.js","sourceRoot":"","sources":["../../../../src/utils/service/__tests__/billingCapUtils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,mCAAmC,EACnC,mCAAmC,EACnC,4BAA4B,EAC5B,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,mDAAmD;QACnD,MAAM,CACJ,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CACxE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,oEAAoE;QACpE,MAAM,CACJ,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CACxE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CACJ,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CACtE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CACJ,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CACzE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACV,MAAM,CACJ,uBAAuB,CAAC;YACtB,iBAAiB,EAAE,SAAS;YAC5B,aAAa,EAAE,GAAG;SACnB,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CACJ,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CACzE,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,CACJ,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CACtE,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,CACJ,uBAAuB,CAAC;YACtB,iBAAiB,EAAE,GAAG;YACtB,aAAa,EAAE,SAAS;SACzB,CAAC,CACH,CAAC,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CACJ,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CACxE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,sCAAsC;QACtC,MAAM,CACJ,uBAAuB,CAAC;YACtB,iBAAiB,EAAE,GAAG;YACtB,aAAa,EAAE,GAAG;YAClB,UAAU,EAAE,CAAC;SACd,CAAC,CACH,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,GAAG,GAAG,uBAAuB,CAAC;YAClC,iBAAiB,EAAE,GAAG;YACtB,aAAa,EAAE,GAAG;YAClB,UAAU,EAAE,CAAC;SACd,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,+BAA+B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,sEAAsE;QACtE,MAAM,CACJ,uBAAuB,CAAC;YACtB,iBAAiB,EAAE,GAAG;YACtB,aAAa,EAAE,GAAG;YAClB,aAAa,EAAE,MAAM;SACtB,CAAC,CACH,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChB,6FAA6F;QAC7F,MAAM,CACJ,uBAAuB,CAAC;YACtB,iBAAiB,EAAE,GAAG;YACtB,aAAa,EAAE,GAAG;YAClB,aAAa,EAAE,MAAM;SACtB,CAAC,CACH,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,GAAG,GAAG,uBAAuB,CAAC;YAClC,iBAAiB,EAAE,GAAG;YACtB,aAAa,EAAE,GAAG;YAClB,aAAa,EAAE,CAAC;SACjB,CAAC,CAAC;QACH,yEAAyE;QACzE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACd,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,mCAAmC,CAAC;YAChE,mCAAmC,CACtC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,mDAAmD;QACnD,MAAM,CACJ,4BAA4B,CAAC;YAC3B,iBAAiB,EAAE,GAAG;YACtB,kBAAkB,EAAE,EAAE;SACvB,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,6CAA6C;QAC7C,MAAM,CACJ,4BAA4B,CAAC;YAC3B,iBAAiB,EAAE,EAAE;YACrB,kBAAkB,EAAE,EAAE;SACvB,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CACJ,4BAA4B,CAAC;YAC3B,iBAAiB,EAAE,GAAG;YACtB,kBAAkB,EAAE,IAAI;SACzB,CAAC,CACH,CAAC,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,mCAAmC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ServiceCancellationPolicy } from "@prisma/client";
1
+ import { ServiceCancellationPolicy } from "../../../mirroredPrismaEnums.js";
2
2
  import { hoursUntilEventStart, cancellationRuleThresholdHours, resolveCancellationRefundFraction, getMatchingCancellationRefundRule, } from "../cancellationPolicyRefundResolver";
3
3
  // Fixed reference for "now"
4
4
  const NOW = new Date("2025-06-01T12:00:00.000Z");
@@ -1 +1 @@
1
- {"version":3,"file":"cancellationPolicyRefundResolver.test.js","sourceRoot":"","sources":["../../../../src/utils/service/__tests__/cancellationPolicyRefundResolver.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,8BAA8B,EAC9B,iCAAiC,EACjC,iCAAiC,GAClC,MAAM,qCAAqC,CAAC;AAG7C,4BAA4B;AAC5B,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAEjD,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,IAAI,GAAoC,EAAE,IAAI,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC;QACjF,MAAM,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,IAAI,GAAoC,EAAE,KAAK,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;QAClF,MAAM,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,IAAI,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAqC,CAAC;QAC1E,MAAM,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC9D,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CACJ,iCAAiC,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAC3G,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CACJ,iCAAiC,CAAC,yBAAyB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CACrI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC5C,MAAM,CACJ,iCAAiC,CAAC,yBAAyB,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAC1G,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAC/C,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAC1D,MAAM,CACJ,iCAAiC,CAAC,yBAAyB,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAC/G,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAC1D,MAAM,CACJ,iCAAiC,CAAC,yBAAyB,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAC/G,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,6CAA6C;IAC7C,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAChE,MAAM,CACJ,iCAAiC,CAAC,yBAAyB,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAC7G,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAChE,MAAM,CACJ,iCAAiC,CAAC,yBAAyB,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAC7G,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAC1D,MAAM,CACJ,iCAAiC,CAAC,yBAAyB,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAC3G,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,sDAAsD;IACtD,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAClE,MAAM,CACJ,iCAAiC,CAAC,yBAAyB,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CACnH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAClE,MAAM,CACJ,iCAAiC,CAAC,yBAAyB,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CACnH,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAChE,MAAM,CACJ,iCAAiC,CAAC,yBAAyB,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAClH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CACJ,iCAAiC,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAC3G,CAAC,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CACJ,iCAAiC,CAAC,yBAAyB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CACrI,CAAC,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC5C,MAAM,CACJ,iCAAiC,CAAC,yBAAyB,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CACtG,CAAC,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,iCAAiC,CAAC,yBAAyB,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5H,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,iCAAiC,CAAC,yBAAyB,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1H,MAAM,CAAC,IAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,IAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,iCAAiC,CAAC,yBAAyB,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1H,MAAM,CAAC,IAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,IAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cancellationPolicyRefundResolver.test.js","sourceRoot":"","sources":["../../../../src/utils/service/__tests__/cancellationPolicyRefundResolver.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=eventPromoterPhase3.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventPromoterPhase3.test.d.ts","sourceRoot":"","sources":["../../../../src/utils/service/__tests__/eventPromoterPhase3.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,243 @@
1
+ /**
2
+ * Phase 3 of the unified-pricing roadmap — tests for the
3
+ * - counting basis chooser,
4
+ * - locked-models set / validator update,
5
+ * - mixed USD + BashPoints settlement math,
6
+ * - BashPoints payout source resolver (pool-then-wallet).
7
+ *
8
+ * Lives next to `eventPromoterUtils.test.ts` so it picks up the same Jest
9
+ * config; pure-function-only, no Prisma.
10
+ */
11
+ import { describe, expect, it } from "@jest/globals";
12
+ import { EVENT_PROMOTER_LOCKED_PRICING_MODELS, computeEventPromoterMixedSettlement, eventPromoterCountingBasisFor, pickCheckedInForBasis, resolveBashPointsPayoutSources, validateEventPromoterPricing, } from "../eventPromoterUtils.js";
13
+ describe("EVENT_PROMOTER_LOCKED_PRICING_MODELS", () => {
14
+ it("contains PER_ATTENDEE, PER_PAID_ATTENDEE, PER_BASHPOINTS_ATTENDEE in that order", () => {
15
+ expect([...EVENT_PROMOTER_LOCKED_PRICING_MODELS]).toEqual([
16
+ "PER_ATTENDEE",
17
+ "PER_PAID_ATTENDEE",
18
+ "PER_BASHPOINTS_ATTENDEE",
19
+ ]);
20
+ });
21
+ });
22
+ describe("validateEventPromoterPricing (Phase 3 model set)", () => {
23
+ it("accepts PER_ATTENDEE for Promoter subtype", () => {
24
+ expect(validateEventPromoterPricing({
25
+ eventServiceSubType: "Promoter",
26
+ pricingModel: "PER_ATTENDEE",
27
+ }).ok).toBe(true);
28
+ });
29
+ it("accepts PER_PAID_ATTENDEE for Promoter subtype", () => {
30
+ expect(validateEventPromoterPricing({
31
+ eventServiceSubType: "Promoter",
32
+ pricingModel: "PER_PAID_ATTENDEE",
33
+ }).ok).toBe(true);
34
+ });
35
+ it("accepts PER_BASHPOINTS_ATTENDEE for Promoter subtype", () => {
36
+ expect(validateEventPromoterPricing({
37
+ eventServiceSubType: "Promoter",
38
+ pricingModel: "PER_BASHPOINTS_ATTENDEE",
39
+ }).ok).toBe(true);
40
+ });
41
+ it("rejects FLAT_FEE for Promoter subtype", () => {
42
+ const r = validateEventPromoterPricing({
43
+ eventServiceSubType: "Promoter",
44
+ pricingModel: "FLAT_FEE",
45
+ });
46
+ expect(r.ok).toBe(false);
47
+ });
48
+ });
49
+ describe("eventPromoterCountingBasisFor", () => {
50
+ it("PER_ATTENDEE → AllCheckedIn", () => {
51
+ expect(eventPromoterCountingBasisFor({ pricingModel: "PER_ATTENDEE" })).toBe("AllCheckedIn");
52
+ });
53
+ it("PER_PAID_ATTENDEE without BP knob → PaidUsdOnly", () => {
54
+ expect(eventPromoterCountingBasisFor({
55
+ pricingModel: "PER_PAID_ATTENDEE",
56
+ countsBashPointsTickets: false,
57
+ })).toBe("PaidUsdOnly");
58
+ });
59
+ it("PER_PAID_ATTENDEE with countsBashPointsTickets → PaidAny", () => {
60
+ expect(eventPromoterCountingBasisFor({
61
+ pricingModel: "PER_PAID_ATTENDEE",
62
+ countsBashPointsTickets: true,
63
+ })).toBe("PaidAny");
64
+ });
65
+ it("PER_BASHPOINTS_ATTENDEE → PaidBpOnly regardless of knob", () => {
66
+ expect(eventPromoterCountingBasisFor({
67
+ pricingModel: "PER_BASHPOINTS_ATTENDEE",
68
+ countsBashPointsTickets: true,
69
+ })).toBe("PaidBpOnly");
70
+ });
71
+ it("unknown / null pricing → AllCheckedIn (legacy fallback)", () => {
72
+ expect(eventPromoterCountingBasisFor({ pricingModel: null })).toBe("AllCheckedIn");
73
+ });
74
+ });
75
+ describe("pickCheckedInForBasis", () => {
76
+ const SNAPS = {
77
+ totalCheckedInAttendees: 220,
78
+ paidAttendeesAtSettle: 180,
79
+ paidInBashPointsAttendeesAtSettle: 30,
80
+ };
81
+ it("AllCheckedIn → total", () => {
82
+ expect(pickCheckedInForBasis("AllCheckedIn", SNAPS)).toBe(220);
83
+ });
84
+ it("PaidUsdOnly → paid USD", () => {
85
+ expect(pickCheckedInForBasis("PaidUsdOnly", SNAPS)).toBe(180);
86
+ });
87
+ it("PaidBpOnly → paid BP", () => {
88
+ expect(pickCheckedInForBasis("PaidBpOnly", SNAPS)).toBe(30);
89
+ });
90
+ it("PaidAny → USD + BP", () => {
91
+ expect(pickCheckedInForBasis("PaidAny", SNAPS)).toBe(210);
92
+ });
93
+ it("treats missing snapshots as zero", () => {
94
+ expect(pickCheckedInForBasis("PaidUsdOnly", {
95
+ totalCheckedInAttendees: 100,
96
+ })).toBe(0);
97
+ });
98
+ });
99
+ describe("computeEventPromoterMixedSettlement", () => {
100
+ const baseSnaps = {
101
+ totalCheckedInAttendees: 250,
102
+ paidAttendeesAtSettle: 200,
103
+ paidInBashPointsAttendeesAtSettle: 50,
104
+ };
105
+ it("computes a positive USD delta when more USD attendees show up than expected", () => {
106
+ const r = computeEventPromoterMixedSettlement({
107
+ baseRateCents: 500,
108
+ expectedPaidAttendeesAtBooking: 150,
109
+ snapshots: baseSnaps,
110
+ });
111
+ expect(r.usdTotalCents).toBe(200 * 500);
112
+ expect(r.usdDeltaCents).toBe((200 - 150) * 500);
113
+ expect(r.cappedUsd).toBe(false);
114
+ });
115
+ it("respects the USD ceiling (maxUsdAttendeesAttributable)", () => {
116
+ const r = computeEventPromoterMixedSettlement({
117
+ baseRateCents: 500,
118
+ expectedPaidAttendeesAtBooking: 150,
119
+ maxUsdAttendeesAttributable: 175,
120
+ snapshots: baseSnaps,
121
+ });
122
+ expect(r.usdTotalCents).toBe(175 * 500);
123
+ expect(r.cappedUsd).toBe(false); // ceiling, not dollar cap
124
+ });
125
+ it("flags cappedUsd when maxBillableCents bites", () => {
126
+ const r = computeEventPromoterMixedSettlement({
127
+ baseRateCents: 500,
128
+ expectedPaidAttendeesAtBooking: 150,
129
+ maxBillableCents: 80_000, // < 200 * 500 = 100_000
130
+ snapshots: baseSnaps,
131
+ });
132
+ expect(r.usdTotalCents).toBe(80_000);
133
+ expect(r.cappedUsd).toBe(true);
134
+ });
135
+ it("computes the BP side independently from USD", () => {
136
+ const r = computeEventPromoterMixedSettlement({
137
+ baseRateBashPoints: 10,
138
+ expectedBpAttendeesAtBooking: 30,
139
+ snapshots: baseSnaps,
140
+ });
141
+ expect(r.usdTotalCents).toBe(0);
142
+ expect(r.bpTotal).toBe(50 * 10);
143
+ expect(r.bpDelta).toBe(20 * 10);
144
+ });
145
+ it("caps BP via maxBillableBashPoints", () => {
146
+ const r = computeEventPromoterMixedSettlement({
147
+ baseRateBashPoints: 10,
148
+ expectedBpAttendeesAtBooking: 30,
149
+ maxBillableBashPoints: 400,
150
+ snapshots: baseSnaps,
151
+ });
152
+ expect(r.bpTotal).toBe(400);
153
+ expect(r.cappedBp).toBe(true);
154
+ });
155
+ it("returns all zeros when neither side has a rate", () => {
156
+ const r = computeEventPromoterMixedSettlement({
157
+ snapshots: baseSnaps,
158
+ });
159
+ expect(r.usdTotalCents).toBe(0);
160
+ expect(r.usdDeltaCents).toBe(0);
161
+ expect(r.bpTotal).toBe(0);
162
+ expect(r.bpDelta).toBe(0);
163
+ });
164
+ });
165
+ describe("resolveBashPointsPayoutSources", () => {
166
+ it("HostWallet path drains wallet only", () => {
167
+ expect(resolveBashPointsPayoutSources({
168
+ source: "HostWallet",
169
+ payoutBp: 100,
170
+ hostWalletBp: 500,
171
+ bashPoolBp: 9999, // ignored
172
+ })).toEqual({
173
+ fromPoolBp: 0,
174
+ fromWalletBp: 100,
175
+ shortfallBp: 0,
176
+ walletDebited: true,
177
+ });
178
+ });
179
+ it("HostWallet path with insufficient wallet returns shortfall", () => {
180
+ expect(resolveBashPointsPayoutSources({
181
+ source: "HostWallet",
182
+ payoutBp: 100,
183
+ hostWalletBp: 60,
184
+ })).toEqual({
185
+ fromPoolBp: 0,
186
+ fromWalletBp: 60,
187
+ shortfallBp: 40,
188
+ walletDebited: true,
189
+ });
190
+ });
191
+ it("BashBpPool drains pool first, wallet covers the rest", () => {
192
+ expect(resolveBashPointsPayoutSources({
193
+ source: "BashBpPool",
194
+ payoutBp: 100,
195
+ hostWalletBp: 500,
196
+ bashPoolBp: 70,
197
+ })).toEqual({
198
+ fromPoolBp: 70,
199
+ fromWalletBp: 30,
200
+ shortfallBp: 0,
201
+ walletDebited: true,
202
+ });
203
+ });
204
+ it("BashBpPool fully covered by pool leaves wallet untouched", () => {
205
+ expect(resolveBashPointsPayoutSources({
206
+ source: "BashBpPool",
207
+ payoutBp: 50,
208
+ hostWalletBp: 500,
209
+ bashPoolBp: 100,
210
+ })).toEqual({
211
+ fromPoolBp: 50,
212
+ fromWalletBp: 0,
213
+ shortfallBp: 0,
214
+ walletDebited: false,
215
+ });
216
+ });
217
+ it("BashBpPool with empty pool falls through to wallet", () => {
218
+ expect(resolveBashPointsPayoutSources({
219
+ source: "BashBpPool",
220
+ payoutBp: 100,
221
+ hostWalletBp: 50,
222
+ bashPoolBp: 0,
223
+ })).toEqual({
224
+ fromPoolBp: 0,
225
+ fromWalletBp: 50,
226
+ shortfallBp: 50,
227
+ walletDebited: true,
228
+ });
229
+ });
230
+ it("clamps negative inputs to zero", () => {
231
+ expect(resolveBashPointsPayoutSources({
232
+ source: "HostWallet",
233
+ payoutBp: -10,
234
+ hostWalletBp: -5,
235
+ })).toEqual({
236
+ fromPoolBp: 0,
237
+ fromWalletBp: 0,
238
+ shortfallBp: 0,
239
+ walletDebited: false,
240
+ });
241
+ });
242
+ });
243
+ //# sourceMappingURL=eventPromoterPhase3.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventPromoterPhase3.test.js","sourceRoot":"","sources":["../../../../src/utils/service/__tests__/eventPromoterPhase3.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=eventPromoterUtils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventPromoterUtils.test.d.ts","sourceRoot":"","sources":["../../../../src/utils/service/__tests__/eventPromoterUtils.test.ts"],"names":[],"mappings":""}