pull logic checking if user is already part of a group out of controller into handler

This commit is contained in:
Henry Oswald 2015-05-27 16:33:47 +01:00
parent 72e528e9d1
commit f27c072ae1
4 changed files with 41 additions and 9 deletions

View file

@ -41,15 +41,16 @@ module.exports =
renderGroupInvitePage: (req, res)->
subscription_id = req.params.subscription_id
user_id = req.session.user._id
licence = SubscriptionDomainAllocator.findDomainLicenceBySubscriptionId(subscription_id)
SubscriptionGroupHandler.getPopulatedListOfMembers licence.adminUser_id, (err, users)->
userInSubscription = _.find users, (user)-> user._id == req.session.user._id
if userInSubscription?
SubscriptionGroupHandler.isUserPartOfGroup user_id, licence.subscription_id, (err, partOfGroup)->
if partOfGroup
return res.redirect("/user/subscription/custom_account")
res.render "subscriptions/group/invite",
title: "Group Invitation"
subscription_id:subscription_id
licenceName:licence.name
else
res.render "subscriptions/group/invite",
title: "Group Invitation"
subscription_id:subscription_id
licenceName:licence.name
beginJoinGroup: (req, res)->
subscription_id = req.params.subscription_id

View file

@ -5,7 +5,7 @@ SubscriptionUpdater = require("./SubscriptionUpdater")
SubscriptionLocator = require("./SubscriptionLocator")
UserLocator = require("../User/UserLocator")
LimitationsManager = require("./LimitationsManager")
logger = require("logger-sharelatex")
module.exports =
@ -37,6 +37,15 @@ module.exports =
async.series jobs, (err)->
callback(err, users)
isUserPartOfGroup: (user_id, subscription_id, callback=(err, partOfGroup)->)->
SubscriptionLocator.getSubscriptionByMemberIdAndId user_id, subscription_id, (err, subscription)->
if subscription?
partOfGroup = true
else
partOfGroup = false
logger.log user_id:user_id, subscription_id:subscription_id, partOfGroup:partOfGroup, "checking if user is part of a group"
callback(err, partOfGroup)
buildUserViewModel = (user)->
u =

View file

@ -18,3 +18,6 @@ module.exports =
getSubscription: (subscription_id, callback)->
Subscription.findOne _id:subscription_id, callback
getSubscriptionByMemberIdAndId: (user_id, subscription_id, callback)->
Subscription.findOne member_ids: user_id, _id:subscription_id, callback

View file

@ -10,10 +10,12 @@ describe "Subscription Group Handler", ->
beforeEach ->
@adminUser_id = "12321"
@newEmail = "bob@smith.com"
@user = {_id:"3121321", email:@newEmail}
@user_id = "3121321"
@user = {_id:@user_id, email:@newEmail}
@SubscriptionLocator =
getUsersSubscription: sinon.stub()
getSubscriptionByMemberIdAndId: sinon.stub()
@UserCreator =
getUserOrCreateHoldingAccount: sinon.stub().callsArgWith(1, null, @user)
@ -100,3 +102,20 @@ describe "Subscription Group Handler", ->
assert.deepEqual users[2], {_id:@subscription.member_ids[2]}
done()
describe "isUserPartOfGroup", ->
beforeEach ->
@subscription_id = "123ed13123"
it "should return true when user is part of subscription", (done)->
@SubscriptionLocator.getSubscriptionByMemberIdAndId.callsArgWith(2, null, {_id:@subscription_id})
@Handler.isUserPartOfGroup @user_id, @subscription_id, (err, partOfGroup)->
partOfGroup.should.equal true
done()
it "should return false when no subscription is found", (done)->
@SubscriptionLocator.getSubscriptionByMemberIdAndId.callsArgWith(2, null)
@Handler.isUserPartOfGroup @user_id, @subscription_id, (err, partOfGroup)->
partOfGroup.should.equal false
done()