UserUpdaterTests.coffee 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. should = require('chai').should()
  2. SandboxedModule = require('sandboxed-module')
  3. assert = require('assert')
  4. path = require('path')
  5. sinon = require('sinon')
  6. modulePath = path.join __dirname, "../../../../app/js/Features/User/UserUpdater"
  7. expect = require("chai").expect
  8. describe "UserUpdater", ->
  9. beforeEach ->
  10. @settings = {}
  11. @mongojs =
  12. db:{}
  13. ObjectId:(id)-> return id
  14. @UserLocator =
  15. findByEmail:sinon.stub()
  16. @UserUpdater = SandboxedModule.require modulePath, requires:
  17. "settings-sharelatex":@settings
  18. "logger-sharelatex": log:->
  19. "./UserLocator":@UserLocator
  20. "../../infrastructure/mongojs":@mongojs
  21. @stubbedUser =
  22. name:"bob"
  23. email:"hello@world.com"
  24. @user_id = "3131231"
  25. @newEmail = "bob@bob.com"
  26. describe "changeEmailAddress", ->
  27. beforeEach ->
  28. @UserUpdater.updateUser = sinon.stub().callsArgWith(2)
  29. it "should check if the new email already has an account", (done)->
  30. @UserLocator.findByEmail.callsArgWith(1, null, @stubbedUser)
  31. @UserUpdater.changeEmailAddress @user_id, @stubbedUser.email, (err)=>
  32. @UserUpdater.updateUser.called.should.equal false
  33. should.exist(err)
  34. done()
  35. it "should set the users password", (done)->
  36. @UserLocator.findByEmail.callsArgWith(1, null)
  37. @UserUpdater.changeEmailAddress @user_id, @newEmail, (err)=>
  38. @UserUpdater.updateUser.calledWith(@user_id, $set: { "email": @newEmail}).should.equal true
  39. done()