Move email sending into registration controller

This commit is contained in:
James Allen 2015-03-18 15:57:01 +00:00
parent 27d59eeac9
commit cb948fede2
5 changed files with 20 additions and 15 deletions

View file

@ -11,6 +11,7 @@ AuthenticationManager = require("../Authentication/AuthenticationManager")
ReferalAllocator = require("../Referal/ReferalAllocator")
UserUpdater = require("./UserUpdater")
SubscriptionDomainAllocator = require("../Subscription/SubscriptionDomainAllocator")
EmailHandler = require("../Email/EmailHandler")
module.exports =
@ -91,6 +92,12 @@ module.exports =
metrics.inc "user.register.success"
ReferalAllocator.allocate req.session.referal_id, user._id, req.session.referal_source, req.session.referal_medium
SubscriptionDomainAllocator.autoAllocate(user)
EmailHandler.sendEmail "welcome", {
first_name:user.first_name
to: user.email
}, () ->
AuthenticationController.establishUserSession req, user, (error) ->
return callback(error) if error?
req.session.justRegistered = true

View file

@ -4,7 +4,6 @@ UserCreator = require("./UserCreator")
AuthenticationManager = require("../Authentication/AuthenticationManager")
NewsLetterManager = require("../Newsletter/NewsletterManager")
async = require("async")
EmailHandler = require("../Email/EmailHandler")
logger = require("logger-sharelatex")
module.exports =
@ -56,11 +55,6 @@ module.exports =
(cb)->
NewsLetterManager.subscribe user, ->
cb() #this can be slow, just fire it off
(cb)->
emailOpts =
first_name:user.first_name
to: user.email
EmailHandler.sendEmail "welcome", emailOpts, cb
], (err)->
logger.log user: user, "registered"
callback(err, user)

View file

@ -40,6 +40,8 @@ describe "UserController", ->
autoAllocate:sinon.stub()
@UserUpdater =
changeEmailAddress:sinon.stub()
@EmailHandler =
sendEmail:sinon.stub().callsArgWith(2)
@UserController = SandboxedModule.require modulePath, requires:
"./UserLocator": @UserLocator
"./UserDeleter": @UserDeleter
@ -51,6 +53,7 @@ describe "UserController", ->
"../Authentication/AuthenticationManager": @AuthenticationManager
"../Referal/ReferalAllocator":@ReferalAllocator
"../Subscription/SubscriptionDomainAllocator":@SubscriptionDomainAllocator
"../Email/EmailHandler": @EmailHandler
"logger-sharelatex": {log:->}
@ -223,7 +226,14 @@ describe "UserController", ->
@res.send = (opts)=>
@SubscriptionDomainAllocator.autoAllocate.calledWith(@user).should.equal true
done()
@UserController.register @req, @res
@UserController.register @req, @res
it "should send a welcome email", (done)->
@UserRegistrationHandler.registerNewUser.callsArgWith(1, null, @user)
@res.send = (opts)=>
@EmailHandler.sendEmail.calledWith("welcome").should.equal true
done()
@UserController.register @req, @res
describe "changePassword", ->

View file

@ -28,6 +28,7 @@ describe "UserDeleter", ->
"../Newsletter/NewsletterManager": @NewsletterManager
"../Subscription/SubscriptionHandler": @SubscriptionHandler
"../Project/ProjectDeleter": @ProjectDeleter
"logger-sharelatex": @logger = { log: sinon.stub() }
describe "deleteUser", ->

View file

@ -20,14 +20,12 @@ describe "UserRegistrationHandler", ->
setUserPassword: sinon.stub().callsArgWith(2)
@NewsLetterManager =
subscribe: sinon.stub().callsArgWith(1)
@EmailHandler =
sendEmail:sinon.stub().callsArgWith(2)
@handler = SandboxedModule.require modulePath, requires:
"../../models/User": {User:@User}
"./UserCreator": @UserCreator
"../Authentication/AuthenticationManager":@AuthenticationManager
"../Newsletter/NewsletterManager":@NewsLetterManager
"../Email/EmailHandler": @EmailHandler
"logger-sharelatex": @logger = { log: sinon.stub() }
@passingRequest = {email:"something@email.com", password:"123"}
@ -125,11 +123,6 @@ describe "UserRegistrationHandler", ->
@NewsLetterManager.subscribe.calledWith(@user).should.equal true
done()
it "should send a welcome email", (done)->
@handler.registerNewUser @passingRequest, (err)=>
@EmailHandler.sendEmail.calledWith("welcome").should.equal true
done()
it "should call the ReferalAllocator", (done)->
done()