| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 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 = @
- @user = {_id:"12390i"}
- @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
- @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"
- done()
|