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 =
  32. session: destroy:->
  33. body:{}
  34. @res = {}
  35. @next = sinon.stub()
  36. @user_id = "323123"
  37. @req.session.user =
  38. _id = @user_id
  39. describe "deleteUser", ->
  40. it "should delete the user", (done)->
  41. @res.send = (code)=>
  42. @UserDeleter.deleteUser.calledWith(@user_id)
  43. code.should.equal 200
  44. done()
  45. @UserController.deleteUser @req, @res
  46. describe "unsubscribe", ->
  47. it "should send the user to unsubscribe", (done)->
  48. @res.send = (code)=>
  49. @NewsLetterManager.unsubscribe.calledWith(@user).should.equal true
  50. done()
  51. @UserController.unsubscribe @req, @res
  52. describe "updateUserSettings", ->
  53. it "should call save", (done)->
  54. @req.body = {}
  55. @res.send = (code)=>
  56. @user.save.called.should.equal true
  57. done()
  58. @UserController.updateUserSettings @req, @res
  59. it "should set the first name", (done)->
  60. @req.body =
  61. first_name: "bobby "
  62. @res.send = (code)=>
  63. @user.first_name.should.equal "bobby"
  64. done()
  65. @UserController.updateUserSettings @req, @res
  66. it "should set some props on ace", (done)->
  67. @req.body =
  68. theme: "something "
  69. @res.send = (code)=>
  70. @user.ace.theme.should.equal "something"
  71. done()
  72. @UserController.updateUserSettings @req, @res
  73. describe "logout", ->
  74. it "should destroy the session", (done)->
  75. @req.session.destroy = sinon.stub().callsArgWith(0)
  76. @res.redirect = (url)=>
  77. url.should.equal "/login"
  78. @req.session.destroy.called.should.equal true
  79. done()
  80. @UserController.logout @req, @res