From bd967ce1dfeb2ddb47d365dfc6b2a1c8cda22840 Mon Sep 17 00:00:00 2001 From: ilkin-overleaf <100852799+ilkin-overleaf@users.noreply.github.com> Date: Mon, 9 Dec 2024 15:22:30 +0200 Subject: [PATCH] Merge pull request #22379 from overleaf/ls-sync-with-recurly-after-mutation sync with recurly after mutate subscription GitOrigin-RevId: 451914f7bde344f82ad4523bee20f1af2297cbd8 --- .../Subscription/SubscriptionGroupHandler.js | 12 +++++++++++- .../Subscription/SubscriptionGroupHandlerTests.js | 7 +++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/services/web/app/src/Features/Subscription/SubscriptionGroupHandler.js b/services/web/app/src/Features/Subscription/SubscriptionGroupHandler.js index 087e581c33..8e48a6faf4 100644 --- a/services/web/app/src/Features/Subscription/SubscriptionGroupHandler.js +++ b/services/web/app/src/Features/Subscription/SubscriptionGroupHandler.js @@ -6,6 +6,7 @@ const { Subscription } = require('../../models/Subscription') const SessionManager = require('../Authentication/SessionManager') const RecurlyClient = require('./RecurlyClient') const PlansLocator = require('./PlansLocator') +const SubscriptionHandler = require('./SubscriptionHandler') const PLAN_UPGRADE_MAP = { group_collaborator: 'group_professional', @@ -139,8 +140,13 @@ async function previewAddSeatsSubscriptionChange(req) { } async function createAddSeatsSubscriptionChange(req) { - const { changeRequest } = await _addSeatsSubscriptionChange(req) + const { changeRequest, userId, recurlySubscription } = + await _addSeatsSubscriptionChange(req) await RecurlyClient.promises.applySubscriptionChangeRequest(changeRequest) + await SubscriptionHandler.promises.syncSubscription( + { uuid: recurlySubscription.id }, + userId + ) return { adding: req.body.adding } } @@ -187,6 +193,10 @@ async function getGroupPlanUpgradePreview(ownerId) { async function upgradeGroupPlan(ownerId) { const changeRequest = await _getGroupPlanUpgradeChangeRequest(ownerId) await RecurlyClient.promises.applySubscriptionChangeRequest(changeRequest) + await SubscriptionHandler.promises.syncSubscription( + { uuid: changeRequest.subscription.id }, + ownerId + ) } module.exports = { diff --git a/services/web/test/unit/src/Subscription/SubscriptionGroupHandlerTests.js b/services/web/test/unit/src/Subscription/SubscriptionGroupHandlerTests.js index cafb371ea5..a28d053ca2 100644 --- a/services/web/test/unit/src/Subscription/SubscriptionGroupHandlerTests.js +++ b/services/web/test/unit/src/Subscription/SubscriptionGroupHandlerTests.js @@ -48,11 +48,18 @@ describe('SubscriptionGroupHandler', function () { promises: {}, } + this.SubscriptionHandler = { + promises: { + syncSubscription: sinon.stub().resolves(), + }, + } + this.Handler = SandboxedModule.require(modulePath, { requires: { './SubscriptionUpdater': this.SubscriptionUpdater, './SubscriptionLocator': this.SubscriptionLocator, './SubscriptionController': this.SubscriptionController, + './SubscriptionHandler': this.SubscriptionHandler, '../../models/Subscription': { Subscription: this.Subscription, },