Ver código fonte

Move email sending into registration controller

James Allen 11 anos atrás
pai
commit
cb948fede2

+ 7 - 0
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

+ 0 - 6
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)

+ 11 - 1
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", ->

+ 1 - 0
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", ->
 

+ 1 - 8
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()