UserControllerTests.coffee 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. sinon = require('sinon')
  2. chai = require('chai')
  3. should = chai.should()
  4. expect = chai.expect
  5. modulePath = "../../../../app/js/Features/User/UserController.js"
  6. SandboxedModule = require('sandboxed-module')
  7. events = require "events"
  8. MockResponse = require "../helpers/MockResponse"
  9. MockRequest = require "../helpers/MockRequest"
  10. ObjectId = require("mongojs").ObjectId
  11. describe "UserController", ->
  12. beforeEach ->
  13. @user =
  14. _id:"!@£!23123"
  15. save:sinon.stub().callsArgWith(0)
  16. ace:{}
  17. @UserDeleter =
  18. deleteUser: sinon.stub().callsArgWith(1)
  19. @UserLocator =
  20. findById: sinon.stub().callsArgWith(1, null, @user)
  21. @User =
  22. findById: sinon.stub().callsArgWith(1, null, @user)
  23. @NewsLetterManager =
  24. unsubscribe: sinon.stub().callsArgWith(1)
  25. @UserController = SandboxedModule.require modulePath, requires:
  26. "./UserLocator": @UserLocator
  27. "./UserDeleter": @UserDeleter
  28. "../../models/User": User:@User
  29. '../Newsletter/NewsletterManager':@NewsLetterManager
  30. "logger-sharelatex": {log:->}
  31. @req = new MockRequest()
  32. @res = new MockResponse()
  33. @next = sinon.stub()
  34. @user_id = "323123"
  35. @req.session.user =
  36. _id = @user_id
  37. describe "deleteUser", ->
  38. it "should delete the user", (done)->
  39. @res.send = (code)=>
  40. @UserDeleter.deleteUser.calledWith(@user_id)
  41. code.should.equal 200
  42. done()
  43. @UserController.deleteUser @req, @res
  44. describe "unsubscribe", ->
  45. it "should send the user to unsubscribe", (done)->
  46. @res.send = (code)=>
  47. @NewsLetterManager.unsubscribe.calledWith(@user).should.equal true
  48. done()
  49. @UserController.unsubscribe @req, @res
  50. describe "updateUserSettings", ->
  51. it "should call save", (done)->
  52. @req.body = {}
  53. @res.send = (code)=>
  54. @user.save.called.should.equal true
  55. done()
  56. @UserController.updateUserSettings @req, @res
  57. it "should set the first name", (done)->
  58. @req.body =
  59. first_name: "bobby "
  60. @res.send = (code)=>
  61. @user.first_name.should.equal "bobby"
  62. done()
  63. @UserController.updateUserSettings @req, @res
  64. it "should set some props on ace", (done)->
  65. @req.body =
  66. theme: "something "
  67. @res.send = (code)=>
  68. @user.ace.theme.should.equal "something"
  69. done()
  70. @UserController.updateUserSettings @req, @res
  71. describe "logout", ->
  72. it "should destroy the session", (done)->
  73. @req.session.destroy = (cb)->
  74. if cb?
  75. cb()
  76. @res.redirect = (url)=>
  77. url.should.equal "/login"
  78. @req.session.destroy.called.should.equal true
  79. done()
  80. @UserController.logout @req, @res