UserHandlerTests.coffee 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. sinon = require('sinon')
  2. chai = require('chai')
  3. should = chai.should()
  4. modulePath = "../../../../app/js/Features/User/UserHandler.js"
  5. SandboxedModule = require('sandboxed-module')
  6. describe "UserHandler", ->
  7. beforeEach ->
  8. @user =
  9. _id:"12390i"
  10. email: "bob@bob.com"
  11. remove: sinon.stub().callsArgWith(0)
  12. @licence =
  13. subscription_id: 12323434
  14. @SubscriptionDomainHandler =
  15. getLicenceUserCanJoin: sinon.stub()
  16. @SubscriptionGroupHandler =
  17. isUserPartOfGroup:sinon.stub()
  18. @createStub = sinon.stub().callsArgWith(0)
  19. @NotificationsBuilder =
  20. groupPlan:sinon.stub().returns({create:@createStub})
  21. @TeamInvitesHandler =
  22. createTeamInvitesForLegacyInvitedEmail: sinon.stub().yields()
  23. @UserHandler = SandboxedModule.require modulePath, requires:
  24. "logger-sharelatex": @logger = { log: sinon.stub() }
  25. "../Notifications/NotificationsBuilder":@NotificationsBuilder
  26. "../Subscription/SubscriptionDomainHandler":@SubscriptionDomainHandler
  27. "../Subscription/SubscriptionGroupHandler":@SubscriptionGroupHandler
  28. "../Subscription/TeamInvitesHandler": @TeamInvitesHandler
  29. describe "populateTeamInvites", ->
  30. beforeEach (done)->
  31. @UserHandler.notifyDomainLicence = sinon.stub().yields()
  32. @UserHandler.populateTeamInvites @user, done
  33. it "notifies the user about domain licences zzzzz", ->
  34. @UserHandler.notifyDomainLicence.calledWith(@user).should.eq true
  35. it "notifies the user about legacy team invites", ->
  36. @TeamInvitesHandler.createTeamInvitesForLegacyInvitedEmail
  37. .calledWith(@user.email).should.eq true
  38. describe "notifyDomainLicence", ->
  39. describe "no licence", ->
  40. beforeEach (done)->
  41. @SubscriptionDomainHandler.getLicenceUserCanJoin.returns()
  42. @UserHandler.populateTeamInvites @user, done
  43. it "should not call NotificationsBuilder", (done)->
  44. @NotificationsBuilder.groupPlan.called.should.equal false
  45. done()
  46. it "should not call isUserPartOfGroup", (done)->
  47. @SubscriptionGroupHandler.isUserPartOfGroup.called.should.equal false
  48. done()
  49. describe "with matching licence user is not in", ->
  50. beforeEach (done)->
  51. @SubscriptionDomainHandler.getLicenceUserCanJoin.returns(@licence)
  52. @SubscriptionGroupHandler.isUserPartOfGroup.callsArgWith(2, null, false)
  53. @UserHandler.populateTeamInvites @user, done
  54. it "should create notifcation", (done)->
  55. @NotificationsBuilder.groupPlan.calledWith(@user, @licence).should.equal true
  56. done()
  57. describe "with matching licence user is already in", ->
  58. beforeEach (done)->
  59. @SubscriptionDomainHandler.getLicenceUserCanJoin.returns(@licence)
  60. @SubscriptionGroupHandler.isUserPartOfGroup.callsArgWith(2, null, true)
  61. @UserHandler.populateTeamInvites @user, done
  62. it "should create notifcation", (done)->
  63. @NotificationsBuilder.groupPlan.called.should.equal false
  64. done()