Refactor successful subcription to use async/await (#8377)

GitOrigin-RevId: 5748486848c6e0576c974e5595acbcdee3daf7f3
This commit is contained in:
M Fahru
2022-06-15 08:04:54 +00:00
committed by Copybot
parent 55ba986d60
commit ea8dfdcc61
2 changed files with 33 additions and 43 deletions
@@ -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) const user = SessionManager.getSessionUser(req.session)
return SubscriptionViewModelBuilder.buildUsersSubscriptionViewModel( const { personalSubscription } =
user, await SubscriptionViewModelBuilder.promises.buildUsersSubscriptionViewModel(
function (error, { personalSubscription } = {}) { user
if (error) { )
return next(error)
} if (!personalSubscription) {
if (personalSubscription == null) { res.redirect('/user/subscription/plans')
res.redirect('/user/subscription/plans') } else {
} else { res.render('subscriptions/successful_subscription', {
res.render('subscriptions/successful_subscription', { title: 'thank_you',
title: 'thank_you', personalSubscription,
personalSubscription, })
}) }
}
}
)
} }
function cancelSubscription(req, res, next) { function cancelSubscription(req, res, next) {
@@ -585,7 +582,7 @@ module.exports = {
userSubscriptionPage: expressify(userSubscriptionPage), userSubscriptionPage: expressify(userSubscriptionPage),
interstitialPaymentPage: expressify(interstitialPaymentPage), interstitialPaymentPage: expressify(interstitialPaymentPage),
createSubscription, createSubscription,
successfulSubscription, successfulSubscription: expressify(successfulSubscription),
cancelSubscription, cancelSubscription,
canceledSubscription, canceledSubscription,
cancelV1Subscription, cancelV1Subscription,
@@ -381,31 +381,26 @@ describe('SubscriptionController', function () {
}) })
describe('successfulSubscription', function () { describe('successfulSubscription', function () {
it('without a personnal subscription', function (done) { it('without a personal subscription', function (done) {
this.SubscriptionViewModelBuilder.buildUsersSubscriptionViewModel.callsArgWith( this.SubscriptionViewModelBuilder.promises.buildUsersSubscriptionViewModel.resolves(
1,
null,
{} {}
) )
this.res.callback = () => { this.res.redirect = url => {
assert.equal(this.res.redirectedTo, '/user/subscription/plans') url.should.equal('/user/subscription/plans')
done() done()
} }
this.SubscriptionController.successfulSubscription(this.req, this.res) this.SubscriptionController.successfulSubscription(this.req, this.res)
}) })
it('with a personnal subscription', function (done) { it('with a personal subscription', function (done) {
this.SubscriptionViewModelBuilder.buildUsersSubscriptionViewModel.callsArgWith( this.SubscriptionViewModelBuilder.promises.buildUsersSubscriptionViewModel.resolves(
1, {
null, personalSubscription: 'foo',
{ personalSubscription: 'foo' } }
) )
this.res.callback = () => { this.res.render = (url, variables) => {
assert.equal( url.should.equal('subscriptions/successful_subscription')
this.res.renderedTemplate, assert.deepEqual(variables, {
'subscriptions/successful_subscription'
)
assert.deepEqual(this.res.renderedVariables, {
title: 'thank_you', title: 'thank_you',
personalSubscription: 'foo', personalSubscription: 'foo',
}) })
@@ -414,20 +409,18 @@ describe('SubscriptionController', function () {
this.SubscriptionController.successfulSubscription(this.req, this.res) this.SubscriptionController.successfulSubscription(this.req, this.res)
}) })
it('with an error', function () { it('with an error', function (done) {
const next = sinon.stub() this.SubscriptionViewModelBuilder.promises.buildUsersSubscriptionViewModel.resolves(
const error = new Error('test')
this.SubscriptionViewModelBuilder.buildUsersSubscriptionViewModel.callsArgWith(
1,
error,
undefined undefined
) )
this.SubscriptionController.successfulSubscription( this.SubscriptionController.successfulSubscription(
this.req, this.req,
this.res, this.res,
next error => {
assert.isNotNull(error)
done()
}
) )
sinon.assert.calledWith(next, error)
}) })
}) })