From cb948fede2bab029b3877f2b90998d87b7413e5c Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 18 Mar 2015 15:57:01 +0000 Subject: [PATCH] Move email sending into registration controller --- .../app/coffee/Features/User/UserController.coffee | 7 +++++++ .../Features/User/UserRegistrationHandler.coffee | 6 ------ .../UnitTests/coffee/User/UserControllerTests.coffee | 12 +++++++++++- .../UnitTests/coffee/User/UserDeleterTests.coffee | 1 + .../coffee/User/UserRegistrationHandlerTests.coffee | 9 +-------- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/services/web/app/coffee/Features/User/UserController.coffee b/services/web/app/coffee/Features/User/UserController.coffee index 0c2626baf6..2e8ffd4bb6 100644 --- a/services/web/app/coffee/Features/User/UserController.coffee +++ b/services/web/app/coffee/Features/User/UserController.coffee @@ -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 diff --git a/services/web/app/coffee/Features/User/UserRegistrationHandler.coffee b/services/web/app/coffee/Features/User/UserRegistrationHandler.coffee index c3cbbc2b2a..addcd2d73f 100644 --- a/services/web/app/coffee/Features/User/UserRegistrationHandler.coffee +++ b/services/web/app/coffee/Features/User/UserRegistrationHandler.coffee @@ -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) diff --git a/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee b/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee index 090f063a44..0fab848028 100644 --- a/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee @@ -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", -> diff --git a/services/web/test/UnitTests/coffee/User/UserDeleterTests.coffee b/services/web/test/UnitTests/coffee/User/UserDeleterTests.coffee index 8f3f0c3f51..5a00816e55 100644 --- a/services/web/test/UnitTests/coffee/User/UserDeleterTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserDeleterTests.coffee @@ -28,6 +28,7 @@ describe "UserDeleter", -> "../Newsletter/NewsletterManager": @NewsletterManager "../Subscription/SubscriptionHandler": @SubscriptionHandler "../Project/ProjectDeleter": @ProjectDeleter + "logger-sharelatex": @logger = { log: sinon.stub() } describe "deleteUser", -> diff --git a/services/web/test/UnitTests/coffee/User/UserRegistrationHandlerTests.coffee b/services/web/test/UnitTests/coffee/User/UserRegistrationHandlerTests.coffee index 1ac70bd292..b9d33f7ca7 100644 --- a/services/web/test/UnitTests/coffee/User/UserRegistrationHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserRegistrationHandlerTests.coffee @@ -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()