| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- sinon = require('sinon')
- assertCalledWith = sinon.assert.calledWith
- assertNotCalled = sinon.assert.notCalled
- chai = require('chai')
- should = chai.should()
- assert = chai.assert
- modulePath = "../../../../app/js/Features/User/UserEmailsController.js"
- SandboxedModule = require('sandboxed-module')
- MockRequest = require "../helpers/MockRequest"
- MockResponse = require "../helpers/MockResponse"
- describe "UserEmailsController", ->
- beforeEach ->
- @req = new MockRequest()
- @user =
- _id: 'mock-user-id'
- @UserGetter =
- getUserFullEmails: sinon.stub()
- @AuthenticationController =
- getLoggedInUserId: sinon.stub().returns(@user._id)
- @UserUpdater =
- addEmailAddress: sinon.stub()
- removeEmailAddress: sinon.stub()
- setDefaultEmailAddress: sinon.stub()
- @EmailHelper =
- parseEmail: sinon.stub()
- @UserEmailsController = SandboxedModule.require modulePath, requires:
- "../Authentication/AuthenticationController": @AuthenticationController
- "./UserGetter": @UserGetter
- "./UserUpdater": @UserUpdater
- "../Helpers/EmailHelper": @EmailHelper
- "logger-sharelatex":
- log: -> console.log(arguments)
- err: ->
- describe 'List', ->
- beforeEach ->
- it 'lists emails', (done) ->
- fullEmails = [{some: 'data'}]
- @UserGetter.getUserFullEmails.callsArgWith 1, null, fullEmails
- @UserEmailsController.list @req,
- json: (response) =>
- assert.deepEqual response, fullEmails
- assertCalledWith @UserGetter.getUserFullEmails, @user._id
- done()
- it 'handles error', (done) ->
- @UserGetter.getUserFullEmails.callsArgWith 1, new Error('Oups')
- @UserEmailsController.list @req,
- sendStatus: (code) =>
- code.should.equal 500
- done()
- describe 'Add', ->
- beforeEach ->
- @newEmail = 'new_email@baz.com'
- @req.body.email = @newEmail
- @EmailHelper.parseEmail.returns @newEmail
- it 'adds new email', (done) ->
- @UserUpdater.addEmailAddress.callsArgWith 2, null
- @UserEmailsController.add @req,
- sendStatus: (code) =>
- code.should.equal 200
- assertCalledWith @EmailHelper.parseEmail, @newEmail
- assertCalledWith @UserUpdater.addEmailAddress, @user._id, @newEmail
- done()
- it 'handles email parse error', (done) ->
- @EmailHelper.parseEmail.returns null
- @UserEmailsController.add @req,
- sendStatus: (code) =>
- code.should.equal 422
- assertNotCalled @UserUpdater.addEmailAddress
- done()
- it 'handles error', (done) ->
- @UserUpdater.addEmailAddress.callsArgWith 2, new Error('Oups')
- @UserEmailsController.add @req,
- sendStatus: (code) =>
- code.should.equal 500
- done()
- describe 'remove', ->
- beforeEach ->
- @email = 'email_to_remove@bar.com'
- @req.body.email = @email
- @EmailHelper.parseEmail.returns @email
- it 'removes email', (done) ->
- @UserUpdater.removeEmailAddress.callsArgWith 2, null
- @UserEmailsController.remove @req,
- sendStatus: (code) =>
- code.should.equal 200
- assertCalledWith @EmailHelper.parseEmail, @email
- assertCalledWith @UserUpdater.removeEmailAddress, @user._id, @email
- done()
- it 'handles email parse error', (done) ->
- @EmailHelper.parseEmail.returns null
- @UserEmailsController.remove @req,
- sendStatus: (code) =>
- code.should.equal 422
- assertNotCalled @UserUpdater.removeEmailAddress
- done()
- it 'handles error', (done) ->
- @UserUpdater.removeEmailAddress.callsArgWith 2, new Error('Oups')
- @UserEmailsController.remove @req,
- sendStatus: (code) =>
- code.should.equal 500
- done()
- describe 'setDefault', ->
- beforeEach ->
- @email = "email_to_set_default@bar.com"
- @req.body.email = @email
- @EmailHelper.parseEmail.returns @email
- it 'sets default email', (done) ->
- @UserUpdater.setDefaultEmailAddress.callsArgWith 2, null
- @UserEmailsController.setDefault @req,
- sendStatus: (code) =>
- code.should.equal 200
- assertCalledWith @EmailHelper.parseEmail, @email
- assertCalledWith @UserUpdater.setDefaultEmailAddress, @user._id, @email
- done()
- it 'handles email parse error', (done) ->
- @EmailHelper.parseEmail.returns null
- @UserEmailsController.setDefault @req,
- sendStatus: (code) =>
- code.should.equal 422
- assertNotCalled @UserUpdater.setDefaultEmailAddress
- done()
- it 'handles error', (done) ->
- @UserUpdater.setDefaultEmailAddress.callsArgWith 2, new Error('Oups')
- @UserEmailsController.setDefault @req,
- sendStatus: (code) =>
- code.should.equal 500
- done()
|