UserMembershipControllerTests.coffee 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. sinon = require('sinon')
  2. assertCalledWith = sinon.assert.calledWith
  3. assertNotCalled = sinon.assert.notCalled
  4. chai = require('chai')
  5. should = chai.should()
  6. assert = chai.assert
  7. expect = require('chai').expect
  8. modulePath = "../../../../app/js/Features/UserMembership/UserMembershipController.js"
  9. SandboxedModule = require('sandboxed-module')
  10. MockRequest = require "../helpers/MockRequest"
  11. MockResponse = require "../helpers/MockResponse"
  12. describe "UserMembershipController", ->
  13. beforeEach ->
  14. @req = new MockRequest()
  15. @user = _id: 'mock-user-id'
  16. @newUser = _id: 'mock-new-user-id', email: 'new-user-email@foo.bar'
  17. @subscription = { _id: 'mock-subscription-id'}
  18. @users = [{ _id: 'mock-member-id-1' }, { _id: 'mock-member-id-2' }]
  19. @AuthenticationController =
  20. getLoggedInUserId: sinon.stub().returns(@user._id)
  21. @UserMembershipHandler =
  22. getEntity: sinon.stub().yields(null, @subscription)
  23. getUsers: sinon.stub().yields(null, @users)
  24. addUser: sinon.stub().yields(null, @newUser)
  25. removeUser: sinon.stub().yields(null)
  26. @UserMembershipController = SandboxedModule.require modulePath, requires:
  27. '../Authentication/AuthenticationController': @AuthenticationController
  28. './UserMembershipHandler': @UserMembershipHandler
  29. "logger-sharelatex":
  30. log: ->
  31. err: ->
  32. describe 'index', ->
  33. it 'get entity', (done) ->
  34. @UserMembershipController.index 'group', @req, render: () =>
  35. sinon.assert.calledWith(@UserMembershipHandler.getEntity, 'group', @user._id)
  36. done()
  37. it 'get users', (done) ->
  38. @UserMembershipController.index 'group', @req, render: () =>
  39. sinon.assert.calledWith(@UserMembershipHandler.getUsers, 'group', @subscription)
  40. done()
  41. it 'render group view', (done) ->
  42. @UserMembershipController.index 'group', @req, render: (viewPath, viewParams) =>
  43. expect(viewPath).to.equal 'user_membership/index'
  44. expect(viewParams.entity).to.deep.equal @subscription
  45. expect(viewParams.users).to.deep.equal @users
  46. expect(viewParams.translations.title).to.equal 'group_account'
  47. expect(viewParams.paths.addMember).to.equal '/subscription/invites'
  48. done()
  49. it 'render group managers view', (done) ->
  50. @UserMembershipController.index 'groupManagers', @req, render: (viewPath, viewParams) =>
  51. expect(viewPath).to.equal 'user_membership/index'
  52. expect(viewParams.translations.title).to.equal 'group_managers'
  53. expect(viewParams.paths.exportMembers).to.be.undefined
  54. done()
  55. it 'render institution view', (done) ->
  56. @UserMembershipController.index 'institution', @req, render: (viewPath, viewParams) =>
  57. expect(viewPath).to.equal 'user_membership/index'
  58. expect(viewParams.translations.title).to.equal 'institution_managers'
  59. expect(viewParams.paths.exportMembers).to.be.undefined
  60. done()
  61. describe 'add', ->
  62. beforeEach ->
  63. @req.body.email = @newUser.email
  64. it 'get entity', (done) ->
  65. @UserMembershipController.add 'groupManagers', @req, json: () =>
  66. sinon.assert.calledWith(@UserMembershipHandler.getEntity, 'groupManagers', @user._id)
  67. done()
  68. it 'add user', (done) ->
  69. @UserMembershipController.add 'groupManagers', @req, json: () =>
  70. sinon.assert.calledWith(@UserMembershipHandler.addUser, 'groupManagers', @subscription, @newUser.email)
  71. done()
  72. it 'return user object', (done) ->
  73. @UserMembershipController.add 'groupManagers', @req, json: (payload) =>
  74. payload.user.should.equal @newUser
  75. done()
  76. describe 'remove', ->
  77. beforeEach ->
  78. @req.params.userId = @newUser._id
  79. it 'remove user', (done) ->
  80. @UserMembershipController.remove 'groupManagers', @req, send: () =>
  81. sinon.assert.calledWith(@UserMembershipHandler.removeUser, 'groupManagers', @subscription, @newUser._id)
  82. done()