overleaf/services/web/test/unit/coffee/User/UserHandlerTests.coffee
Alberto Fernández Capel e753ef3af5 Invite users in the invited_emails array
We'll remove that attribute soon, but for the time being we want
users to still be able to join the team.
2018-06-06 15:36:53 +01:00

80 lines
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()
@createStub = sinon.stub().callsArgWith(0)
@NotificationsBuilder =
groupPlan:sinon.stub().returns({create:@createStub})
@TeamInvitesHandler =
createTeamInvitesForLegacyInvitedEmail: sinon.stub().yields()
@UserHandler = SandboxedModule.require modulePath, requires:
"logger-sharelatex": @logger = { log: sinon.stub() }
"../Notifications/NotificationsBuilder":@NotificationsBuilder
"../Subscription/SubscriptionDomainHandler":@SubscriptionDomainHandler
"../Subscription/SubscriptionGroupHandler":@SubscriptionGroupHandler
"../Subscription/TeamInvitesHandler": @TeamInvitesHandler
describe "populateTeamInvites", ->
beforeEach (done)->
@UserHandler.notifyDomainLicence = sinon.stub().yields()
@UserHandler.populateTeamInvites @user, done
it "notifies the user about domain licences zzzzz", ->
@UserHandler.notifyDomainLicence.calledWith(@user).should.eq true
it "notifies the user about legacy team invites", ->
@TeamInvitesHandler.createTeamInvitesForLegacyInvitedEmail
.calledWith(@user.email).should.eq true
describe "notifyDomainLicence", ->
describe "no licence", ->
beforeEach (done)->
@SubscriptionDomainHandler.getLicenceUserCanJoin.returns()
@UserHandler.populateTeamInvites @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.populateTeamInvites @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.populateTeamInvites @user, done
it "should create notifcation", (done)->
@NotificationsBuilder.groupPlan.called.should.equal false
done()