From f6ffae02a9b4ac845c080a1d07eda96bec0357b7 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 24 Jan 2023 14:21:19 +0100 Subject: [PATCH] Merge pull request #11432 from overleaf/revert-11154-tm-lg-subscription-recurly-cache-name Revert "Change property name for recurly status cache to recurlyStatus" GitOrigin-RevId: 6870e421516fd705343f3e8651d8637f791063df --- .../Subscription/SubscriptionUpdater.js | 2 +- .../SubscriptionViewModelBuilder.js | 5 +- ...0110140452_rename_recurly_cached_status.js | 53 ------------------- .../SubscriptionViewModelBuilderTests.js | 8 +-- 4 files changed, 7 insertions(+), 61 deletions(-) delete mode 100644 services/web/migrations/20230110140452_rename_recurly_cached_status.js diff --git a/services/web/app/src/Features/Subscription/SubscriptionUpdater.js b/services/web/app/src/Features/Subscription/SubscriptionUpdater.js index 5c3e4c3ae2..65d9bf7417 100644 --- a/services/web/app/src/Features/Subscription/SubscriptionUpdater.js +++ b/services/web/app/src/Features/Subscription/SubscriptionUpdater.js @@ -249,7 +249,7 @@ async function updateSubscriptionFromRecurly( subscription.recurlySubscription_id = recurlySubscription.uuid subscription.planCode = updatedPlanCode - subscription.recurlyStatus = { + subscription.recurly = { state: recurlySubscription.state, trialStartedAt: recurlySubscription.trial_started_at, trialEndsAt: recurlySubscription.trial_ends_at, diff --git a/services/web/app/src/Features/Subscription/SubscriptionViewModelBuilder.js b/services/web/app/src/Features/Subscription/SubscriptionViewModelBuilder.js index 7830517f81..84cd2e9985 100644 --- a/services/web/app/src/Features/Subscription/SubscriptionViewModelBuilder.js +++ b/services/web/app/src/Features/Subscription/SubscriptionViewModelBuilder.js @@ -193,7 +193,6 @@ function buildUsersSubscriptionViewModel(user, callback) { // Subscription DB object contains a recurly property, used to cache trial info // on the project-list. However, this can cause the wrong template to render, // if we do not have any subscription data from Recurly (recurlySubscription) - // TODO: Delete this workaround once recurly cache property name migration rolled out. if (personalSubscription) { delete personalSubscription.recurly } @@ -355,7 +354,7 @@ async function getBestSubscription(user) { individualSubscription && !individualSubscription.customAccount && individualSubscription.recurlySubscription_id && - !individualSubscription.recurlyStatus?.state + !individualSubscription.recurly?.state ) { const recurlySubscription = await RecurlyWrapper.promises.getSubscription( individualSubscription.recurlySubscription_id, @@ -481,7 +480,7 @@ function _isPlanEqualOrBetter(planA, planB) { function _getRemainingTrialDays(subscription) { const now = new Date() - const trialEndDate = subscription.recurlyStatus?.trialEndsAt + const trialEndDate = subscription.recurly?.trialEndsAt return trialEndDate && trialEndDate > now ? Math.ceil( (trialEndDate.getTime() - now.getTime()) / (24 * 60 * 60 * 1000) diff --git a/services/web/migrations/20230110140452_rename_recurly_cached_status.js b/services/web/migrations/20230110140452_rename_recurly_cached_status.js deleted file mode 100644 index 81e90457ae..0000000000 --- a/services/web/migrations/20230110140452_rename_recurly_cached_status.js +++ /dev/null @@ -1,53 +0,0 @@ -/* eslint-disable no-unused-vars */ - -const Helpers = require('./lib/helpers') - -exports.tags = ['saas'] - -exports.migrate = async client => { - const { db } = client - // 'recurly' -> 'recurlyStatus' - await db.subscriptions.updateMany( - { - $and: [ - { recurlyStatus: { $exists: false } }, - { recurly: { $exists: true } }, - ], - }, - { $rename: { recurly: 'recurlyStatus' } } - ) - // some records may have already recached the recurly status, discard old cache - await db.subscriptions.updateMany( - { - $and: [ - { recurlyStatus: { $exists: true } }, - { recurly: { $exists: true } }, - ], - }, - { $unset: { recurly: 1 } } - ) -} - -exports.rollback = async client => { - const { db } = client - // 'recurlyStatus' -> 'recurly' - await db.subscriptions.updateMany( - { - $and: [ - { recurly: { $exists: false } }, - { recurlyStatus: { $exists: true } }, - ], - }, - { $rename: { recurlyStatus: 'recurly' } } - ) - // some records may have already recached the recurly status, discard old cache - await db.subscriptions.updateMany( - { - $and: [ - { recurlyStatus: { $exists: true } }, - { recurly: { $exists: true } }, - ], - }, - { $unset: { recurlyStatus: 1 } } - ) -} diff --git a/services/web/test/unit/src/Subscription/SubscriptionViewModelBuilderTests.js b/services/web/test/unit/src/Subscription/SubscriptionViewModelBuilderTests.js index 65f019d61c..0d9fd82d1e 100644 --- a/services/web/test/unit/src/Subscription/SubscriptionViewModelBuilderTests.js +++ b/services/web/test/unit/src/Subscription/SubscriptionViewModelBuilderTests.js @@ -22,7 +22,7 @@ describe('SubscriptionViewModelBuilder', function () { planCode: this.planCode, plan: this.plan, recurlySubscription_id: this.recurlySubscription_id, - recurlyStatus: { + recurly: { state: 'active', }, } @@ -46,7 +46,7 @@ describe('SubscriptionViewModelBuilder', function () { this.groupSubscription = { planCode: this.groupPlanCode, plan: this.plan, - recurlyStatus: { + recurly: { state: 'active', }, } @@ -168,7 +168,7 @@ describe('SubscriptionViewModelBuilder', function () { it('should return a individual subscription with remaining free trial days', async function () { const threeDaysLater = new Date() threeDaysLater.setDate(threeDaysLater.getDate() + 3) - this.individualSubscription.recurlyStatus.trialEndsAt = threeDaysLater + this.individualSubscription.recurly.trialEndsAt = threeDaysLater this.SubscriptionLocator.promises.getUsersSubscription .withArgs(this.user) .resolves(this.individualSubscription) @@ -189,7 +189,7 @@ describe('SubscriptionViewModelBuilder', function () { it('should return a individual subscription with free trial on last day', async function () { const threeHoursLater = new Date() threeHoursLater.setTime(threeHoursLater.getTime() + 3 * 60 * 60 * 1000) - this.individualSubscription.recurlyStatus.trialEndsAt = threeHoursLater + this.individualSubscription.recurly.trialEndsAt = threeHoursLater this.SubscriptionLocator.promises.getUsersSubscription .withArgs(this.user) .resolves(this.individualSubscription)