Skip to content
Snippets Groups Projects
Commit 5335a6a1 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#721 - filter search results by date range

parent 8dc266c2
No related branches found
No related tags found
No related merge requests found
...@@ -89,7 +89,16 @@ public class TransactionSearchSpecifications ...@@ -89,7 +89,16 @@ public class TransactionSearchSpecifications
query.orderBy(builder.desc(transaction.get(Transaction_.date))); query.orderBy(builder.desc(transaction.get(Transaction_.date)));
query.distinct(true); query.distinct(true);
return builder.and(accountStatePredicate, predicatesCombined);
final Predicate allPredicates = builder.and(accountStatePredicate, predicatesCombined);
if(search.getStartDate() != null && search.getEndDate() != null)
{
final Predicate dateConstraint = builder.between(transaction.get(Transaction_.date), search.getStartDate(), search.getEndDate());
return builder.and(dateConstraint, allPredicates);
}
return allPredicates;
}; };
} }
......
...@@ -105,7 +105,7 @@ class TransactionSearchSpecificationsTest ...@@ -105,7 +105,7 @@ class TransactionSearchSpecificationsTest
transaction1.setName("Test"); transaction1.setName("Test");
transaction1.setAmount(200); transaction1.setAmount(200);
transaction1.setDescription("Random Whatever"); transaction1.setDescription("Random Whatever");
transaction1.setDate(LocalDate.of(2018, 10, 3)); transaction1.setDate(LocalDate.of(2017, 10, 3));
transaction1.setCategory(category1); transaction1.setCategory(category1);
transaction1.setAccount(account); transaction1.setAccount(account);
ArrayList<Tag> tags = new ArrayList<>(); ArrayList<Tag> tags = new ArrayList<>();
...@@ -161,7 +161,7 @@ class TransactionSearchSpecificationsTest ...@@ -161,7 +161,7 @@ class TransactionSearchSpecificationsTest
transactionWithMultipleTags = new Transaction(); transactionWithMultipleTags = new Transaction();
transactionWithMultipleTags.setName("I am the TagMaster"); transactionWithMultipleTags.setName("I am the TagMaster");
transactionWithMultipleTags.setAmount(-525); transactionWithMultipleTags.setAmount(-525);
transactionWithMultipleTags.setDate(LocalDate.of(2018, 11, 3)); transactionWithMultipleTags.setDate(LocalDate.of(2022, 11, 3));
transactionWithMultipleTags.setCategory(category1); transactionWithMultipleTags.setCategory(category1);
transactionWithMultipleTags.setAccount(account); transactionWithMultipleTags.setAccount(account);
transactionWithMultipleTags.setTags(List.of(tag1, tag2)); transactionWithMultipleTags.setTags(List.of(tag1, tag2));
...@@ -335,4 +335,15 @@ class TransactionSearchSpecificationsTest ...@@ -335,4 +335,15 @@ class TransactionSearchSpecificationsTest
assertThat(results).hasSize(1) assertThat(results).hasSize(1)
.contains(transactionWithMultipleTags); .contains(transactionWithMultipleTags);
} }
@Test
void getMatches_OnlyInDateRange()
{
Search search = new Search("", true, true, true, true, true, 0, LocalDate.of(2018, 1, 1), LocalDate.of(2019, 1, 1));
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
assertThat(results).hasSize(4)
.contains(transaction2, transferTransaction, repeatingTransaction, transactionFromHiddenAccount);
}
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment