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