Przeglądaj źródła

Handle the case where the user has only a last_name set

Shane Kilkelly 8 lat temu
rodzic
commit
675814f1b1

+ 5 - 3
services/real-time/app/coffee/WebsocketController.coffee

@@ -146,10 +146,12 @@ module.exports = WebsocketController =
 				cursorData.user_id = user_id if user_id?
 				cursorData.user_id = user_id if user_id?
 				cursorData.email   = email   if email?
 				cursorData.email   = email   if email?
 				if first_name? or last_name?
 				if first_name? or last_name?
-					cursorData.name = if !last_name?
-						first_name
-					else
+					cursorData.name = if first_name && last_name
 						"#{first_name} #{last_name}"
 						"#{first_name} #{last_name}"
+					else if first_name
+						first_name
+					else if last_name
+						last_name
 					ConnectedUsersManager.updateUserPosition(project_id, client.id, {
 					ConnectedUsersManager.updateUserPosition(project_id, client.id, {
 						first_name: first_name,
 						first_name: first_name,
 						last_name:  last_name,
 						last_name:  last_name,

+ 41 - 0
services/real-time/test/unit/coffee/WebsocketControllerTests.coffee

@@ -470,6 +470,47 @@ describe 'WebsocketController', ->
 			it "should increment the update-client-position metric at 0.1 frequency", ->
 			it "should increment the update-client-position metric at 0.1 frequency", ->
 				@metrics.inc.calledWith("editor.update-client-position", 0.1).should.equal true
 				@metrics.inc.calledWith("editor.update-client-position", 0.1).should.equal true
 
 
+		describe "with a logged in user who has no first_name set", ->
+			beforeEach ->
+				@clientParams = {
+					project_id: @project_id
+					first_name: undefined
+					last_name: @last_name = "Adams"
+					email: @email = "joe@example.com"
+					user_id: @user_id = "user-id-123"
+				}
+				@client.get = (param, callback) => callback null, @clientParams[param]
+				@WebsocketController.updateClientPosition @client, @update
+
+				@populatedCursorData = 
+					doc_id: @doc_id,
+					id: @client.id
+					name: "#{@last_name}"
+					row: @row
+					column: @column
+					email: @email
+					user_id: @user_id
+
+			it "should send the update to the project room with the user's name", ->
+				@WebsocketLoadBalancer.emitToRoom.calledWith(@project_id, "clientTracking.clientUpdated", @populatedCursorData).should.equal true
+
+			it "should send the  cursor data to the connected user manager", (done)->
+				@ConnectedUsersManager.updateUserPosition.calledWith(@project_id, @client.id, {
+					_id: @user_id,
+					email: @email,
+					first_name: undefined,
+					last_name: @last_name
+				}, {
+					row: @row
+					column: @column
+					doc_id: @doc_id
+				}).should.equal true
+				done()
+
+			it "should increment the update-client-position metric at 0.1 frequency", ->
+				@metrics.inc.calledWith("editor.update-client-position", 0.1).should.equal true
+
+
 		describe "with an anonymous user", ->
 		describe "with an anonymous user", ->
 			beforeEach ->
 			beforeEach ->
 				@clientParams = {
 				@clientParams = {