BetaProgramHandlerTests.coffee 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. @call = (callback) =>
  32. @handler.optIn @user_id, callback
  33. it "should set betaProgram = true on user object", (done) ->
  34. @call (err) =>
  35. @user.betaProgram.should.equal true
  36. done()
  37. it "should call user.save", (done) ->
  38. @call (err) =>
  39. @user.save.callCount.should.equal 1
  40. done()
  41. it "should not produce an error", (done) ->
  42. @call (err) =>
  43. expect(err).to.equal null
  44. expect(err).to.not.be.instanceof Error
  45. done()
  46. describe "when user.save produces an error", ->
  47. beforeEach ->
  48. @user.save.callsArgWith(0, new Error('woops'))
  49. it "should produce an error", (done) ->
  50. @call (err) =>
  51. expect(err).to.not.equal null
  52. expect(err).to.be.instanceof Error
  53. done()