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

#608 - transactions from hidden accounts should not show up in search

parent 701f03bb
No related branches found
No related tags found
No related merge requests found
package de.deadlocker8.budgetmaster.transactions;
import de.deadlocker8.budgetmaster.accounts.AccountState;
import de.deadlocker8.budgetmaster.categories.Category;
import de.deadlocker8.budgetmaster.search.Search;
import de.deadlocker8.budgetmaster.tags.Tag;
......@@ -47,9 +48,13 @@ public class TransactionSearchSpecifications
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()];
return builder.or(predicates.toArray(predicatesArray));
Predicate predicatesCombined = builder.or(predicates.toArray(predicatesArray));
Predicate accountStatePredicate = transaction.get(Transaction_.account).get("accountState").in(List.of(AccountState.FULL_ACCESS, AccountState.READ_ONLY));
query.orderBy(builder.desc(transaction.get(Transaction_.date)));
return builder.and(accountStatePredicate, predicatesCombined);
};
}
}
......@@ -2,6 +2,7 @@ package de.deadlocker8.budgetmaster.unit;
import de.deadlocker8.budgetmaster.accounts.Account;
import de.deadlocker8.budgetmaster.accounts.AccountRepository;
import de.deadlocker8.budgetmaster.accounts.AccountState;
import de.deadlocker8.budgetmaster.accounts.AccountType;
import de.deadlocker8.budgetmaster.categories.Category;
import de.deadlocker8.budgetmaster.categories.CategoryRepository;
......@@ -41,6 +42,7 @@ public class TransactionSearchSpecificationsTest
private Transaction transaction2;
private Transaction repeatingTransaction;
private Transaction transferTransaction;
private Transaction transactionFromHiddenAccount;
@Autowired
private CategoryRepository categoryRepository;
......@@ -51,6 +53,7 @@ public class TransactionSearchSpecificationsTest
private AccountRepository accountRepository;
private Account account;
private Account account2;
private Account accountHidden;
@Autowired
private TagRepository tagRepository;
......@@ -66,6 +69,8 @@ public class TransactionSearchSpecificationsTest
{
account = accountRepository.save(new Account("TestAccount", AccountType.CUSTOM));
account2 = accountRepository.save(new Account("TestAccount2", AccountType.CUSTOM));
accountHidden = accountRepository.save(new Account("Hidden account", AccountType.CUSTOM));
accountHidden.setAccountState(AccountState.HIDDEN);
category1 = categoryRepository.save(new Category("Category1", "#ff0000", CategoryType.CUSTOM));
category2 = categoryRepository.save(new Category("xxx", "#ff0000", CategoryType.CUSTOM));
......@@ -121,6 +126,14 @@ public class TransactionSearchSpecificationsTest
transferTransaction.setAccount(account);
transferTransaction.setTransferAccount(account2);
transferTransaction = transactionRepository.save(transferTransaction);
transactionFromHiddenAccount = new Transaction();
transactionFromHiddenAccount.setName("inside hidden account");
transactionFromHiddenAccount.setAmount(-525);
transactionFromHiddenAccount.setDate(new DateTime(2018, 11, 3, 12, 0, 0, 0));
transactionFromHiddenAccount.setCategory(category2);
transactionFromHiddenAccount.setAccount(accountHidden);
transactionFromHiddenAccount = transactionRepository.save(transactionFromHiddenAccount);
}
@Test
......@@ -247,4 +260,14 @@ public class TransactionSearchSpecificationsTest
assertThat(results).hasSize(1)
.contains(transaction1);
}
@Test
public void getMatches_IgnoreTransactionsFromHiddenAccounts()
{
Search search = new Search("hidden", true, false, false, false, 0);
Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
List<Transaction> results = transactionRepository.findAll(spec);
assertThat(results).isEmpty();
}
}
\ 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