UserHandlerTests.coffee 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. @UserHandler = SandboxedModule.require modulePath, requires:
  22. "logger-sharelatex": @logger = { log: sinon.stub() }
  23. "../Notifications/NotificationsBuilder":@NotificationsBuilder
  24. "../Subscription/SubscriptionDomainHandler":@SubscriptionDomainHandler
  25. "../Subscription/SubscriptionGroupHandler":@SubscriptionGroupHandler
  26. describe "populateGroupLicenceInvite", ->
  27. describe "no licence", ->
  28. beforeEach (done)->
  29. @SubscriptionDomainHandler.getLicenceUserCanJoin.returns()
  30. @UserHandler.populateGroupLicenceInvite @user, done
  31. it "should not call NotificationsBuilder", (done)->
  32. @NotificationsBuilder.groupPlan.called.should.equal false
  33. done()
  34. it "should not call isUserPartOfGroup", (done)->
  35. @SubscriptionGroupHandler.isUserPartOfGroup.called.should.equal false
  36. done()
  37. describe "with matching licence user is not in", ->
  38. beforeEach (done)->
  39. @SubscriptionDomainHandler.getLicenceUserCanJoin.returns(@licence)
  40. @SubscriptionGroupHandler.isUserPartOfGroup.callsArgWith(2, null, false)
  41. @UserHandler.populateGroupLicenceInvite @user, done
  42. it "should create notifcation", (done)->
  43. @NotificationsBuilder.groupPlan.calledWith(@user, @licence).should.equal true
  44. done()
  45. describe "with matching licence user is already in", ->
  46. beforeEach (done)->
  47. @SubscriptionDomainHandler.getLicenceUserCanJoin.returns(@licence)
  48. @SubscriptionGroupHandler.isUserPartOfGroup.callsArgWith(2, null, true)
  49. @UserHandler.populateGroupLicenceInvite @user, done
  50. it "should create notifcation", (done)->
  51. @NotificationsBuilder.groupPlan.called.should.equal false
  52. done()