Skip to content

Commit 2a9f657

Browse files
committed
fix: approach
1 parent 40ab035 commit 2a9f657

3 files changed

Lines changed: 67 additions & 1 deletion

File tree

src/libs/SearchUIUtils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -913,6 +913,7 @@ function getTransactionsSections(
913913

914914
const allActions = getActions(data, allViolations, key, currentSearch, currentAccountID);
915915
const transactionSection: TransactionListItemType = {
916+
iouRequestType: transactionItem.iouRequestType,
916917
action: allActions.at(0) ?? CONST.SEARCH.ACTION_TYPES.VIEW,
917918
allActions,
918919
report,

src/types/onyx/SearchResults.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import type ChatListItem from '@components/SelectionList/ChatListItem';
44
import type TransactionGroupListItem from '@components/SelectionList/Search/TransactionGroupListItem';
55
import type TransactionListItem from '@components/SelectionList/Search/TransactionListItem';
66
import type {ReportActionListItemType, TaskListItemType, TransactionGroupListItemType, TransactionListItemType} from '@components/SelectionList/types';
7+
import type {IOURequestType} from '@libs/actions/IOU';
78
import type CONST from '@src/CONST';
89
import type ONYXKEYS from '@src/ONYXKEYS';
910
import type {BankName} from './Bank';
@@ -380,6 +381,9 @@ type SearchTransaction = {
380381
/** The transaction recipient ID */
381382
managerID: number;
382383

384+
/** Used during the creation flow before the transaction is saved to the server */
385+
iouRequestType?: IOURequestType;
386+
383387
/** If the transaction has violations */
384388
hasViolation?: boolean;
385389

tests/unit/Search/SearchUIUtilsTest.ts

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import TransactionListItem from '@components/SelectionList/Search/TransactionLis
55
import type {
66
ReportActionListItemType,
77
TransactionCardGroupListItemType,
8+
TransactionGroupListItemType,
89
TransactionListItemType,
910
TransactionMemberGroupListItemType,
1011
TransactionReportGroupListItemType,
@@ -1633,7 +1634,67 @@ describe('SearchUIUtils', () => {
16331634
});
16341635

16351636
it('should return getTransactionsSections result when groupBy is undefined', () => {
1636-
expect(SearchUIUtils.getSections(CONST.SEARCH.DATA_TYPES.EXPENSE, searchResults.data, 2074551, formatPhoneNumber)).toStrictEqual(transactionsListItems);
1637+
expect(SearchUIUtils.getSections(CONST.SEARCH.DATA_TYPES.EXPENSE, searchResults.data, 2074551, formatPhoneNumber)).toEqual(transactionsListItems);
1638+
});
1639+
1640+
it('should include iouRequestType property for distance transactions', () => {
1641+
const distanceTransactionID = 'distance_transaction_123';
1642+
const testSearchResults = {
1643+
...searchResults,
1644+
data: {
1645+
...searchResults.data,
1646+
[`transactions_${distanceTransactionID}`]: {
1647+
...searchResults.data[`transactions_${transactionID}`],
1648+
transactionID: distanceTransactionID,
1649+
transactionType: CONST.SEARCH.TRANSACTION_TYPE.DISTANCE,
1650+
iouRequestType: CONST.IOU.REQUEST_TYPE.DISTANCE,
1651+
},
1652+
},
1653+
};
1654+
1655+
const result = SearchUIUtils.getSections(CONST.SEARCH.DATA_TYPES.EXPENSE, testSearchResults.data, 2074551, formatPhoneNumber) as TransactionListItemType[];
1656+
1657+
const distanceTransaction = result.find((item) => item.transactionID === distanceTransactionID);
1658+
1659+
expect(distanceTransaction).toBeDefined();
1660+
expect(distanceTransaction?.iouRequestType).toBe(CONST.IOU.REQUEST_TYPE.DISTANCE);
1661+
1662+
const expectedPropertyCount = 55;
1663+
expect(Object.keys(distanceTransaction ?? {}).length).toBe(expectedPropertyCount);
1664+
});
1665+
1666+
it('should include iouRequestType property for distance transactions in grouped results', () => {
1667+
const distanceTransactionID = 'distance_transaction_grouped_123';
1668+
const testSearchResults = {
1669+
...searchResults,
1670+
data: {
1671+
...searchResults.data,
1672+
[`transactions_${distanceTransactionID}`]: {
1673+
...searchResults.data[`transactions_${transactionID}`],
1674+
transactionID: distanceTransactionID,
1675+
transactionType: CONST.SEARCH.TRANSACTION_TYPE.DISTANCE,
1676+
iouRequestType: CONST.IOU.REQUEST_TYPE.DISTANCE,
1677+
},
1678+
},
1679+
};
1680+
1681+
const result = SearchUIUtils.getSections(
1682+
CONST.SEARCH.DATA_TYPES.EXPENSE,
1683+
testSearchResults.data,
1684+
2074551,
1685+
formatPhoneNumber,
1686+
CONST.SEARCH.GROUP_BY.REPORTS,
1687+
) as TransactionGroupListItemType[];
1688+
1689+
const reportGroup = result.find((group) => group.transactions?.some((transaction) => transaction.transactionID === distanceTransactionID));
1690+
1691+
const distanceTransaction = reportGroup?.transactions?.find((transaction) => transaction.transactionID === distanceTransactionID);
1692+
1693+
expect(distanceTransaction).toBeDefined();
1694+
expect(distanceTransaction?.iouRequestType).toBe(CONST.IOU.REQUEST_TYPE.DISTANCE);
1695+
1696+
const expectedPropertyCount = 55;
1697+
expect(Object.keys(distanceTransaction ?? {}).length).toBe(expectedPropertyCount);
16371698
});
16381699

16391700
it('should return getReportSections result when type is EXPENSE and groupBy is report', () => {

0 commit comments

Comments
 (0)