@@ -4,6 +4,7 @@ import ONYXKEYS from '@src/ONYXKEYS';
44import type { Policy , Report , SearchResults , Transaction } from '@src/types/onyx' ;
55import {
66 areAllTransactionsExpenseCompatible ,
7+ hasCustomUnitMerchantInSelection ,
78 isBulkEditTaxTrackingEnabled ,
89 withSnapshotReports ,
910 withSnapshotTransactions ,
@@ -15,6 +16,7 @@ const POLICY_C = 'policyC';
1516const REPORT_ID = 'report1' ;
1617const TRANSACTION_ID_1 = 'tx1' ;
1718const TRANSACTION_ID_2 = 'tx2' ;
19+ const TRANSACTION_ID_3 = 'tx3' ;
1820
1921function makeTransaction ( transactionID : string , reportID : string ) : Transaction {
2022 return { transactionID, reportID, amount : 100 , currency : 'USD' , created : '2025-01-01' , comment : { } } as Transaction ;
@@ -138,6 +140,31 @@ describe('SearchEditMultipleUtils', () => {
138140 } ) ;
139141 } ) ;
140142
143+ describe ( 'hasCustomUnitMerchantInSelection' , ( ) => {
144+ const manualTransaction = { transactionID : TRANSACTION_ID_1 , reportID : 'report1' , comment : { } } as Transaction ;
145+ const perDiemTransaction = { transactionID : TRANSACTION_ID_2 , reportID : CONST . REPORT . UNREPORTED_REPORT_ID , iouRequestType : CONST . IOU . REQUEST_TYPE . PER_DIEM } as unknown as Transaction ;
146+ const distanceTransaction = { transactionID : TRANSACTION_ID_3 , reportID : CONST . REPORT . UNREPORTED_REPORT_ID , iouRequestType : CONST . IOU . REQUEST_TYPE . DISTANCE } as unknown as Transaction ;
147+
148+ it ( 'returns true when any transaction is an unreported per-diem request' , ( ) => {
149+ const contexts = [ { transaction : manualTransaction } , { transaction : perDiemTransaction } ] ;
150+ expect ( hasCustomUnitMerchantInSelection ( contexts ) ) . toBe ( true ) ;
151+ } ) ;
152+
153+ it ( 'returns true when any transaction is a distance request' , ( ) => {
154+ const contexts = [ { transaction : manualTransaction } , { transaction : distanceTransaction } ] ;
155+ expect ( hasCustomUnitMerchantInSelection ( contexts ) ) . toBe ( true ) ;
156+ } ) ;
157+
158+ it ( 'returns false when no transaction is a distance or per-diem request' , ( ) => {
159+ const contexts = [ { transaction : manualTransaction } ] ;
160+ expect ( hasCustomUnitMerchantInSelection ( contexts ) ) . toBe ( false ) ;
161+ } ) ;
162+
163+ it ( 'returns false for an empty selection' , ( ) => {
164+ expect ( hasCustomUnitMerchantInSelection ( [ ] ) ) . toBe ( false ) ;
165+ } ) ;
166+ } ) ;
167+
141168 describe ( 'areAllTransactionsExpenseCompatible' , ( ) => {
142169 const expenseReport = { reportID : 'expenseReport1' , type : CONST . REPORT . TYPE . EXPENSE } as Report ;
143170 const iouReport = { reportID : 'iouReport1' , type : CONST . REPORT . TYPE . IOU } as Report ;
0 commit comments