diff --git a/app/drops/contact_drop.rb b/app/drops/contact_drop.rb index 4560ccc23..6611ecdc3 100644 --- a/app/drops/contact_drop.rb +++ b/app/drops/contact_drop.rb @@ -1,6 +1,6 @@ class ContactDrop < BaseDrop def name - @obj.try(:name).try(:capitalize) + @obj.try(:name).try(:split).try(:map, &:capitalize).try(:join, ' ') end def email @@ -16,6 +16,6 @@ class ContactDrop < BaseDrop end def last_name - @obj.try(:name).try(:split).try(:last) if @obj.try(:name).try(:split).try(:size) > 1 + @obj.try(:name).try(:split).try(:last).try(:capitalize) if @obj.try(:name).try(:split).try(:size) > 1 end end diff --git a/app/drops/user_drop.rb b/app/drops/user_drop.rb index daca7fdda..7cafea1bb 100644 --- a/app/drops/user_drop.rb +++ b/app/drops/user_drop.rb @@ -1,6 +1,6 @@ class UserDrop < BaseDrop def name - @obj.try(:name).try(:capitalize) + @obj.try(:name).try(:split).try(:map, &:capitalize).try(:join, ' ') end def available_name @@ -8,10 +8,10 @@ class UserDrop < BaseDrop end def first_name - @obj.try(:name).try(:split).try(:first) + @obj.try(:name).try(:split).try(:first).try(:capitalize) if @obj.try(:name).try(:split).try(:size) > 1 end def last_name - @obj.try(:name).try(:split).try(:last) if @obj.try(:name).try(:split).try(:size) > 1 + @obj.try(:name).try(:split).try(:last).try(:capitalize) if @obj.try(:name).try(:split).try(:size) > 1 end end diff --git a/app/javascript/dashboard/helper/messageHelper.js b/app/javascript/dashboard/helper/messageHelper.js index 3e831d5ad..1ae9a9aff 100644 --- a/app/javascript/dashboard/helper/messageHelper.js +++ b/app/javascript/dashboard/helper/messageHelper.js @@ -7,8 +7,8 @@ export const replaceVariablesInMessage = ({ message, variables }) => { }); }; -export const capitalizeName = string => { - return string.charAt(0).toUpperCase() + string.slice(1); +export const capitalizeName = name => { + return name.replace(/\b(\w)/g, s => s.toUpperCase()); }; const skipCodeBlocks = str => str.replace(/```(?:.|\n)+?```/g, ''); @@ -20,7 +20,9 @@ export const getFirstName = ({ user }) => { export const getLastName = ({ user }) => { if (user && user.name) { - return user.name.split(' ').length > 1 ? user.name.split(' ').pop() : ''; + const lastName = + user.name.split(' ').length > 1 ? user.name.split(' ').pop() : ''; + return capitalizeName(lastName); } return ''; }; @@ -39,7 +41,7 @@ export const getMessageVariables = ({ conversation }) => { 'contact.phone': sender?.phone_number, 'contact.id': sender?.id, 'conversation.id': id, - 'agent.name': assignee?.name ? assignee?.name : '', + 'agent.name': capitalizeName(assignee?.name || ''), 'agent.first_name': getFirstName({ user: assignee }), 'agent.last_name': getLastName({ user: assignee }), 'agent.email': assignee?.email ?? '', diff --git a/app/javascript/dashboard/helper/specs/messageHelper.spec.js b/app/javascript/dashboard/helper/specs/messageHelper.spec.js index 114206b7f..c661c483b 100644 --- a/app/javascript/dashboard/helper/specs/messageHelper.spec.js +++ b/app/javascript/dashboard/helper/specs/messageHelper.spec.js @@ -88,11 +88,11 @@ describe('#getMessageVariables', () => { const conversation = { meta: { assignee: { - name: 'Samuel Smith', + name: 'samuel Smith', email: 'samuel@example.com', }, sender: { - name: 'John Doe', + name: 'john Doe', email: 'john.doe@gmail.com', phone_number: '1234567890', }, @@ -139,16 +139,28 @@ describe('#getUndefinedVariablesInMessage', () => { }); describe('#capitalizeName', () => { - it('Capitalize name if name is passed', () => { - const string = 'hello world'; - expect(capitalizeName(string)).toBe('Hello world'); + it('capitalize name if name is passed', () => { + const string = 'john peter'; + expect(capitalizeName(string)).toBe('John Peter'); + }); + it('capitalize first name if full name is passed', () => { + const string = 'john Doe'; + expect(capitalizeName(string)).toBe('John Doe'); }); it('returns empty string if the string is empty', () => { const string = ''; expect(capitalizeName(string)).toBe(''); }); - it('Capitalize first name if full name is passed', () => { - const string = 'john Doe'; + it('capitalize last name if last name is passed', () => { + const string = 'john doe'; expect(capitalizeName(string)).toBe('John Doe'); }); + it('capitalize first name if first name is passed', () => { + const string = 'john'; + expect(capitalizeName(string)).toBe('John'); + }); + it('capitalize last name if last name is passed', () => { + const string = 'doe'; + expect(capitalizeName(string)).toBe('Doe'); + }); }); diff --git a/spec/drops/contact_drop_spec.rb b/spec/drops/contact_drop_spec.rb index d4c81bda8..644d7e3bc 100644 --- a/spec/drops/contact_drop_spec.rb +++ b/spec/drops/contact_drop_spec.rb @@ -13,7 +13,12 @@ describe ::ContactDrop do it('return the capitalized name') do contact.update!(name: 'john doe') - expect(subject.name).to eq 'John doe' + expect(subject.name).to eq 'John Doe' + end + + it('return the capitalized first name') do + contact.update!(name: 'john doe') + expect(subject.last_name).to eq 'Doe' end end @@ -27,5 +32,10 @@ describe ::ContactDrop do contact.update!(name: 'John') expect(subject.last_name).to be_nil end + + it('return the capitalized last name') do + contact.update!(name: 'john doe') + expect(subject.last_name).to eq 'Doe' + end end end diff --git a/spec/drops/user_drop_spec.rb b/spec/drops/user_drop_spec.rb index 7e136ebc4..7c0465de5 100644 --- a/spec/drops/user_drop_spec.rb +++ b/spec/drops/user_drop_spec.rb @@ -10,6 +10,11 @@ describe ::UserDrop do user.update!(name: 'John Doe') expect(subject.first_name).to eq 'John' end + + it('return the capitalized first name') do + user.update!(name: 'john doe') + expect(subject.first_name).to eq 'John' + end end it('return the capitalized name') do @@ -27,5 +32,10 @@ describe ::UserDrop do user.update!(name: 'John') expect(subject.last_name).to be_nil end + + it('return the capitalized last name') do + user.update!(name: 'john doe') + expect(subject.last_name).to eq 'Doe' + end end end