diff --git a/services/web/app/src/Features/Subscription/SubscriptionController.js b/services/web/app/src/Features/Subscription/SubscriptionController.js index e462cb565a..5ba6c307a8 100644 --- a/services/web/app/src/Features/Subscription/SubscriptionController.js +++ b/services/web/app/src/Features/Subscription/SubscriptionController.js @@ -300,24 +300,21 @@ function createSubscription(req, res, next) { ) } -function successfulSubscription(req, res, next) { +async function successfulSubscription(req, res) { const user = SessionManager.getSessionUser(req.session) - return SubscriptionViewModelBuilder.buildUsersSubscriptionViewModel( - user, - function (error, { personalSubscription } = {}) { - if (error) { - return next(error) - } - if (personalSubscription == null) { - res.redirect('/user/subscription/plans') - } else { - res.render('subscriptions/successful_subscription', { - title: 'thank_you', - personalSubscription, - }) - } - } - ) + const { personalSubscription } = + await SubscriptionViewModelBuilder.promises.buildUsersSubscriptionViewModel( + user + ) + + if (!personalSubscription) { + res.redirect('/user/subscription/plans') + } else { + res.render('subscriptions/successful_subscription', { + title: 'thank_you', + personalSubscription, + }) + } } function cancelSubscription(req, res, next) { @@ -585,7 +582,7 @@ module.exports = { userSubscriptionPage: expressify(userSubscriptionPage), interstitialPaymentPage: expressify(interstitialPaymentPage), createSubscription, - successfulSubscription, + successfulSubscription: expressify(successfulSubscription), cancelSubscription, canceledSubscription, cancelV1Subscription, diff --git a/services/web/test/unit/src/Subscription/SubscriptionControllerTests.js b/services/web/test/unit/src/Subscription/SubscriptionControllerTests.js index 8fff645282..3766620478 100644 --- a/services/web/test/unit/src/Subscription/SubscriptionControllerTests.js +++ b/services/web/test/unit/src/Subscription/SubscriptionControllerTests.js @@ -381,31 +381,26 @@ describe('SubscriptionController', function () { }) describe('successfulSubscription', function () { - it('without a personnal subscription', function (done) { - this.SubscriptionViewModelBuilder.buildUsersSubscriptionViewModel.callsArgWith( - 1, - null, + it('without a personal subscription', function (done) { + this.SubscriptionViewModelBuilder.promises.buildUsersSubscriptionViewModel.resolves( {} ) - this.res.callback = () => { - assert.equal(this.res.redirectedTo, '/user/subscription/plans') + this.res.redirect = url => { + url.should.equal('/user/subscription/plans') done() } this.SubscriptionController.successfulSubscription(this.req, this.res) }) - it('with a personnal subscription', function (done) { - this.SubscriptionViewModelBuilder.buildUsersSubscriptionViewModel.callsArgWith( - 1, - null, - { personalSubscription: 'foo' } + it('with a personal subscription', function (done) { + this.SubscriptionViewModelBuilder.promises.buildUsersSubscriptionViewModel.resolves( + { + personalSubscription: 'foo', + } ) - this.res.callback = () => { - assert.equal( - this.res.renderedTemplate, - 'subscriptions/successful_subscription' - ) - assert.deepEqual(this.res.renderedVariables, { + this.res.render = (url, variables) => { + url.should.equal('subscriptions/successful_subscription') + assert.deepEqual(variables, { title: 'thank_you', personalSubscription: 'foo', }) @@ -414,20 +409,18 @@ describe('SubscriptionController', function () { this.SubscriptionController.successfulSubscription(this.req, this.res) }) - it('with an error', function () { - const next = sinon.stub() - const error = new Error('test') - this.SubscriptionViewModelBuilder.buildUsersSubscriptionViewModel.callsArgWith( - 1, - error, + it('with an error', function (done) { + this.SubscriptionViewModelBuilder.promises.buildUsersSubscriptionViewModel.resolves( undefined ) this.SubscriptionController.successfulSubscription( this.req, this.res, - next + error => { + assert.isNotNull(error) + done() + } ) - sinon.assert.calledWith(next, error) }) })