@bash-app/bash-common 30.276.0 → 30.277.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.
- package/dist/definitions.d.ts +2 -0
- package/dist/definitions.d.ts.map +1 -1
- package/dist/definitions.js.map +1 -1
- package/dist/extendedSchemas.d.ts +5 -0
- package/dist/extendedSchemas.d.ts.map +1 -1
- package/dist/extendedSchemas.js.map +1 -1
- package/dist/utils/__tests__/paymentUtils.test.js +62 -8
- package/dist/utils/__tests__/paymentUtils.test.js.map +1 -1
- package/dist/utils/__tests__/recurrenceUtils.test.js +82 -1
- package/dist/utils/__tests__/recurrenceUtils.test.js.map +1 -1
- package/dist/utils/paymentUtils.d.ts +46 -0
- package/dist/utils/paymentUtils.d.ts.map +1 -1
- package/dist/utils/paymentUtils.js +77 -17
- package/dist/utils/paymentUtils.js.map +1 -1
- package/dist/utils/recurrenceUtils.d.ts +18 -0
- package/dist/utils/recurrenceUtils.d.ts.map +1 -1
- package/dist/utils/recurrenceUtils.js +70 -0
- package/dist/utils/recurrenceUtils.js.map +1 -1
- package/dist/utils/service/serviceBookingTypes.d.ts +1 -1
- package/dist/utils/service/serviceBookingTypes.d.ts.map +1 -1
- package/package.json +1 -1
- package/prisma/schema.prisma +28 -1
- package/src/definitions.ts +2 -0
- package/src/extendedSchemas.ts +5 -0
- package/src/utils/__tests__/paymentUtils.test.ts +104 -8
- package/src/utils/__tests__/recurrenceUtils.test.ts +99 -0
- package/src/utils/paymentUtils.ts +123 -20
- package/src/utils/recurrenceUtils.ts +104 -0
- package/src/utils/service/serviceBookingTypes.ts +3 -0
|
@@ -2,6 +2,44 @@ import { RecurringFrequency } from "@prisma/client";
|
|
|
2
2
|
import { DateTime } from "luxon";
|
|
3
3
|
import { dateTimeFromDate, dateTimeSetTime, dayOfWeekGetIdx, LUXON_DATETIME_FORMAT_ISO_LIKE, } from "./luxonUtils.js";
|
|
4
4
|
import { compareDateTime } from "./dateTimeUtils.js";
|
|
5
|
+
/**
|
|
6
|
+
* Stable key for an occurrence within a series. Both the generator and the
|
|
7
|
+
* skip/move persistence must derive the key the same way, so callers should use this.
|
|
8
|
+
*/
|
|
9
|
+
export function occurrenceOverrideKey(occurrenceStart) {
|
|
10
|
+
const dt = DateTime.isDateTime(occurrenceStart)
|
|
11
|
+
? occurrenceStart
|
|
12
|
+
: dateTimeFromDate(occurrenceStart);
|
|
13
|
+
return dt.toFormat(LUXON_DATETIME_FORMAT_ISO_LIKE);
|
|
14
|
+
}
|
|
15
|
+
/** Safely coerce the `Recurrence.occurrenceOverrides` Json column into a typed map. */
|
|
16
|
+
export function parseOccurrenceOverrides(raw) {
|
|
17
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
18
|
+
return {};
|
|
19
|
+
const out = {};
|
|
20
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
21
|
+
if (value &&
|
|
22
|
+
typeof value === "object" &&
|
|
23
|
+
typeof value.startDateTime === "string") {
|
|
24
|
+
const v = value;
|
|
25
|
+
out[key] = {
|
|
26
|
+
startDateTime: v.startDateTime,
|
|
27
|
+
endDateTime: typeof v.endDateTime === "string" ? v.endDateTime : null,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
/** True when the host has skipped or moved at least one occurrence in the series. */
|
|
34
|
+
export function recurrenceHasOccurrenceExceptions(recurrence) {
|
|
35
|
+
if (!recurrence)
|
|
36
|
+
return false;
|
|
37
|
+
const excluded = recurrence.excludedDates ?? [];
|
|
38
|
+
if (excluded.length > 0)
|
|
39
|
+
return true;
|
|
40
|
+
const overrides = parseOccurrenceOverrides(recurrence.occurrenceOverrides);
|
|
41
|
+
return Object.keys(overrides).length > 0;
|
|
42
|
+
}
|
|
5
43
|
export function getRecurringBashEventPossibleDateTimes(startDateTime, recurrence) {
|
|
6
44
|
return getRecurringBashEventPossibleDatesTimesInternal(startDateTime, recurrence, true);
|
|
7
45
|
}
|
|
@@ -42,6 +80,10 @@ function getRecurringBashEventPossibleDatesTimesInternal(startDateTime, recurren
|
|
|
42
80
|
if (recurrence.repeatCount && recurrence.repeatCount > 0) {
|
|
43
81
|
recurrenceDates = recurrenceDates.slice(0, recurrence.repeatCount);
|
|
44
82
|
}
|
|
83
|
+
// Apply per-occurrence exceptions against the original generated instants:
|
|
84
|
+
// 1) drop occurrences the host removed (excludedDates)
|
|
85
|
+
// 2) move occurrences the host rescheduled (occurrenceOverrides)
|
|
86
|
+
recurrenceDates = applyOccurrenceExceptions(recurrenceDates, recurrence);
|
|
45
87
|
return recurrenceDates
|
|
46
88
|
.map((date) => date.toFormat(LUXON_DATETIME_FORMAT_ISO_LIKE))
|
|
47
89
|
.sort()
|
|
@@ -55,6 +97,34 @@ function getRecurringBashEventPossibleDatesTimesInternal(startDateTime, recurren
|
|
|
55
97
|
}
|
|
56
98
|
});
|
|
57
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Remove skipped occurrences and apply rescheduled (moved) occurrences. Matching is by
|
|
102
|
+
* the original occurrence's `LUXON_DATETIME_FORMAT_ISO_LIKE` key so it survives the
|
|
103
|
+
* format→reparse round-trip the generator already does.
|
|
104
|
+
*/
|
|
105
|
+
function applyOccurrenceExceptions(occurrences, recurrence) {
|
|
106
|
+
const excludedKeys = new Set(((recurrence.excludedDates) ?? []).map((d) => occurrenceOverrideKey(d)));
|
|
107
|
+
const overrides = parseOccurrenceOverrides(recurrence.occurrenceOverrides);
|
|
108
|
+
if (excludedKeys.size === 0 && Object.keys(overrides).length === 0) {
|
|
109
|
+
return occurrences;
|
|
110
|
+
}
|
|
111
|
+
const result = [];
|
|
112
|
+
for (const occ of occurrences) {
|
|
113
|
+
const key = occurrenceOverrideKey(occ);
|
|
114
|
+
if (excludedKeys.has(key))
|
|
115
|
+
continue;
|
|
116
|
+
const override = overrides[key];
|
|
117
|
+
if (override?.startDateTime) {
|
|
118
|
+
const moved = dateTimeFromDate(new Date(override.startDateTime));
|
|
119
|
+
if (moved.isValid) {
|
|
120
|
+
result.push(moved);
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
result.push(occ);
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
58
128
|
/**
|
|
59
129
|
* Get the daily recurring dates
|
|
60
130
|
* @param beginningDateTime The beginning DateTime of the event, adjusted to be no earlier than now.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recurrenceUtils.js","sourceRoot":"","sources":["../../src/utils/recurrenceUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recurrenceUtils.js","sourceRoot":"","sources":["../../src/utils/recurrenceUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export type ServiceBookingFeeBase = Omit<ServiceBookingFeeExt, "id" | "serviceBo
|
|
|
7
7
|
export type ServiceBookingPriceBreakdownBase = Omit<ServiceBookingPriceBreakdownExt, "id" | "serviceBookingDayId" | "serviceBookingDay">;
|
|
8
8
|
export type ServiceBookingDayBase = Omit<ServiceBookingDayExt, "id" | "serviceBookingRequestId" | "serviceBookingRequest">;
|
|
9
9
|
export type ServiceBookingBase = Pick<ServiceBookingExt, "bookedDays" | "timezone" | "additionalFees">;
|
|
10
|
-
export type ServiceBookingRequiredData = MakeNullablePropsOptional<MakeOptional<ServiceBookingExt, "id" | "isVendorBid" | "bashEventId" | "vendorEventDetails" | "serviceId" | "service" | "forUserId" | "forUser" | "creatorId" | "creator" | "checkout" | "settlementStatus" | "settlementAttempts">>;
|
|
10
|
+
export type ServiceBookingRequiredData = MakeNullablePropsOptional<MakeOptional<ServiceBookingExt, "id" | "isVendorBid" | "bashEventId" | "vendorEventDetails" | "serviceId" | "service" | "forUserId" | "forUser" | "creatorId" | "creator" | "checkout" | "settlementStatus" | "settlementAttempts" | "rescheduleStatus">>;
|
|
11
11
|
export type ServiceBookingAddonBaseT = ServiceBookingAddOnBase;
|
|
12
12
|
export type ServiceBookingPackageBaseT = ServiceBookingPackageBase;
|
|
13
13
|
export type ServiceBookingFeeBaseT = ServiceBookingFeeBase;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceBookingTypes.d.ts","sourceRoot":"","sources":["../../../src/utils/service/serviceBookingTypes.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,+BAA+B,EAC/B,oBAAoB,EAGpB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE1E,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,sBAAsB,EACpB,IAAI,GACJ,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,CACnB,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,sBAAsB,EACpB,IAAI,GACJ,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,CACnB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,oBAAoB,EAClB,IAAI,GACJ,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,CACnB,CAAC;AACF,MAAM,MAAM,gCAAgC,GAAG,IAAI,CACjD,+BAA+B,EAC/B,IAAI,GAAG,qBAAqB,GAAG,mBAAmB,CACnD,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,oBAAoB,EACpB,IAAI,GAAG,yBAAyB,GAAG,uBAAuB,CAC3D,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,iBAAiB,EACjB,YAAY,GAAG,UAAU,GAAG,gBAAgB,CAC7C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,yBAAyB,CAChE,YAAY,CACV,iBAAiB,EACf,IAAI,GACJ,aAAa,GACb,aAAa,GACb,oBAAoB,GACpB,WAAW,GACX,SAAS,GACT,WAAW,GACX,SAAS,GACT,WAAW,GACX,SAAS,GACT,UAAU,GAGV,kBAAkB,GAClB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"serviceBookingTypes.d.ts","sourceRoot":"","sources":["../../../src/utils/service/serviceBookingTypes.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,+BAA+B,EAC/B,oBAAoB,EAGpB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE1E,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,sBAAsB,EACpB,IAAI,GACJ,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,CACnB,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,sBAAsB,EACpB,IAAI,GACJ,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,CACnB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,oBAAoB,EAClB,IAAI,GACJ,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,CACnB,CAAC;AACF,MAAM,MAAM,gCAAgC,GAAG,IAAI,CACjD,+BAA+B,EAC/B,IAAI,GAAG,qBAAqB,GAAG,mBAAmB,CACnD,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,oBAAoB,EACpB,IAAI,GAAG,yBAAyB,GAAG,uBAAuB,CAC3D,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,iBAAiB,EACjB,YAAY,GAAG,UAAU,GAAG,gBAAgB,CAC7C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,yBAAyB,CAChE,YAAY,CACV,iBAAiB,EACf,IAAI,GACJ,aAAa,GACb,aAAa,GACb,oBAAoB,GACpB,WAAW,GACX,SAAS,GACT,WAAW,GACX,SAAS,GACT,WAAW,GACX,SAAS,GACT,UAAU,GAGV,kBAAkB,GAClB,oBAAoB,GAGpB,kBAAkB,CACrB,CACF,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAC/D,MAAM,MAAM,0BAA0B,GAAG,yBAAyB,CAAC;AACnE,MAAM,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAC3D,MAAM,MAAM,iCAAiC,GAAG,IAAI,CAClD,gCAAgC,EAChC,WAAW,GAAG,SAAS,CACxB,GAAG;IACF,aAAa,EAAE,cAAc,CAAC;CAC/B,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,qBAAqB,EACrB,WAAW,GAAG,SAAS,CACxB,GAAG;IACF,aAAa,EAAE,cAAc,CAAC;CAC/B,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,CAAC"}
|
package/package.json
CHANGED
package/prisma/schema.prisma
CHANGED
|
@@ -704,6 +704,8 @@ model BashEvent {
|
|
|
704
704
|
country String?
|
|
705
705
|
/// When true, street/place/full location and map pin are hidden until public reveal or gated audience.
|
|
706
706
|
hideLocation Boolean @default(false)
|
|
707
|
+
/// When false, the map is hidden on the bash detail page (address link may still show).
|
|
708
|
+
showMap Boolean @default(true)
|
|
707
709
|
/// Freeform area hint shown to everyone when hideLocation (e.g. "Lower East Side").
|
|
708
710
|
publicAreaHint String?
|
|
709
711
|
locationRevealAudience LocationRevealAudience @default(TicketHolders)
|
|
@@ -733,7 +735,7 @@ model BashEvent {
|
|
|
733
735
|
allowDonations Boolean? @default(false)
|
|
734
736
|
suggestedDonationAmount Int?
|
|
735
737
|
donationDetails String?
|
|
736
|
-
absorbDonationFees Boolean @default(
|
|
738
|
+
absorbDonationFees Boolean @default(true)
|
|
737
739
|
absorbTicketFees Boolean @default(false)
|
|
738
740
|
/// Phase 1 of unified-pricing roadmap: governs where PER_BASHPOINTS_ATTENDEE
|
|
739
741
|
/// settlements are paid from. `HostWallet` (default) pays directly from the
|
|
@@ -2339,6 +2341,11 @@ model Recurrence {
|
|
|
2339
2341
|
repeatOnDays DayOfWeek[]
|
|
2340
2342
|
repeatOnDayOfMonth Int?
|
|
2341
2343
|
repeatYearlyDate DateTime?
|
|
2344
|
+
// Per-occurrence exceptions for the computed series (no occurrence rows are materialized):
|
|
2345
|
+
// dates the host removed from the series (matched against the generated occurrence start instants).
|
|
2346
|
+
excludedDates DateTime[]
|
|
2347
|
+
// Per-occurrence date/time moves: JSON map of original-occurrence ISO start -> { startDateTime, endDateTime? }.
|
|
2348
|
+
occurrenceOverrides Json?
|
|
2342
2349
|
createdAt DateTime @default(now())
|
|
2343
2350
|
updatedAt DateTime @updatedAt
|
|
2344
2351
|
bashEvent BashEvent @relation(fields: [bashEventId], references: [id], onDelete: Cascade)
|
|
@@ -2670,6 +2677,8 @@ model User {
|
|
|
2670
2677
|
/// Preferred processor for dual-rail onboarding (optional; legacy Stripe fields remain source of truth until fully migrated).
|
|
2671
2678
|
paymentProvider PaymentProvider @default(STRIPE)
|
|
2672
2679
|
isSuperUser Boolean @default(false)
|
|
2680
|
+
/// Enterprise: super-users may set event feeHandling to GuestPays/Split for this host.
|
|
2681
|
+
allowGuestFeePassThrough Boolean @default(false)
|
|
2673
2682
|
isSuspended Boolean @default(false)
|
|
2674
2683
|
intent UserIntent?
|
|
2675
2684
|
signupSource String? // e.g. 'jamwith', 'mixlog', 'organic' for attribution
|
|
@@ -3155,6 +3164,8 @@ model UserPreferences {
|
|
|
3155
3164
|
autoDetectLocation Boolean @default(false)
|
|
3156
3165
|
recentSearches String[] @default([])
|
|
3157
3166
|
expandedSections String[] @default([])
|
|
3167
|
+
/// Homepage event category rows pinned to the top of Upcoming Events (bashType keys)
|
|
3168
|
+
pinnedHomepageSections String[] @default([])
|
|
3158
3169
|
preferredCurrency String @default("USD")
|
|
3159
3170
|
savePaymentInfo Boolean @default(false)
|
|
3160
3171
|
showEventPrices Boolean @default(true)
|
|
@@ -5021,6 +5032,14 @@ model ServiceBooking {
|
|
|
5021
5032
|
settlementDisputedAt DateTime?
|
|
5022
5033
|
// When the delta refund actually lands at the issuing bank.
|
|
5023
5034
|
refundedOn DateTime?
|
|
5035
|
+
// Host-initiated reschedule: when the bash date/time changes we sync the booked
|
|
5036
|
+
// days to the new date (assume-accept) and ask the provider to confirm or reject.
|
|
5037
|
+
// Reject cancels the booking with a full host refund; silence keeps the new date.
|
|
5038
|
+
rescheduleStatus ServiceBookingRescheduleStatus @default(None)
|
|
5039
|
+
rescheduleRequestedOn DateTime?
|
|
5040
|
+
rescheduleDecisionOn DateTime?
|
|
5041
|
+
reschedulePrevStartDate DateTime?
|
|
5042
|
+
reschedulePrevEndDate DateTime?
|
|
5024
5043
|
notification Notification[]
|
|
5025
5044
|
bashEvent BashEvent? @relation(fields: [bashEventId], references: [id])
|
|
5026
5045
|
creator User @relation("BookingCreator", fields: [creatorId], references: [id])
|
|
@@ -7551,6 +7570,14 @@ enum ServiceBookingStatus {
|
|
|
7551
7570
|
Canceled
|
|
7552
7571
|
}
|
|
7553
7572
|
|
|
7573
|
+
// Provider's response to a host-initiated bash date change.
|
|
7574
|
+
enum ServiceBookingRescheduleStatus {
|
|
7575
|
+
None
|
|
7576
|
+
Pending
|
|
7577
|
+
Accepted
|
|
7578
|
+
Rejected
|
|
7579
|
+
}
|
|
7580
|
+
|
|
7554
7581
|
enum ServiceBookingType {
|
|
7555
7582
|
Request
|
|
7556
7583
|
Instant
|
package/src/definitions.ts
CHANGED
|
@@ -1077,6 +1077,8 @@ export interface StripeConfirmPaymentResult {
|
|
|
1077
1077
|
numberOfTickets: number;
|
|
1078
1078
|
/** Sum of tier prices × qty (cents), for client-side BashPoints purchase-reward estimate */
|
|
1079
1079
|
ticketsSubtotalCents?: number;
|
|
1080
|
+
/** Actual amount charged to the guest (cents), including pass-through fees when applicable */
|
|
1081
|
+
totalPaidCents?: number;
|
|
1080
1082
|
}
|
|
1081
1083
|
|
|
1082
1084
|
export interface IMediaUploadArgs {
|
package/src/extendedSchemas.ts
CHANGED
|
@@ -424,6 +424,11 @@ export interface BashEventExt extends Omit<
|
|
|
424
424
|
* Optional because not every endpoint that returns BashEventExt resolves the host org.
|
|
425
425
|
*/
|
|
426
426
|
isVerifiedNonprofitHost?: boolean;
|
|
427
|
+
/**
|
|
428
|
+
* Computed at request time: true when guests pay exactly the listed ticket price
|
|
429
|
+
* (host absorbs processing, no external checkout). Drives "No fees for attendees" badge.
|
|
430
|
+
*/
|
|
431
|
+
guestCheckoutHasNoAddedFees?: boolean;
|
|
427
432
|
}
|
|
428
433
|
|
|
429
434
|
/**
|
|
@@ -20,6 +20,11 @@ import {
|
|
|
20
20
|
calculateBashPlatformFeeCents,
|
|
21
21
|
splitBashPlatformFeeForTicketCheckout,
|
|
22
22
|
computeTicketApplicationFeeAmountCents,
|
|
23
|
+
computeGuestTicketCheckoutBreakdown,
|
|
24
|
+
guestAllInUnitPriceCents,
|
|
25
|
+
guestCheckoutHasNoAddedFees,
|
|
26
|
+
lowestGuestAllInPriceCents,
|
|
27
|
+
hostAbsorbsTicketProcessing,
|
|
23
28
|
userHasActiveBashPass,
|
|
24
29
|
getEffectiveBashPassTier,
|
|
25
30
|
getBashPassMonthlyCapRemaining,
|
|
@@ -166,7 +171,7 @@ describe("PaymentUtils - Core Functions", () => {
|
|
|
166
171
|
expect(explicitFalse).toEqual(defaulted);
|
|
167
172
|
});
|
|
168
173
|
|
|
169
|
-
test("computeTicketApplicationFeeAmountCents — verified nonprofit host: zero Bash platform,
|
|
174
|
+
test("computeTicketApplicationFeeAmountCents — verified nonprofit host: zero Bash platform, guest may pay processing when GuestPays", () => {
|
|
170
175
|
const r = computeTicketApplicationFeeAmountCents({
|
|
171
176
|
discountedSubtotalCents: 10000,
|
|
172
177
|
platformFeeEnabled: true,
|
|
@@ -177,12 +182,19 @@ describe("PaymentUtils - Core Functions", () => {
|
|
|
177
182
|
});
|
|
178
183
|
expect(r.bashPlatformTotalCents).toBe(0);
|
|
179
184
|
expect(r.guestPlatformLineCents).toBe(0);
|
|
180
|
-
expect(r.
|
|
181
|
-
|
|
185
|
+
expect(r.guestProcessingLineCents).toBe(
|
|
186
|
+
calculateStripeProcessingFeeCents(10000),
|
|
187
|
+
);
|
|
188
|
+
expect(r.totalChargedCents).toBe(
|
|
189
|
+
10000 + calculateStripeProcessingFeeCents(10000),
|
|
190
|
+
);
|
|
191
|
+
expect(r.stripeProcessingCents).toBe(
|
|
192
|
+
calculateStripeProcessingFeeCents(r.totalChargedCents),
|
|
193
|
+
);
|
|
182
194
|
expect(r.applicationFeeAmountCents).toBe(r.stripeProcessingCents);
|
|
183
195
|
});
|
|
184
196
|
|
|
185
|
-
test("computeTicketApplicationFeeAmountCents — verified nonprofit waiver overrides
|
|
197
|
+
test("computeTicketApplicationFeeAmountCents — verified nonprofit waiver overrides platform on GuestPays", () => {
|
|
186
198
|
const nonNonprofit = computeTicketApplicationFeeAmountCents({
|
|
187
199
|
discountedSubtotalCents: 5000,
|
|
188
200
|
platformFeeEnabled: true,
|
|
@@ -192,7 +204,12 @@ describe("PaymentUtils - Core Functions", () => {
|
|
|
192
204
|
});
|
|
193
205
|
expect(nonNonprofit.bashPlatformTotalCents).toBe(250);
|
|
194
206
|
expect(nonNonprofit.guestPlatformLineCents).toBe(250);
|
|
195
|
-
expect(nonNonprofit.
|
|
207
|
+
expect(nonNonprofit.guestProcessingLineCents).toBe(
|
|
208
|
+
calculateStripeProcessingFeeCents(5000),
|
|
209
|
+
);
|
|
210
|
+
expect(nonNonprofit.totalChargedCents).toBe(
|
|
211
|
+
5000 + 250 + calculateStripeProcessingFeeCents(5000),
|
|
212
|
+
);
|
|
196
213
|
|
|
197
214
|
const nonprofit = computeTicketApplicationFeeAmountCents({
|
|
198
215
|
discountedSubtotalCents: 5000,
|
|
@@ -204,8 +221,15 @@ describe("PaymentUtils - Core Functions", () => {
|
|
|
204
221
|
});
|
|
205
222
|
expect(nonprofit.bashPlatformTotalCents).toBe(0);
|
|
206
223
|
expect(nonprofit.guestPlatformLineCents).toBe(0);
|
|
207
|
-
expect(nonprofit.
|
|
208
|
-
|
|
224
|
+
expect(nonprofit.guestProcessingLineCents).toBe(
|
|
225
|
+
calculateStripeProcessingFeeCents(5000),
|
|
226
|
+
);
|
|
227
|
+
expect(nonprofit.totalChargedCents).toBe(
|
|
228
|
+
5000 + calculateStripeProcessingFeeCents(5000),
|
|
229
|
+
);
|
|
230
|
+
expect(nonprofit.applicationFeeAmountCents).toBe(
|
|
231
|
+
nonprofit.stripeProcessingCents,
|
|
232
|
+
);
|
|
209
233
|
});
|
|
210
234
|
|
|
211
235
|
test("computeTicketApplicationFeeAmountCents — verified nonprofit waiver beats any membership-tier math", () => {
|
|
@@ -225,7 +249,17 @@ describe("PaymentUtils - Core Functions", () => {
|
|
|
225
249
|
});
|
|
226
250
|
expect(r.bashPlatformTotalCents).toBe(0);
|
|
227
251
|
expect(r.guestPlatformLineCents).toBe(0);
|
|
228
|
-
|
|
252
|
+
if (tier.feeHandling === "HostAbsorbs") {
|
|
253
|
+
expect(r.guestProcessingLineCents).toBe(0);
|
|
254
|
+
expect(r.totalChargedCents).toBe(12345);
|
|
255
|
+
} else {
|
|
256
|
+
expect(r.guestProcessingLineCents).toBe(
|
|
257
|
+
calculateStripeProcessingFeeCents(12345),
|
|
258
|
+
);
|
|
259
|
+
expect(r.totalChargedCents).toBe(
|
|
260
|
+
12345 + calculateStripeProcessingFeeCents(12345),
|
|
261
|
+
);
|
|
262
|
+
}
|
|
229
263
|
expect(r.applicationFeeAmountCents).toBe(r.stripeProcessingCents);
|
|
230
264
|
}
|
|
231
265
|
});
|
|
@@ -389,6 +423,68 @@ describe("PaymentUtils - Core Functions", () => {
|
|
|
389
423
|
});
|
|
390
424
|
});
|
|
391
425
|
|
|
426
|
+
describe("guest ticket checkout breakdown (No Fees for Attendees)", () => {
|
|
427
|
+
test("HostAbsorbs — $20 ticket → $20 due, no processing line", () => {
|
|
428
|
+
const r = computeGuestTicketCheckoutBreakdown({
|
|
429
|
+
discountedSubtotalCents: 2000,
|
|
430
|
+
platformFeeEnabled: false,
|
|
431
|
+
platformFeeRate: 0.03,
|
|
432
|
+
feeHandling: "HostAbsorbs",
|
|
433
|
+
bashPassWaivesGuestFee: false,
|
|
434
|
+
});
|
|
435
|
+
expect(r.ticketSubtotalCents).toBe(2000);
|
|
436
|
+
expect(r.guestProcessingLineCents).toBe(0);
|
|
437
|
+
expect(r.totalDueCents).toBe(2000);
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
test("GuestPays — $20 ticket → $20.88 all-in with processing line on subtotal", () => {
|
|
441
|
+
const processing = calculateStripeProcessingFeeCents(2000);
|
|
442
|
+
expect(processing).toBe(88);
|
|
443
|
+
const r = computeGuestTicketCheckoutBreakdown({
|
|
444
|
+
discountedSubtotalCents: 2000,
|
|
445
|
+
platformFeeEnabled: false,
|
|
446
|
+
platformFeeRate: 0.03,
|
|
447
|
+
feeHandling: "GuestPays",
|
|
448
|
+
bashPassWaivesGuestFee: false,
|
|
449
|
+
});
|
|
450
|
+
expect(r.guestProcessingLineCents).toBe(88);
|
|
451
|
+
expect(r.totalDueCents).toBe(2088);
|
|
452
|
+
});
|
|
453
|
+
|
|
454
|
+
test("guestCheckoutHasNoAddedFees and display helpers", () => {
|
|
455
|
+
expect(
|
|
456
|
+
guestCheckoutHasNoAddedFees({ feeHandling: "HostAbsorbs" }),
|
|
457
|
+
).toBe(true);
|
|
458
|
+
expect(
|
|
459
|
+
guestCheckoutHasNoAddedFees({ feeHandling: "GuestPays" }),
|
|
460
|
+
).toBe(false);
|
|
461
|
+
expect(
|
|
462
|
+
guestCheckoutHasNoAddedFees({
|
|
463
|
+
feeHandling: "HostAbsorbs",
|
|
464
|
+
externalTicketUrl: "https://eventbrite.com/x",
|
|
465
|
+
}),
|
|
466
|
+
).toBe(false);
|
|
467
|
+
expect(hostAbsorbsTicketProcessing("HostAbsorbs")).toBe(true);
|
|
468
|
+
expect(hostAbsorbsTicketProcessing("GuestPays")).toBe(false);
|
|
469
|
+
expect(guestAllInUnitPriceCents(2000, { feeHandling: "HostAbsorbs" })).toBe(
|
|
470
|
+
2000,
|
|
471
|
+
);
|
|
472
|
+
expect(guestAllInUnitPriceCents(2000, { feeHandling: "GuestPays" })).toBe(
|
|
473
|
+
2088,
|
|
474
|
+
);
|
|
475
|
+
expect(
|
|
476
|
+
lowestGuestAllInPriceCents(
|
|
477
|
+
[
|
|
478
|
+
{ price: 5000, pricingType: "USD" },
|
|
479
|
+
{ price: 2000, pricingType: "USD" },
|
|
480
|
+
{ price: 100, pricingType: "BASHPOINTS" },
|
|
481
|
+
],
|
|
482
|
+
{ feeHandling: "HostAbsorbs" },
|
|
483
|
+
),
|
|
484
|
+
).toBe(2000);
|
|
485
|
+
});
|
|
486
|
+
});
|
|
487
|
+
|
|
392
488
|
describe("splitBashPlatformFeeForTicketCheckout edge cases", () => {
|
|
393
489
|
test("returns zeros when platform fee disabled", () => {
|
|
394
490
|
expect(
|
|
@@ -7,6 +7,8 @@ import { DateTime } from "luxon";
|
|
|
7
7
|
import {
|
|
8
8
|
getCompactRunFirstAndLastOccurrence,
|
|
9
9
|
getRecurringBashEventPossibleLuxonTimes,
|
|
10
|
+
occurrenceOverrideKey,
|
|
11
|
+
parseOccurrenceOverrides,
|
|
10
12
|
} from "../recurrenceUtils.js";
|
|
11
13
|
|
|
12
14
|
function buildRecurrence(partial: Partial<Recurrence>): Recurrence {
|
|
@@ -94,3 +96,100 @@ describe("getCompactRunFirstAndLastOccurrence", () => {
|
|
|
94
96
|
).toBeNull();
|
|
95
97
|
});
|
|
96
98
|
});
|
|
99
|
+
|
|
100
|
+
describe("occurrenceOverrideKey", () => {
|
|
101
|
+
it("returns the same key for Date and ISO string of the same instant", () => {
|
|
102
|
+
const iso = "2026-06-15T20:00:00.000Z";
|
|
103
|
+
expect(occurrenceOverrideKey(new Date(iso))).toBe(
|
|
104
|
+
occurrenceOverrideKey(iso)
|
|
105
|
+
);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
describe("parseOccurrenceOverrides", () => {
|
|
110
|
+
it("returns empty object for nullish or non-object input", () => {
|
|
111
|
+
expect(parseOccurrenceOverrides(null)).toEqual({});
|
|
112
|
+
expect(parseOccurrenceOverrides(undefined)).toEqual({});
|
|
113
|
+
expect(parseOccurrenceOverrides([])).toEqual({});
|
|
114
|
+
expect(parseOccurrenceOverrides("bad")).toEqual({});
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it("parses valid override entries and ignores malformed ones", () => {
|
|
118
|
+
expect(
|
|
119
|
+
parseOccurrenceOverrides({
|
|
120
|
+
"Jun 15, 2026 8:00 PM": {
|
|
121
|
+
startDateTime: "2026-06-16T20:00:00.000Z",
|
|
122
|
+
endDateTime: "2026-06-16T22:00:00.000Z",
|
|
123
|
+
},
|
|
124
|
+
bad: { noStart: true },
|
|
125
|
+
empty: null,
|
|
126
|
+
})
|
|
127
|
+
).toEqual({
|
|
128
|
+
"Jun 15, 2026 8:00 PM": {
|
|
129
|
+
startDateTime: "2026-06-16T20:00:00.000Z",
|
|
130
|
+
endDateTime: "2026-06-16T22:00:00.000Z",
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
describe("occurrence exceptions in getRecurringBashEventPossibleLuxonTimes", () => {
|
|
137
|
+
it("drops skipped occurrences from excludedDates", () => {
|
|
138
|
+
const base = DateTime.utc().plus({ weeks: 2 }).startOf("day");
|
|
139
|
+
const start = base
|
|
140
|
+
.set({ hour: 20, minute: 0, second: 0, millisecond: 0 })
|
|
141
|
+
.toJSDate();
|
|
142
|
+
const recurrence = buildRecurrence({
|
|
143
|
+
frequency: RecurringFrequency.Daily,
|
|
144
|
+
interval: 1,
|
|
145
|
+
repeatCount: 3,
|
|
146
|
+
endsType: RecurrenceEndsType.AFTER_COUNT,
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
const baseline = getRecurringBashEventPossibleLuxonTimes(start, recurrence);
|
|
150
|
+
expect(baseline).toHaveLength(3);
|
|
151
|
+
|
|
152
|
+
const skipped = baseline[1];
|
|
153
|
+
const withSkip = buildRecurrence({
|
|
154
|
+
...recurrence,
|
|
155
|
+
excludedDates: [skipped.toJSDate()],
|
|
156
|
+
} as Partial<Recurrence>);
|
|
157
|
+
|
|
158
|
+
const result = getRecurringBashEventPossibleLuxonTimes(start, withSkip);
|
|
159
|
+
expect(result).toHaveLength(2);
|
|
160
|
+
expect(result.map((d) => d.toMillis())).not.toContain(skipped.toMillis());
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
it("applies moved occurrences from occurrenceOverrides", () => {
|
|
164
|
+
const base = DateTime.utc().plus({ weeks: 2 }).startOf("day");
|
|
165
|
+
const start = base
|
|
166
|
+
.set({ hour: 20, minute: 0, second: 0, millisecond: 0 })
|
|
167
|
+
.toJSDate();
|
|
168
|
+
const recurrence = buildRecurrence({
|
|
169
|
+
frequency: RecurringFrequency.Daily,
|
|
170
|
+
interval: 1,
|
|
171
|
+
repeatCount: 3,
|
|
172
|
+
endsType: RecurrenceEndsType.AFTER_COUNT,
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
const baseline = getRecurringBashEventPossibleLuxonTimes(start, recurrence);
|
|
176
|
+
const original = baseline[1];
|
|
177
|
+
const movedStart = original.plus({ days: 2 }).toISO();
|
|
178
|
+
const withMove = buildRecurrence({
|
|
179
|
+
...recurrence,
|
|
180
|
+
occurrenceOverrides: {
|
|
181
|
+
[occurrenceOverrideKey(original)]: {
|
|
182
|
+
startDateTime: movedStart!,
|
|
183
|
+
endDateTime: null,
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
} as Partial<Recurrence>);
|
|
187
|
+
|
|
188
|
+
const result = getRecurringBashEventPossibleLuxonTimes(start, withMove);
|
|
189
|
+
expect(result).toHaveLength(3);
|
|
190
|
+
expect(result.map((d) => d.toMillis())).toContain(
|
|
191
|
+
DateTime.fromISO(movedStart!).toMillis()
|
|
192
|
+
);
|
|
193
|
+
expect(result.map((d) => d.toMillis())).not.toContain(original.toMillis());
|
|
194
|
+
});
|
|
195
|
+
});
|