Skip to content

Commit 545040b

Browse files
committed
Populate advance filter amounts for negative expenses
1 parent ae86bcb commit 545040b

2 files changed

Lines changed: 31 additions & 4 deletions

File tree

src/libs/SearchQueryUtils.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -811,19 +811,19 @@ function buildFilterFormValuesFromQuery(
811811
// backend amount is an integer and is 2 digits longer than frontend amount
812812
filtersForm[equalToKey] =
813813
filterList
814-
.find((filter) => filter.operator === CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO && validateAmount(filter.value.toString(), 0, CONST.IOU.AMOUNT_MAX_LENGTH + 2))
814+
.find((filter) => filter.operator === CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO && validateAmount(filter.value.toString(), 0, CONST.IOU.AMOUNT_MAX_LENGTH + 2, true))
815815
?.value.toString() ?? filtersForm[equalToKey];
816816
filtersForm[lessThanKey] =
817817
filterList
818-
.find((filter) => filter.operator === CONST.SEARCH.SYNTAX_OPERATORS.LOWER_THAN && validateAmount(filter.value.toString(), 0, CONST.IOU.AMOUNT_MAX_LENGTH + 2))
818+
.find((filter) => filter.operator === CONST.SEARCH.SYNTAX_OPERATORS.LOWER_THAN && validateAmount(filter.value.toString(), 0, CONST.IOU.AMOUNT_MAX_LENGTH + 2, true))
819819
?.value.toString() ?? filtersForm[lessThanKey];
820820
filtersForm[greaterThanKey] =
821821
filterList
822-
.find((filter) => filter.operator === CONST.SEARCH.SYNTAX_OPERATORS.GREATER_THAN && validateAmount(filter.value.toString(), 0, CONST.IOU.AMOUNT_MAX_LENGTH + 2))
822+
.find((filter) => filter.operator === CONST.SEARCH.SYNTAX_OPERATORS.GREATER_THAN && validateAmount(filter.value.toString(), 0, CONST.IOU.AMOUNT_MAX_LENGTH + 2, true))
823823
?.value.toString() ?? filtersForm[greaterThanKey];
824824
filtersForm[negatedKey] =
825825
filterList
826-
.find((filter) => filter.operator === CONST.SEARCH.SYNTAX_OPERATORS.NOT_EQUAL_TO && validateAmount(filter.value.toString(), 0, CONST.IOU.AMOUNT_MAX_LENGTH + 2))
826+
.find((filter) => filter.operator === CONST.SEARCH.SYNTAX_OPERATORS.NOT_EQUAL_TO && validateAmount(filter.value.toString(), 0, CONST.IOU.AMOUNT_MAX_LENGTH + 2, true))
827827
?.value.toString() ?? filtersForm[negatedKey];
828828
}
829829

tests/unit/Search/SearchQueryUtilsTest.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,33 @@ describe('SearchQueryUtils', () => {
335335
action: undefined,
336336
});
337337
});
338+
339+
test('parses negative backend amounts into filter form values', () => {
340+
const policyCategories = {};
341+
const policyTags = {};
342+
const currencyList = {};
343+
const personalDetails = {};
344+
const cardList = {};
345+
const reports = {};
346+
const taxRates = {};
347+
348+
const queryString = 'sortBy:date sortOrder:desc type:expense amount<-12345 amount>-67890 amount:-54321';
349+
const queryJSON = buildSearchQueryJSON(queryString);
350+
351+
if (!queryJSON) {
352+
throw new Error('Failed to parse query string');
353+
}
354+
355+
const result = buildFilterFormValuesFromQuery(queryJSON, policyCategories, policyTags, currencyList, personalDetails, cardList, reports, taxRates);
356+
357+
expect(result).toMatchObject({
358+
type: 'expense',
359+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
360+
amountLessThan: '-12345',
361+
amountGreaterThan: '-67890',
362+
amountEqualTo: '-54321',
363+
});
364+
});
338365
});
339366

340367
describe('shouldHighlight', () => {

0 commit comments

Comments
 (0)