UserMembershipViewModelTests.coffee 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. chai = require('chai')
  2. should = chai.should()
  3. expect = require('chai').expect
  4. sinon = require('sinon')
  5. assertCalledWith = sinon.assert.calledWith
  6. assertNotCalled = sinon.assert.notCalled
  7. mongojs = require('mongojs')
  8. ObjectId = mongojs.ObjectId
  9. modulePath = "../../../../app/js/Features/UserMembership/UserMembershipViewModel"
  10. SandboxedModule = require("sandboxed-module")
  11. describe 'UserMembershipViewModel', ->
  12. beforeEach ->
  13. @UserGetter =
  14. getUserOrUserStubById: sinon.stub()
  15. @UserMembershipViewModel = SandboxedModule.require modulePath, requires:
  16. 'mongojs': mongojs
  17. '../User/UserGetter': @UserGetter
  18. @email = 'mock-email@bar.com'
  19. @user = _id: 'mock-user-id', email: 'mock-email@baz.com', first_name: 'Name'
  20. @userStub = _id: 'mock-user-stub-id', email: 'mock-stub-email@baz.com'
  21. describe 'build', ->
  22. it 'build email', ->
  23. viewModel = @UserMembershipViewModel.build(@email)
  24. expect(viewModel).to.deep.equal
  25. email: @email
  26. invite: true
  27. first_name: null
  28. last_name: null
  29. _id: null
  30. it 'build user', ->
  31. viewModel = @UserMembershipViewModel.build(@user)
  32. expect(viewModel._id).to.equal @user._id
  33. expect(viewModel.email).to.equal @user.email
  34. expect(viewModel.invite).to.equal false
  35. describe 'build async', ->
  36. beforeEach ->
  37. @UserMembershipViewModel.build = sinon.stub()
  38. it 'build email', (done) ->
  39. @UserMembershipViewModel.buildAsync @email, (error, viewModel) =>
  40. assertCalledWith(@UserMembershipViewModel.build, @email)
  41. done()
  42. it 'build user', (done) ->
  43. @UserMembershipViewModel.buildAsync @user, (error, viewModel) =>
  44. assertCalledWith(@UserMembershipViewModel.build, @user)
  45. done()
  46. it 'build user id', (done) ->
  47. @UserGetter.getUserOrUserStubById.yields(null, @user, false)
  48. @UserMembershipViewModel.buildAsync ObjectId(), (error, viewModel) =>
  49. should.not.exist(error)
  50. assertNotCalled(@UserMembershipViewModel.build)
  51. expect(viewModel._id).to.equal @user._id
  52. expect(viewModel.email).to.equal @user.email
  53. expect(viewModel.first_name).to.equal @user.first_name
  54. expect(viewModel.invite).to.equal false
  55. should.exist(viewModel.email)
  56. done()
  57. it 'build user stub id', (done) ->
  58. @UserGetter.getUserOrUserStubById.yields(null, @userStub, true)
  59. @UserMembershipViewModel.buildAsync ObjectId(), (error, viewModel) =>
  60. should.not.exist(error)
  61. assertNotCalled(@UserMembershipViewModel.build)
  62. expect(viewModel._id).to.equal @userStub._id
  63. expect(viewModel.email).to.equal @userStub.email
  64. expect(viewModel.invite).to.equal true
  65. done()
  66. it 'build user id with error', (done) ->
  67. @UserGetter.getUserOrUserStubById.yields(new Error('nope'))
  68. userId = ObjectId()
  69. @UserMembershipViewModel.buildAsync userId, (error, viewModel) =>
  70. should.not.exist(error)
  71. assertNotCalled(@UserMembershipViewModel.build)
  72. expect(viewModel._id).to.equal userId.toString()
  73. should.not.exist(viewModel.email)
  74. done()