diff --git a/src/libs/ModifiedExpenseMessage.ts b/src/libs/ModifiedExpenseMessage.ts index 63a7c061aa7d..fec6310808d2 100644 --- a/src/libs/ModifiedExpenseMessage.ts +++ b/src/libs/ModifiedExpenseMessage.ts @@ -451,8 +451,8 @@ function getForReportAction({ const hasModifiedAttendees = isReportActionOriginalMessageAnObject && 'oldAttendees' in reportActionOriginalMessage && 'newAttendees' in reportActionOriginalMessage; if (hasModifiedAttendees) { - const [oldAttendees, attendees] = getFormattedAttendees(reportActionOriginalMessage.newAttendees, reportActionOriginalMessage.oldAttendees); - buildMessageFragmentForValue(translate, oldAttendees, attendees, translate('iou.attendees'), false, setFragments, removalFragments, changeFragments); + const [oldAttendees, newAttendees] = getFormattedAttendees(reportActionOriginalMessage.oldAttendees, reportActionOriginalMessage.newAttendees); + buildMessageFragmentForValue(translate, newAttendees, oldAttendees, translate('iou.attendees'), false, setFragments, removalFragments, changeFragments); } const hasPersonalRulesModifiedFields = isReportActionOriginalMessageAnObject && 'personalRulesModifiedFields' in reportActionOriginalMessage; diff --git a/tests/unit/ModifiedExpenseMessageTest.ts b/tests/unit/ModifiedExpenseMessageTest.ts index 15ce68ddcbae..81699b1eaaca 100644 --- a/tests/unit/ModifiedExpenseMessageTest.ts +++ b/tests/unit/ModifiedExpenseMessageTest.ts @@ -1395,5 +1395,70 @@ describe('ModifiedExpenseMessage', () => { expect(result).toEqual(expectedResult); }); }); + + describe('when attendees are changed', () => { + it('returns the correct message with old and new attendees in the right order', () => { + const reportAction = { + ...createRandomReportAction(1), + actionName: CONST.REPORT.ACTIONS.TYPE.MODIFIED_EXPENSE, + originalMessage: { + oldAttendees: [{email: 'alice@example.com', displayName: 'Alice', avatarUrl: ''}], + newAttendees: [ + {email: 'alice@example.com', displayName: 'Alice', avatarUrl: ''}, + {email: 'bob@example.com', displayName: 'Bob', avatarUrl: ''}, + ], + }, + }; + + const result = getForReportAction({ + translate: translateLocal, + reportAction, + policyTags: undefined, + currentUserLogin: 'test@example.com', + }); + + expect(result).toEqual('changed the attendees to Alice, Bob (previously Alice)'); + }); + + it('returns "set" message when attendees are added from empty', () => { + const reportAction = { + ...createRandomReportAction(1), + actionName: CONST.REPORT.ACTIONS.TYPE.MODIFIED_EXPENSE, + originalMessage: { + oldAttendees: [], + newAttendees: [{email: 'alice@example.com', displayName: 'Alice', avatarUrl: ''}], + }, + }; + + const result = getForReportAction({ + translate: translateLocal, + reportAction, + policyTags: undefined, + currentUserLogin: 'test@example.com', + }); + + expect(result).toEqual('set the attendees to Alice'); + }); + + it('returns "removed" message when attendees are cleared', () => { + const reportAction = { + ...createRandomReportAction(1), + actionName: CONST.REPORT.ACTIONS.TYPE.MODIFIED_EXPENSE, + originalMessage: { + oldAttendees: [{email: 'alice@example.com', displayName: 'Alice', avatarUrl: ''}], + newAttendees: [], + }, + }; + + const result = getForReportAction({ + translate: translateLocal, + reportAction, + policyTags: undefined, + currentUserLogin: 'test@example.com', + }); + + expect(result).toEqual('removed the attendees (previously Alice)'); + }); + }); }); });