diff --git a/src/components/ReportActionItem/CreatedReportForUnapprovedTransactionsAction.tsx b/src/components/ReportActionItem/CreatedReportForUnapprovedTransactionsAction.tsx
index f844b9595671..b4fc71ebea7c 100644
--- a/src/components/ReportActionItem/CreatedReportForUnapprovedTransactionsAction.tsx
+++ b/src/components/ReportActionItem/CreatedReportForUnapprovedTransactionsAction.tsx
@@ -2,7 +2,7 @@ import React from 'react';
import RenderHTML from '@components/RenderHTML';
import useLocalize from '@hooks/useLocalize';
import useOnyx from '@hooks/useOnyx';
-import {getCreatedReportForUnapprovedTransactionsMessage, getOriginalMessage} from '@libs/ReportActionsUtils';
+import {getCreatedReportForUnapprovedTransactionsMessage, getOriginalMessage, isOriginalReportDeleted} from '@libs/ReportActionsUtils';
import {getReportName} from '@libs/ReportNameUtils';
import ReportActionItemBasicMessage from '@pages/inbox/report/ReportActionItemBasicMessage';
import type CONST from '@src/CONST';
@@ -17,9 +17,9 @@ type CreatedReportForUnapprovedTransactionsActionProps = {
function CreatedReportForUnapprovedTransactionsAction({action}: CreatedReportForUnapprovedTransactionsActionProps) {
const {originalID} = getOriginalMessage(action) ?? {};
const {translate} = useLocalize();
- const [report] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${originalID}`);
- const reportName = getReportName(report);
- const htmlContent = `${getCreatedReportForUnapprovedTransactionsMessage(originalID, reportName, translate)}`;
+ const [originalReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${originalID}`);
+ const reportName = getReportName(originalReport);
+ const htmlContent = `${getCreatedReportForUnapprovedTransactionsMessage(originalID, reportName, isOriginalReportDeleted(action, originalReport), translate)}`;
return (
diff --git a/src/languages/de.ts b/src/languages/de.ts
index e9e25d8e75c7..bcd5813d216e 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -908,8 +908,10 @@ const translations: TranslationDeepObject = {
asCopilot: 'als Copilot für',
harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`hat diesen Bericht erstellt, um alle Ausgaben aus ${reportName} aufzunehmen, die nicht mit der von dir gewählten Häufigkeit eingereicht werden konnten`,
- createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
- `erstellte diesen Bericht für alle zurückgehaltenen Ausgaben aus ${reportName}`,
+ createdReportForUnapprovedTransactions: ({reportUrl, reportName, reportID, isReportDeleted}: CreatedReportForUnapprovedTransactionsParams) =>
+ isReportDeleted
+ ? `hat diesen Bericht für alle zurückgehaltenen Ausgaben aus dem gelöschten Bericht #${reportID} erstellt`
+ : `hat diesen Bericht für alle zurückgehaltenen Ausgaben aus ${reportName} erstellt`,
},
mentionSuggestions: {
hereAlternateText: 'Alle in dieser Unterhaltung benachrichtigen',
diff --git a/src/languages/en.ts b/src/languages/en.ts
index 56f7b42edf8b..c1c0f257a475 100644
--- a/src/languages/en.ts
+++ b/src/languages/en.ts
@@ -921,8 +921,10 @@ const translations = {
asCopilot: 'as copilot for',
harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`created this report to hold all expenses from ${reportName} that couldn't be submitted on your chosen frequency`,
- createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
- `created this report for any held expenses from ${reportName}`,
+ createdReportForUnapprovedTransactions: ({reportUrl, reportName, reportID, isReportDeleted}: CreatedReportForUnapprovedTransactionsParams) =>
+ isReportDeleted
+ ? `created this report for any held expenses from deleted report #${reportID}`
+ : `created this report for any held expenses from ${reportName}`,
},
mentionSuggestions: {
hereAlternateText: 'Notify everyone in this conversation',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 6edcdf440cf7..ef174f96dd83 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -754,8 +754,10 @@ const translations: TranslationDeepObject = {
asCopilot: 'como copiloto de',
harvestCreatedExpenseReport: (reportUrl, reportName) =>
`creó este informe para contener todos los gastos de ${reportName} que no se pudieron enviar con la frecuencia que elegiste`,
- createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
- `creó este informe para cualquier gasto retenido de ${reportName}`,
+ createdReportForUnapprovedTransactions: ({reportUrl, reportName, reportID, isReportDeleted}: CreatedReportForUnapprovedTransactionsParams) =>
+ isReportDeleted
+ ? `creó este informe para cualquier gasto retenido del informe eliminado #${reportID}`
+ : `creó este informe para cualquier gasto retenido de ${reportName}`,
},
mentionSuggestions: {
hereAlternateText: 'Notificar a todos en esta conversación',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index fa75cf032582..fdde6d7e4de1 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -911,8 +911,10 @@ const translations: TranslationDeepObject = {
asCopilot: 'en tant que copilote pour',
harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`a créé cette note de frais pour regrouper toutes les dépenses de ${reportName} qui n'ont pas pu être soumises à la fréquence que vous avez choisie`,
- createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
- `a créé cette note de frais pour toutes les dépenses en attente de ${reportName}`,
+ createdReportForUnapprovedTransactions: ({reportUrl, reportName, reportID, isReportDeleted}: CreatedReportForUnapprovedTransactionsParams) =>
+ isReportDeleted
+ ? `a créé cette note de frais pour toutes les dépenses retenues de la note de frais supprimée n°${reportID}`
+ : `a créé cette note de frais pour toutes les dépenses retenues provenant de ${reportName}`,
},
mentionSuggestions: {
hereAlternateText: 'Notifier tout le monde dans cette conversation',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 9e78b24f5005..1565dd0dc34b 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -908,8 +908,10 @@ const translations: TranslationDeepObject = {
asCopilot: 'come copilota per',
harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`ha creato questo report per raccogliere tutte le spese da ${reportName} che non potevano essere inviate con la frequenza scelta`,
- createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
- `ha creato questo report per tutte le spese in sospeso da ${reportName}`,
+ createdReportForUnapprovedTransactions: ({reportUrl, reportName, reportID, isReportDeleted}: CreatedReportForUnapprovedTransactionsParams) =>
+ isReportDeleted
+ ? `ha creato questo rendiconto per tutte le spese in sospeso dal rendiconto eliminato n. ${reportID}`
+ : `ha creato questo report per tutte le spese in sospeso da ${reportName}`,
},
mentionSuggestions: {
hereAlternateText: 'Notifica tutti in questa conversazione',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index f7f87c719fe4..d00b78bd95a6 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -903,8 +903,10 @@ const translations: TranslationDeepObject = {
asCopilot: '共同操縦者として',
harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`選択した頻度で提出できなかった、${reportName} のすべての経費を保持するためにこのレポートを作成しました`,
- createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
- `${reportName} から保留中の経費を対象としてこのレポートを作成しました`,
+ createdReportForUnapprovedTransactions: ({reportUrl, reportName, reportID, isReportDeleted}: CreatedReportForUnapprovedTransactionsParams) =>
+ isReportDeleted
+ ? `削除されたレポート #${reportID} に保留されていた経費のためにこのレポートを作成しました`
+ : `${reportName} の保留中経費すべてに対してこのレポートを作成しました`,
},
mentionSuggestions: {
hereAlternateText: 'この会話の全員に通知',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 7de585afa893..533f340ceb28 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -906,8 +906,10 @@ const translations: TranslationDeepObject = {
asCopilot: 'als copiloot voor',
harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`heeft dit rapport gemaakt om alle uitgaven van ${reportName} te bewaren die niet konden worden ingediend op de door jou gekozen frequentie`,
- createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
- `heeft dit rapport gemaakt voor uitgestelde uitgaven van ${reportName}`,
+ createdReportForUnapprovedTransactions: ({reportUrl, reportName, reportID, isReportDeleted}: CreatedReportForUnapprovedTransactionsParams) =>
+ isReportDeleted
+ ? `heeft dit rapport gemaakt voor alle vastgehouden uitgaven uit verwijderd rapport nr. ${reportID}`
+ : `heeft dit rapport gemaakt voor alle vastgehouden uitgaven van ${reportName}`,
},
mentionSuggestions: {
hereAlternateText: 'Laat iedereen in dit gesprek een melding krijgen',
diff --git a/src/languages/params.ts b/src/languages/params.ts
index 8a5112bbb527..129ccb4848f8 100644
--- a/src/languages/params.ts
+++ b/src/languages/params.ts
@@ -64,6 +64,8 @@ type ReportArchiveReasonsInvoiceReceiverPolicyDeletedParams = {
type CreatedReportForUnapprovedTransactionsParams = {
reportUrl: string;
reportName: string;
+ reportID: string;
+ isReportDeleted: boolean;
};
type WorkspacesListRouteParams = {
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index af0b92efdd98..6858dcb9e91c 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -907,8 +907,10 @@ const translations: TranslationDeepObject = {
asCopilot: 'jako drugi pilot dla',
harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`utworzył(-a) ten raport, aby zawierał wszystkie wydatki z ${reportName}, których nie można było złożyć z wybraną przez Ciebie częstotliwością`,
- createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
- `utworzył/-a ten raport dla wszystkich wstrzymanych wydatków z ${reportName}`,
+ createdReportForUnapprovedTransactions: ({reportUrl, reportName, reportID, isReportDeleted}: CreatedReportForUnapprovedTransactionsParams) =>
+ isReportDeleted
+ ? `utworzono ten raport dla wszystkich wstrzymanych wydatków z usuniętego raportu nr ${reportID}`
+ : `utworzył(-a) ten raport dla wszystkich wstrzymanych wydatków z ${reportName}`,
},
mentionSuggestions: {
hereAlternateText: 'Powiadom wszystkich w tej konwersacji',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index f6b5054dd567..071886ec29d3 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -906,8 +906,10 @@ const translations: TranslationDeepObject = {
asCopilot: 'como copiloto de',
harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`criou este relatório para manter todas as despesas de ${reportName} que não puderam ser enviadas na frequência escolhida por você`,
- createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
- `criou este relatório para quaisquer despesas em espera de ${reportName}`,
+ createdReportForUnapprovedTransactions: ({reportUrl, reportName, reportID, isReportDeleted}: CreatedReportForUnapprovedTransactionsParams) =>
+ isReportDeleted
+ ? `criou este relatório para quaisquer despesas retidas do relatório excluído nº ${reportID}`
+ : `criou este relatório para quaisquer despesas retidas de ${reportName}`,
},
mentionSuggestions: {
hereAlternateText: 'Notificar todas as pessoas nesta conversa',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 479231ccb2d7..0f7345748af5 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -893,8 +893,8 @@ const translations: TranslationDeepObject = {
reportAction: {
asCopilot: '作为副驾驶,用于',
harvestCreatedExpenseReport: (reportUrl: string, reportName: string) => `创建了此报销单,用于保存所有来自 ${reportName} 且无法按照你选择的频率提交的费用`,
- createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
- `从${reportName}创建了此报表,用于查看任何被暂扣的报销费用`,
+ createdReportForUnapprovedTransactions: ({reportUrl, reportName, reportID, isReportDeleted}: CreatedReportForUnapprovedTransactionsParams) =>
+ isReportDeleted ? `为已删除报销单 #${reportID} 中的所有暂挂报销创建了此报销单` : `为从${reportName}中被暂挂的任何报销创建了此报表`,
},
mentionSuggestions: {
hereAlternateText: '通知此会话中的所有人',
diff --git a/src/libs/DebugUtils.ts b/src/libs/DebugUtils.ts
index 4f33ff60b8b8..770f148035f6 100644
--- a/src/libs/DebugUtils.ts
+++ b/src/libs/DebugUtils.ts
@@ -718,6 +718,7 @@ function validateReportActionDraftProperty(key: keyof ReportAction, value: strin
case 'isAttachmentWithText':
case 'isNewestReportAction':
case 'isOptimisticAction':
+ case 'isOriginalReportDeleted':
return validateBoolean(value);
case 'created':
case 'lastModified':
@@ -769,6 +770,7 @@ function validateReportActionDraftProperty(key: keyof ReportAction, value: strin
childReportNotificationPreference: CONST.RED_BRICK_ROAD_PENDING_ACTION,
isNewestReportAction: CONST.RED_BRICK_ROAD_PENDING_ACTION,
isOptimisticAction: CONST.RED_BRICK_ROAD_PENDING_ACTION,
+ isOriginalReportDeleted: CONST.RED_BRICK_ROAD_PENDING_ACTION,
adminAccountID: CONST.RED_BRICK_ROAD_PENDING_ACTION,
whisperedToAccountIDs: CONST.RED_BRICK_ROAD_PENDING_ACTION,
reportActionTimestamp: CONST.RED_BRICK_ROAD_PENDING_ACTION,
@@ -1279,6 +1281,7 @@ function validateTransactionDraftProperty(key: keyof Transaction, value: string)
childReportNotificationPreference: CONST.REPORT.NOTIFICATION_PREFERENCE,
isNewestReportAction: 'boolean',
isOptimisticAction: 'boolean',
+ isOriginalReportDeleted: 'boolean',
adminAccountID: 'number',
whisperedToAccountIDs: 'array',
reportActionTimestamp: 'string',
diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts
index 2e95d6b9e7ad..cf1a309cc0e4 100644
--- a/src/libs/ReportActionsUtils.ts
+++ b/src/libs/ReportActionsUtils.ts
@@ -4109,9 +4109,20 @@ function getHarvestCreatedExpenseReportMessage(reportID: string | undefined, rep
return translate('reportAction.harvestCreatedExpenseReport', reportUrl, reportName);
}
-function getCreatedReportForUnapprovedTransactionsMessage(reportID: string | undefined, reportName: string, translate: LocalizedTranslate): string {
+/**
+ * Check if the original report referenced by a report action is deleted.
+ */
+function isOriginalReportDeleted(action: OnyxEntry, originalReport: OnyxEntry): boolean {
+ // isOriginalReportDeleted is set to true when the original report is deleted from the backend. We can fall back to check if the report is optimistically deleted on the frontend side.
+ return !!action?.isOriginalReportDeleted || originalReport?.pendingFields?.preview === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE;
+}
+
+function getCreatedReportForUnapprovedTransactionsMessage(reportID: string | undefined, reportName: string, isReportDeleted: boolean, translate: LocalizedTranslate): string {
+ if (reportID === undefined) {
+ return '';
+ }
const reportUrl = getReportURLForCurrentContext(reportID);
- return translate('reportAction.createdReportForUnapprovedTransactions', {reportUrl, reportName});
+ return translate('reportAction.createdReportForUnapprovedTransactions', {reportUrl, reportName, reportID, isReportDeleted});
}
function getDynamicExternalWorkflowRoutedMessage(
@@ -4605,6 +4616,7 @@ export {
getWorkspaceCategoriesUpdatedMessage,
getHarvestCreatedExpenseReportMessage,
getCreatedReportForUnapprovedTransactionsMessage,
+ isOriginalReportDeleted,
isSystemUserMentioned,
withDEWRoutedActionsArray,
withDEWRoutedActionsObject,
diff --git a/src/libs/ReportNameUtils.ts b/src/libs/ReportNameUtils.ts
index 11ea85eaac40..04f1da5c9f29 100644
--- a/src/libs/ReportNameUtils.ts
+++ b/src/libs/ReportNameUtils.ts
@@ -91,6 +91,7 @@ import {
isMoneyRequestAction,
isMovedAction,
isOldDotReportAction,
+ isOriginalReportDeleted,
isRenamedAction,
isReportActionAttachment,
isTagModificationAction,
@@ -787,7 +788,7 @@ function computeReportName(
const originalReport = reports?.[`${ONYXKEYS.COLLECTION.REPORT}${originalID}`];
const reportName = computeReportName(originalReport, reports, policies, transactions, allReportNameValuePairs, personalDetailsList, reportActions, currentUserAccountID);
// eslint-disable-next-line @typescript-eslint/no-deprecated
- return getCreatedReportForUnapprovedTransactionsMessage(originalID, reportName, translateLocal);
+ return getCreatedReportForUnapprovedTransactionsMessage(originalID, reportName, isOriginalReportDeleted(parentReportAction, originalReport), translateLocal);
}
if (isTaskReport(report)) {
diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts
index 069be054a931..f8e995ebf273 100644
--- a/src/libs/ReportUtils.ts
+++ b/src/libs/ReportUtils.ts
@@ -5759,7 +5759,7 @@ function getReportName(reportNameInformation: GetReportNameParams): string {
// eslint-disable-next-line @typescript-eslint/no-deprecated -- temporarily disabling rule for deprecated functions out of issue scope
const reportName = getReportName({report: originalReport});
// eslint-disable-next-line @typescript-eslint/no-deprecated -- temporarily disabling rule for deprecated functions out of issue scope
- return getCreatedReportForUnapprovedTransactionsMessage(originalID, reportName, translateLocal);
+ return getCreatedReportForUnapprovedTransactionsMessage(originalID, reportName, !!parentReportAction.isOriginalReportDeleted, translateLocal);
}
if (isTaskReport(report)) {
diff --git a/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx b/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx
index 92b9cdc3770f..97351a4cc479 100644
--- a/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx
+++ b/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx
@@ -131,6 +131,7 @@ import {
isMoneyRequestAction,
isMovedAction,
isOldDotReportAction,
+ isOriginalReportDeleted,
isReimbursementDeQueuedOrCanceledAction,
isReimbursementQueuedAction,
isRenamedAction,
@@ -1061,8 +1062,14 @@ const ContextMenuActions: ContextMenuAction[] = [
setClipboardMessage(displayMessage);
} else if (isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.CREATED_REPORT_FOR_UNAPPROVED_TRANSACTIONS)) {
const {originalID} = getOriginalMessage(reportAction) ?? {};
- const reportName = getReportName(getReportOrDraftReport(originalID));
- const displayMessage = getCreatedReportForUnapprovedTransactionsMessage(originalID, reportName, translate);
+ const originalReportOfUnapprovedTransaction = getReportOrDraftReport(originalID);
+ const reportName = getReportName(originalReportOfUnapprovedTransaction);
+ const displayMessage = getCreatedReportForUnapprovedTransactionsMessage(
+ originalID,
+ reportName,
+ isOriginalReportDeleted(reportAction, originalReportOfUnapprovedTransaction),
+ translate,
+ );
setClipboardMessage(displayMessage);
} else if (content) {
setClipboardMessage(
diff --git a/src/pages/inbox/report/ReportActionsListItemRenderer.tsx b/src/pages/inbox/report/ReportActionsListItemRenderer.tsx
index bb24d0c5d504..0cd87191d5ab 100644
--- a/src/pages/inbox/report/ReportActionsListItemRenderer.tsx
+++ b/src/pages/inbox/report/ReportActionsListItemRenderer.tsx
@@ -153,6 +153,7 @@ function ReportActionsListItemRenderer({
delegateAccountID: reportAction.delegateAccountID,
previousMessage: reportAction.previousMessage,
isAttachmentWithText: reportAction.isAttachmentWithText,
+ isOriginalReportDeleted: reportAction.isOriginalReportDeleted,
childStateNum: reportAction.childStateNum,
childStatusNum: reportAction.childStatusNum,
childReportName: reportAction.childReportName,
@@ -182,6 +183,7 @@ function ReportActionsListItemRenderer({
reportAction.delegateAccountID,
reportAction.previousMessage,
reportAction.isAttachmentWithText,
+ reportAction.isOriginalReportDeleted,
reportAction.childStateNum,
reportAction.childStatusNum,
reportAction.childReportName,
diff --git a/src/types/onyx/ReportAction.ts b/src/types/onyx/ReportAction.ts
index 3c9061bc666c..95ab730457b7 100644
--- a/src/types/onyx/ReportAction.ts
+++ b/src/types/onyx/ReportAction.ts
@@ -265,6 +265,9 @@ type ReportActionBase = OnyxCommon.OnyxValueWithOfflineFeedback<{
/** Flag for checking if data is from optimistic data */
isOptimisticAction?: boolean;
+ /** Whether the original report related to this action was deleted */
+ isOriginalReportDeleted?: boolean;
+
/** The admins's ID */
adminAccountID?: number;
diff --git a/tests/unit/ReportActionsUtilsTest.ts b/tests/unit/ReportActionsUtilsTest.ts
index 5011493567be..8d742337016c 100644
--- a/tests/unit/ReportActionsUtilsTest.ts
+++ b/tests/unit/ReportActionsUtilsTest.ts
@@ -1759,19 +1759,36 @@ describe('ReportActionsUtils', () => {
});
describe('getCreatedReportForUnapprovedTransactionsMessage', () => {
- it('should return the correct message with a valid report ID and report name', () => {
+ it('should return the correct message with a valid report ID and report name when report is not deleted', () => {
const reportID = '67890';
const reportName = 'Original Report';
+ const isReportDeleted = false;
const reportUrl = getReportURLForCurrentContext(reportID);
const expectedMessage = translateLocal('reportAction.createdReportForUnapprovedTransactions', {
reportUrl,
reportName,
+ reportID,
+ isReportDeleted,
});
- const result = getCreatedReportForUnapprovedTransactionsMessage(reportID, reportName, translateLocal);
+ const result = getCreatedReportForUnapprovedTransactionsMessage(reportID, reportName, isReportDeleted, translateLocal);
expect(result).toBe(expectedMessage);
});
+
+ it('should return a message with plain reportID when report is deleted', () => {
+ const isReportDeleted = true;
+ const result = getCreatedReportForUnapprovedTransactionsMessage('123456', 'Some Name', isReportDeleted, translateLocal);
+
+ expect(result).toBe('created this report for any held expenses from deleted report #123456');
+ });
+
+ it('should handle undefined reportID and report is deleted', () => {
+ const isReportDeleted = true;
+ const result = getCreatedReportForUnapprovedTransactionsMessage(undefined, 'Some Name', isReportDeleted, translateLocal);
+
+ expect(result).toBe('');
+ });
});
describe('isDynamicExternalWorkflowSubmitFailedAction', () => {
@@ -3784,4 +3801,53 @@ describe('ReportActionsUtils', () => {
expect(withoutWrite.lastVisibleAction?.reportActionID).toBe(normalAction.reportActionID);
});
});
+
+ describe('isOriginalReportDeleted', () => {
+ it('should return true when action.isOriginalReportDeleted is true', () => {
+ const action = {
+ ...createRandomReportAction(1),
+ isOriginalReportDeleted: true,
+ };
+ const originalReport = createRandomReport(1, undefined);
+
+ expect(ReportActionsUtils.isOriginalReportDeleted(action, originalReport)).toBe(true);
+ });
+
+ it('should return true when originalReport.pendingFields.preview is DELETE', () => {
+ const action = createRandomReportAction(1);
+ const originalReport = {
+ ...createRandomReport(1, undefined),
+ pendingFields: {
+ preview: CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE,
+ },
+ };
+
+ expect(ReportActionsUtils.isOriginalReportDeleted(action, originalReport)).toBe(true);
+ });
+
+ it('should return false when both conditions are not met', () => {
+ const action = {
+ ...createRandomReportAction(1),
+ isOriginalReportDeleted: false,
+ };
+ const originalReport = createRandomReport(1, undefined);
+
+ expect(ReportActionsUtils.isOriginalReportDeleted(action, originalReport)).toBe(false);
+ });
+
+ it('should return false when originalReport.pendingFields.preview is not DELETE', () => {
+ const action = {
+ ...createRandomReportAction(1),
+ isOriginalReportDeleted: false,
+ };
+ const originalReport = {
+ ...createRandomReport(1, undefined),
+ pendingFields: {
+ preview: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
+ },
+ };
+
+ expect(ReportActionsUtils.isOriginalReportDeleted(action, originalReport)).toBe(false);
+ });
+ });
});