overleaf/services/web/test/unit/coffee/User/UserHandlerTests.coffee
2017-11-27 17:10:22 +00:00

80 lines
No EOL
2.8 KiB
CoffeeScript

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()
convertEmailInvitesToMemberships: sinon.stub().callsArgWith(2)
@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 call convertEmailInvitesToMemberships", ->
@SubscriptionGroupHandler.convertEmailInvitesToMemberships
.calledWith(@user.email, @user._id)
.should.equal true
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()
it "should call convertEmailInvitesToMemberships", ->
@SubscriptionGroupHandler.convertEmailInvitesToMemberships
.calledWith(@user.email, @user._id)
.should.equal true
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()
it "should call convertEmailInvitesToMemberships", ->
@SubscriptionGroupHandler.convertEmailInvitesToMemberships
.calledWith(@user.email, @user._id)
.should.equal true