mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-30 20:31:34 +02:00
Merge pull request #30826 from overleaf/oa-filter-out-once-coupons
[web] Filter out once coupons for Stripe GitOrigin-RevId: 60aad9c557632c3a3a4b5e6d578d786feaa9508f
This commit is contained in:
@@ -270,6 +270,12 @@ async function buildUsersSubscriptionViewModel(user, locale = 'en') {
|
||||
isEligibleForPause = stripePauseAssignment.variant === 'enabled'
|
||||
}
|
||||
|
||||
let activeCoupons = paymentRecord.coupons
|
||||
if (paymentRecord.subscription.service.includes('stripe')) {
|
||||
// TODO: consider using discount.coupon.valid after removing Recurly
|
||||
activeCoupons = activeCoupons.filter(ac => !ac.isSingleUse)
|
||||
}
|
||||
|
||||
personalSubscription.payment = {
|
||||
taxRate,
|
||||
billingDetailsLink:
|
||||
@@ -292,7 +298,7 @@ async function buildUsersSubscriptionViewModel(user, locale = 'en') {
|
||||
paymentRecord.subscription.trialPeriodEnd
|
||||
),
|
||||
trialEndsAt: paymentRecord.subscription.trialPeriodEnd,
|
||||
activeCoupons: paymentRecord.coupons,
|
||||
activeCoupons,
|
||||
accountEmail: paymentRecord.account.email,
|
||||
hasPastDueInvoice: paymentRecord.account.hasPastDueInvoice,
|
||||
pausedAt: paymentRecord.subscription.pausePeriodStart,
|
||||
|
||||
@@ -724,6 +724,39 @@ describe('SubscriptionViewModelBuilder', function () {
|
||||
})
|
||||
})
|
||||
|
||||
it('filters out single-use coupons for stripe subscriptions', async function (ctx) {
|
||||
ctx.paymentRecord.service = 'stripe-us'
|
||||
const foreverCoupon = {
|
||||
code: 'forever',
|
||||
name: 'Forever',
|
||||
isSingleUse: false,
|
||||
}
|
||||
const singleUseCoupon = {
|
||||
code: 'once',
|
||||
name: 'Once',
|
||||
isSingleUse: true,
|
||||
}
|
||||
ctx.Modules.hooks.fire
|
||||
.withArgs('getPaymentFromRecord', ctx.individualSubscription)
|
||||
.yields(null, [
|
||||
{
|
||||
subscription: ctx.paymentRecord,
|
||||
account: new PaymentProviderAccount({
|
||||
email: 'example@example.com',
|
||||
hasPastDueInvoice: false,
|
||||
}),
|
||||
coupons: [foreverCoupon, singleUseCoupon],
|
||||
},
|
||||
])
|
||||
const result =
|
||||
await ctx.SubscriptionViewModelBuilder.promises.buildUsersSubscriptionViewModel(
|
||||
ctx.user
|
||||
)
|
||||
assert.deepEqual(result.personalSubscription.payment.activeCoupons, [
|
||||
foreverCoupon,
|
||||
])
|
||||
})
|
||||
|
||||
describe('isEligibleForGroupPlan', function () {
|
||||
it('is false when in trial', async function (ctx) {
|
||||
const msIn24Hours = 24 * 60 * 60 * 1000
|
||||
|
||||
Reference in New Issue
Block a user