From 086de7d53f8888e7d82c5ac4b22c5d381ee506f9 Mon Sep 17 00:00:00 2001 From: daledah Date: Tue, 20 Aug 2024 15:16:29 +0700 Subject: [PATCH 1/2] fix: unexpected behavior of tag selection --- src/libs/IOUUtils.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/libs/IOUUtils.ts b/src/libs/IOUUtils.ts index 986fd165d2d7..d1bf8fcd8c8c 100644 --- a/src/libs/IOUUtils.ts +++ b/src/libs/IOUUtils.ts @@ -141,10 +141,11 @@ function insertTagIntoTransactionTagsString(transactionTags: string, tag: string const tagArray = TransactionUtils.getTagArrayFromName(transactionTags); tagArray[tagIndex] = tag; - return tagArray - .map((tagItem) => tagItem.trim()) - .filter((tagItem) => !!tagItem) - .join(CONST.COLON); + while (tagArray.length > 0 && !tagArray[tagArray.length - 1]) { + tagArray.pop(); + } + + return tagArray.map((tagItem) => tagItem.trim()).join(CONST.COLON); } function isMovingTransactionFromTrackExpense(action?: IOUAction) { From 5f7cb17487ea27c302d96846524c8c4b95bc0594 Mon Sep 17 00:00:00 2001 From: daledah Date: Thu, 22 Aug 2024 15:46:06 +0700 Subject: [PATCH 2/2] fix: add unit test for insertTagIntoTransactionTagsString --- tests/unit/IOUUtilsTest.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/unit/IOUUtilsTest.ts b/tests/unit/IOUUtilsTest.ts index b8640e4ecdf1..04a5b3babd5e 100644 --- a/tests/unit/IOUUtilsTest.ts +++ b/tests/unit/IOUUtilsTest.ts @@ -114,6 +114,24 @@ describe('IOUUtils', () => { expect(IOUUtils.calculateAmount(participantsAccountIDs.length, 100, 'BHD')).toBe(33); }); }); + + describe('insertTagIntoTransactionTagsString', () => { + test('Inserting a tag into tag string should update the tag', () => { + expect(IOUUtils.insertTagIntoTransactionTagsString(':NY:Texas', 'California', 2)).toBe(':NY:California'); + }); + + test('Inserting a tag into an index with no tags should update the tag', () => { + expect(IOUUtils.insertTagIntoTransactionTagsString('::California', 'NY', 1)).toBe(':NY:California'); + }); + + test('Inserting a tag with colon in name into tag string should keep the colon in tag', () => { + expect(IOUUtils.insertTagIntoTransactionTagsString('East:NY:California', 'City \\: \\:', 1)).toBe('East:City \\: \\::California'); + }); + + test('Remove a tag from tagString', () => { + expect(IOUUtils.insertTagIntoTransactionTagsString('East:City \\: \\::California', '', 1)).toBe('East::California'); + }); + }); }); describe('isValidMoneyRequestType', () => {