diff --git a/services/real-time/app/coffee/WebsocketController.coffee b/services/real-time/app/coffee/WebsocketController.coffee index abc50aedf0..885524e3f2 100644 --- a/services/real-time/app/coffee/WebsocketController.coffee +++ b/services/real-time/app/coffee/WebsocketController.coffee @@ -145,8 +145,11 @@ module.exports = WebsocketController = cursorData.id = client.id cursorData.user_id = user_id if user_id? cursorData.email = email if email? - if first_name? and last_name? - cursorData.name = first_name + " " + last_name + if first_name? or last_name? + cursorData.name = if !last_name? + first_name + else + "#{first_name} #{last_name}" ConnectedUsersManager.updateUserPosition(project_id, client.id, { first_name: first_name, last_name: last_name, diff --git a/services/real-time/test/unit/coffee/WebsocketControllerTests.coffee b/services/real-time/test/unit/coffee/WebsocketControllerTests.coffee index 00f0638fb0..5427b9cd10 100644 --- a/services/real-time/test/unit/coffee/WebsocketControllerTests.coffee +++ b/services/real-time/test/unit/coffee/WebsocketControllerTests.coffee @@ -430,6 +430,46 @@ describe 'WebsocketController', -> 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 a logged in user who has no last_name set", -> + beforeEach -> + @clientParams = { + project_id: @project_id + first_name: @first_name = "Douglas" + last_name: undefined + 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: "#{@first_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: @first_name, + last_name: undefined + }, { + 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", -> beforeEach -> @clientParams = {