BetaProgramHandlerTests.coffee 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. should = require('chai').should()
  2. SandboxedModule = require('sandboxed-module')
  3. assert = require('assert')
  4. path = require('path')
  5. modulePath = path.join __dirname, '../../../../app/js/Features/BetaProgram/BetaProgramHandler'
  6. sinon = require("sinon")
  7. expect = require("chai").expect
  8. describe 'BetaProgramHandler', ->
  9. beforeEach ->
  10. @user_id = "some_id"
  11. @user =
  12. _id: @user_id
  13. email: 'user@example.com'
  14. features: {}
  15. betaProgram: false
  16. save: sinon.stub().callsArgWith(0, null)
  17. @handler = SandboxedModule.require modulePath, requires:
  18. "../../models/User": {
  19. User:
  20. findById: sinon.stub().callsArgWith(1, null, @user)
  21. },
  22. "logger-sharelatex": @logger = {
  23. log: sinon.stub()
  24. err: sinon.stub()
  25. },
  26. "../../infrastructure/Metrics": @logger = {
  27. inc: sinon.stub()
  28. }
  29. describe "optIn", ->
  30. beforeEach ->
  31. @user.betaProgram = false
  32. @call = (callback) =>
  33. @handler.optIn @user_id, callback
  34. it "should set betaProgram = true on user object", (done) ->
  35. @call (err) =>
  36. @user.betaProgram.should.equal true
  37. done()
  38. it "should call user.save", (done) ->
  39. @call (err) =>
  40. @user.save.callCount.should.equal 1
  41. done()
  42. it "should not produce an error", (done) ->
  43. @call (err) =>
  44. expect(err).to.equal null
  45. expect(err).to.not.be.instanceof Error
  46. done()
  47. describe "when user.save produces an error", ->
  48. beforeEach ->
  49. @user.save.callsArgWith(0, new Error('woops'))
  50. it "should produce an error", (done) ->
  51. @call (err) =>
  52. expect(err).to.not.equal null
  53. expect(err).to.be.instanceof Error
  54. done()
  55. describe "optOut", ->
  56. beforeEach ->
  57. @user.betaProgram = true
  58. @call = (callback) =>
  59. @handler.optOut @user_id, callback
  60. it "should set betaProgram = true on user object", (done) ->
  61. @call (err) =>
  62. @user.betaProgram.should.equal false
  63. done()
  64. it "should call user.save", (done) ->
  65. @call (err) =>
  66. @user.save.callCount.should.equal 1
  67. done()
  68. it "should not produce an error", (done) ->
  69. @call (err) =>
  70. expect(err).to.equal null
  71. expect(err).to.not.be.instanceof Error
  72. done()
  73. describe "when user.save produces an error", ->
  74. beforeEach ->
  75. @user.save.callsArgWith(0, new Error('woops'))
  76. it "should produce an error", (done) ->
  77. @call (err) =>
  78. expect(err).to.not.equal null
  79. expect(err).to.be.instanceof Error
  80. done()