overleaf/services/web/test/UnitTests/coffee/User/UserCreatorTests.coffee

91 lines
2.7 KiB
CoffeeScript
Raw Normal View History

2014-02-12 05:23:40 -05:00
sinon = require('sinon')
chai = require('chai')
assert = require("assert")
should = chai.should()
modulePath = "../../../../app/js/Features/User/UserCreator.js"
SandboxedModule = require('sandboxed-module')
describe "UserCreator", ->
beforeEach ->
self = @
2016-11-01 12:55:26 -04:00
@user = {_id:"12390i", ace: {}}
2014-02-12 05:23:40 -05:00
@user.save = sinon.stub().callsArgWith(0)
@UserModel = class Project
constructor: ->
return self.user
@UserLocator =
findByEmail: sinon.stub()
@UserCreator = SandboxedModule.require modulePath, requires:
"../../models/User": User:@UserModel
"./UserLocator":@UserLocator
"logger-sharelatex":{log:->}
2017-03-31 09:54:20 -04:00
'../../infrastructure/Metrics': {timeAsyncMethod: ()->}
2014-02-12 05:23:40 -05:00
@email = "bob.oswald@gmail.com"
describe "getUserOrCreateHoldingAccount", ->
it "should immediately return the user if found", (done)->
@UserLocator.findByEmail.callsArgWith(1, null, @user)
@UserCreator.getUserOrCreateHoldingAccount @email, (err, returnedUser)=>
assert.deepEqual returnedUser, @user
done()
it "should create new holding account if the user is not found", (done)->
@UserLocator.findByEmail.callsArgWith(1)
@UserCreator.createNewUser = sinon.stub().callsArgWith(1, null, @user)
@UserCreator.getUserOrCreateHoldingAccount @email, (err, returnedUser)=>
@UserCreator.createNewUser.calledWith(email:@email, holdingAccount:true).should.equal true
assert.deepEqual returnedUser, @user
done()
describe "createNewUser", ->
it "should take the opts and put them in the model", (done)->
opts =
email:@email
holdingAccount:true
@UserCreator.createNewUser opts, (err, user)=>
assert.equal user.email, @email
assert.equal user.holdingAccount, true
assert.equal user.first_name, "bob.oswald"
2014-02-12 05:23:40 -05:00
done()
it "should use the start of the email if the first name is empty string", (done)->
opts =
email:@email
holdingAccount:true
first_name:""
@UserCreator.createNewUser opts, (err, user)=>
assert.equal user.email, @email
assert.equal user.holdingAccount, true
assert.equal user.first_name, "bob.oswald"
done()
2014-02-12 05:23:40 -05:00
it "should use the first name if passed", (done)->
opts =
email:@email
holdingAccount:true
first_name:"fiiirstname"
@UserCreator.createNewUser opts, (err, user)=>
assert.equal user.email, @email
assert.equal user.holdingAccount, true
assert.equal user.first_name, "fiiirstname"
done()
it "should use the last name if passed", (done)->
opts =
email:@email
holdingAccount:true
last_name:"lastNammmmeee"
@UserCreator.createNewUser opts, (err, user)=>
assert.equal user.email, @email
assert.equal user.holdingAccount, true
assert.equal user.last_name, "lastNammmmeee"
done()