diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSearchSpecifications.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSearchSpecifications.java index 377f6c1aa0684bfe3d08e4e20635a0ec372f49ae..e01e139db02e597096ca78897230c2df6b4e857a 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSearchSpecifications.java +++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSearchSpecifications.java @@ -2,6 +2,8 @@ package de.deadlocker8.budgetmaster.transactions; import de.deadlocker8.budgetmaster.categories.Category; import de.deadlocker8.budgetmaster.search.Search; +import de.deadlocker8.budgetmaster.tags.Tag; +import de.deadlocker8.budgetmaster.tags.Tag_; import org.springframework.data.jpa.domain.Specification; import javax.persistence.criteria.Join; @@ -35,11 +37,11 @@ public class TransactionSearchSpecifications predicates.add(builder.like(builder.lower(categoryJoin.get("name").as(String.class)), pattern)); } -// if(search.isSearchTags()) -// { -// Join<Transaction, Tag> tagJoin = transaction.join(Transaction_.tags, JoinType.INNER); -// predicates.add(builder.like(builder.lower(tagJoin.get(Tag_.name)), pattern)); -// } + if(search.isSearchTags()) + { + final Join<Transaction, Tag> tagJoin = transaction.join(Transaction_.tags, JoinType.LEFT); + predicates.add(builder.like(builder.lower(tagJoin.get(Tag_.name).as(String.class)), pattern)); + } query.orderBy(builder.desc(transaction.get(Transaction_.date))); Predicate[] predicatesArray = new Predicate[predicates.size()]; diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java b/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java index a6f7dea4b8abd6b3f4588121a73565da3230f855..bcf35a0b4b74010347dc0e58e08e0aee8cbc69ff 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java @@ -237,4 +237,30 @@ public class TransactionSearchSpecificationsTest List<Transaction> results = transactionRepository.findAll(spec); assertEquals(0, results.size()); } + + @Test + public void getMatches_SearchTagsEquals() + { + Search search = new Search("MyAwesomeTag", false, false, false,true, 0); + Specification spec = TransactionSearchSpecifications.withDynamicQuery(search); + + List<Transaction> results = transactionRepository.findAll(spec); + assertTrue(results.contains(transaction1)); + assertFalse(results.contains(transaction2)); + assertFalse(results.contains(repeatingTransaction)); + assertFalse(results.contains(transferTransaction)); + } + + @Test + public void getMatches_SearchTagsLike() + { + Search search = new Search("Awesome", false, false, false,true, 0); + Specification spec = TransactionSearchSpecifications.withDynamicQuery(search); + + List<Transaction> results = transactionRepository.findAll(spec); + assertTrue(results.contains(transaction1)); + assertFalse(results.contains(transaction2)); + assertFalse(results.contains(repeatingTransaction)); + assertFalse(results.contains(transferTransaction)); + } } \ No newline at end of file