don't create notification if user is already part of group

This commit is contained in:
Henry Oswald 2016-02-18 10:06:21 +00:00
parent c8084406d3
commit fc4bd94a6e
3 changed files with 84 additions and 7 deletions

View file

@ -22,4 +22,4 @@ module.exports =
Subscription.findOne _id:subscription_id, callback Subscription.findOne _id:subscription_id, callback
getSubscriptionByMemberIdAndId: (user_id, subscription_id, callback)-> getSubscriptionByMemberIdAndId: (user_id, subscription_id, callback)->
Subscription.findOne member_ids: user_id, _id:subscription_id, callback Subscription.findOne member_ids: user_id, _id:subscription_id, {_id:1}, callback

View file

@ -1,12 +1,20 @@
SubscriptionDomainHandler = require("../Subscription/SubscriptionDomainHandler") SubscriptionDomainHandler = require("../Subscription/SubscriptionDomainHandler")
NotificationsBuilder = require("../Notifications/NotificationsBuilder") NotificationsBuilder = require("../Notifications/NotificationsBuilder")
SubscriptionGroupHandler = require("../Subscription/SubscriptionGroupHandler")
module.exports = UserHandler =
module.exports = _populateGroupLicenceInvite: (user, callback)->
licence = SubscriptionDomainHandler.getLicenceUserCanJoin user
if !licence?
return callback()
SubscriptionGroupHandler.isUserPartOfGroup user._id, licence.subscription_id, (err, alreadyPartOfGroup)->
if err? or alreadyPartOfGroup
return callback(err)
else
NotificationsBuilder.groupPlan(user, licence).create(callback)
setupLoginData: (user, callback = ->)-> setupLoginData: (user, callback = ->)->
licence = SubscriptionDomainHandler.getLicenceUserCanJoin user _populateGroupLicenceInvite user, callback
if licence?
NotificationsBuilder.groupPlan(user, licence).create(callback)
else
return callback()

View file

@ -0,0 +1,69 @@
sinon = require('sinon')
chai = require('chai')
should = chai.should()
modulePath = "../../../../app/js/Features/User/UserHandler.js"
SandboxedModule = require('sandboxed-module')
describe "UserHandler", ->
beforeEach ->
@user =
_id:"12390i"
email: "bob@bob.com"
remove: sinon.stub().callsArgWith(0)
@licence =
subscription_id: 12323434
@SubscriptionDomainHandler =
getLicenceUserCanJoin: sinon.stub()
@SubscriptionGroupHandler =
isUserPartOfGroup:sinon.stub()
@createStub = sinon.stub().callsArgWith(0)
@NotificationsBuilder =
groupPlan:sinon.stub().returns({create:@createStub})
@UserHandler = SandboxedModule.require modulePath, requires:
"logger-sharelatex": @logger = { log: sinon.stub() }
"../Notifications/NotificationsBuilder":@NotificationsBuilder
"../Subscription/SubscriptionDomainHandler":@SubscriptionDomainHandler
"../Subscription/SubscriptionGroupHandler":@SubscriptionGroupHandler
describe "_populateGroupLicenceInvite", ->
describe "no licence", ->
beforeEach (done)->
@SubscriptionDomainHandler.getLicenceUserCanJoin.returns()
@UserHandler._populateGroupLicenceInvite @user, done
it "should not call NotificationsBuilder", (done)->
@NotificationsBuilder.groupPlan.called.should.equal false
done()
it "should not call isUserPartOfGroup", (done)->
@SubscriptionGroupHandler.isUserPartOfGroup.called.should.equal false
done()
describe "with matching licence user is not in", ->
beforeEach (done)->
@SubscriptionDomainHandler.getLicenceUserCanJoin.returns(@licence)
@SubscriptionGroupHandler.isUserPartOfGroup.callsArgWith(2, null, false)
@UserHandler._populateGroupLicenceInvite @user, done
it "should create notifcation", (done)->
@NotificationsBuilder.groupPlan.calledWith(@user, @licence).should.equal true
done()
describe "with matching licence user is already in", ->
beforeEach (done)->
@SubscriptionDomainHandler.getLicenceUserCanJoin.returns(@licence)
@SubscriptionGroupHandler.isUserPartOfGroup.callsArgWith(2, null, true)
@UserHandler._populateGroupLicenceInvite @user, done
it "should create notifcation", (done)->
@NotificationsBuilder.groupPlan.called.should.equal false
done()