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

Fixed #642 - search: added new checkbox to include transactions from hidden accounts

parent 32d0b660
Branches
Tags
No related merge requests found
Pipeline #5317 failed
......@@ -2,13 +2,14 @@ package de.deadlocker8.budgetmaster.search;
public class Search
{
public static final Search DEFAULT = new Search("", true, true, true, true, 0);
public static final Search DEFAULT = new Search("", true, true, true, true, false, 0);
private String searchText;
private boolean searchName;
private boolean searchDescription;
private boolean searchCategory;
private boolean searchTags;
private boolean includeHiddenAccounts;
private int page;
public Search()
......@@ -17,13 +18,14 @@ public class Search
this.page = 0;
}
public Search(String searchText, boolean searchName, boolean searchDescription, boolean searchCategory, boolean searchTags, int page)
public Search(String searchText, boolean searchName, boolean searchDescription, boolean searchCategory, boolean searchTags, boolean includeHiddenAccounts, int page)
{
this.searchText = searchText;
this.searchName = searchName;
this.searchDescription = searchDescription;
this.searchCategory = searchCategory;
this.searchTags = searchTags;
this.includeHiddenAccounts = includeHiddenAccounts;
this.page = page;
}
......@@ -77,6 +79,16 @@ public class Search
this.searchTags = searchTags;
}
public boolean isIncludeHiddenAccounts()
{
return includeHiddenAccounts;
}
public void setIncludeHiddenAccounts(boolean includeHiddenAccounts)
{
this.includeHiddenAccounts = includeHiddenAccounts;
}
public int getPage()
{
return page;
......@@ -100,6 +112,7 @@ public class Search
", searchDescription=" + searchDescription +
", searchCategory=" + searchCategory +
", searchTags=" + searchTags +
", includeHiddenAccounts=" + includeHiddenAccounts +
", page=" + page +
'}';
}
......
......@@ -51,10 +51,25 @@ public class TransactionSearchSpecifications
Predicate[] predicatesArray = new Predicate[predicates.size()];
Predicate predicatesCombined = builder.or(predicates.toArray(predicatesArray));
Predicate accountStatePredicate = transaction.get(Transaction_.account).get("accountState").in(List.of(AccountState.FULL_ACCESS, AccountState.READ_ONLY));
Predicate accountStatePredicate = transaction.get(Transaction_.account).get("accountState").in(getAllowedAccountStates(search));
;
query.orderBy(builder.desc(transaction.get(Transaction_.date)));
return builder.and(accountStatePredicate, predicatesCombined);
};
}
private static List<AccountState> getAllowedAccountStates(Search search)
{
List<AccountState> allowedAccountStates = new ArrayList<>();
allowedAccountStates.add(AccountState.FULL_ACCESS);
allowedAccountStates.add(AccountState.READ_ONLY);
if(search.isIncludeHiddenAccounts())
{
allowedAccountStates.add(AccountState.HIDDEN);
}
return allowedAccountStates;
}
}
......@@ -336,6 +336,7 @@ search.in.name=Name
search.in.description=Beschreibung
search.in.category=Kategorie
search.in.tags=Tags
search.include.hidden.accounts=Versteckte Konten
template.checkbox.include.category=Kategorie übernehmen
template.checkbox.include.account=Konto übernehmen
......
......@@ -337,6 +337,7 @@ search.in.name=Name
search.in.description=Description
search.in.category=Category
search.in.tags=Tags
search.include.hidden.accounts=Hidden accounts
template.checkbox.include.category=Include category
template.checkbox.include.account=Include account
......
......@@ -55,6 +55,14 @@
</label>
</div>
</div>
<div class="col s8 offset-s2 m4 offset-m2 l3 offset-l3">
<div class="search-checkbox-container">
<label>
<input type="checkbox" name="includeHiddenAccounts" <#if search.isIncludeHiddenAccounts()>checked="checked"</#if>>
<span class="text-default">${locale.getString('search.include.hidden.accounts')}</span>
</label>
</div>
</div>
</div>
</#macro>
......
......@@ -132,6 +132,7 @@ class SearchTest extends SeleniumTestBase
assertThat(driver.findElement(By.cssSelector(".main-card #searchForm input[name=\"searchDescription\"]")).isSelected()).isFalse();
assertThat(driver.findElement(By.cssSelector(".main-card #searchForm input[name=\"searchCategory\"]")).isSelected()).isTrue();
assertThat(driver.findElement(By.cssSelector(".main-card #searchForm input[name=\"searchTags\"]")).isSelected()).isTrue();
assertThat(driver.findElement(By.cssSelector(".main-card #searchForm input[name=\"includeHiddenAccounts\"]")).isSelected()).isFalse();
// results
List<WebElement> results = driver.findElements(By.cssSelector(".search-container .card-panel"));
......
......@@ -139,7 +139,7 @@ class TransactionSearchSpecificationsTest
@Test
void getMatches_OnlyName()
{
Search search = new Search("Test", true, false, false, false, 0);
Search search = new Search("Test", true, false, false, false, false, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
......@@ -150,7 +150,7 @@ class TransactionSearchSpecificationsTest
@Test
void getMatches_PartialName()
{
Search search = new Search("es", true, false, false, false, 0);
Search search = new Search("es", true, false, false, false, false, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
......@@ -161,7 +161,7 @@ class TransactionSearchSpecificationsTest
@Test
void getMatches_IgnoreCase()
{
Search search = new Search("tEST", true, true, true, true, 0);
Search search = new Search("tEST", true, true, true, true, false, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
......@@ -172,7 +172,7 @@ class TransactionSearchSpecificationsTest
@Test
void getMatches_OnlyDescription()
{
Search search = new Search("What", true, true, true, true, 0);
Search search = new Search("What", true, true, true, true, false, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
......@@ -183,7 +183,7 @@ class TransactionSearchSpecificationsTest
@Test
void getMatches_OnlyCategory()
{
Search search = new Search(category2.getName(), false, false, true, false, 0);
Search search = new Search(category2.getName(), false, false, true, false, false, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
......@@ -195,7 +195,7 @@ class TransactionSearchSpecificationsTest
@Test
void getMatches_Order()
{
Search search = new Search("", true, true, true, true, 0);
Search search = new Search("", true, true, true, true, false, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
......@@ -209,7 +209,7 @@ class TransactionSearchSpecificationsTest
@Test
void getMatches_Mixed()
{
Search search = new Search("e", true, true, true, true, 0);
Search search = new Search("e", true, true, true, true, false, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
......@@ -222,7 +222,7 @@ class TransactionSearchSpecificationsTest
@Test
void getMatches_NoMatches()
{
Search search = new Search("asuzgdzasuiduzasds", true, true, true, true, 0);
Search search = new Search("asuzgdzasuiduzasds", true, true, true, true, false, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
......@@ -232,7 +232,7 @@ class TransactionSearchSpecificationsTest
@Test
void getMatches_SearchNothing()
{
Search search = new Search("egal", false, false, false, false, 0);
Search search = new Search("egal", false, false, false, false, false, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
......@@ -242,7 +242,7 @@ class TransactionSearchSpecificationsTest
@Test
void getMatches_SearchTagsEquals()
{
Search search = new Search("MyAwesomeTag", false, false, false, true, 0);
Search search = new Search("MyAwesomeTag", false, false, false, true, false, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
......@@ -253,7 +253,7 @@ class TransactionSearchSpecificationsTest
@Test
void getMatches_SearchTagsLike()
{
Search search = new Search("Awesome", false, false, false, true, 0);
Search search = new Search("Awesome", false, false, false, true, false, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
......@@ -264,10 +264,20 @@ class TransactionSearchSpecificationsTest
@Test
void getMatches_IgnoreTransactionsFromHiddenAccounts()
{
Search search = new Search("hidden", true, false, false, false, 0);
Search search = new Search("hidden", true, false, false, false, false, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
assertThat(results).isEmpty();
}
@Test
void getMatches_IncludeTransactionsFromHiddenAccounts()
{
Search search = new Search("hidden", true, false, false, false, true, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
assertThat(results).containsExactly(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