У меня есть класс для обработки динамического c запроса, подобного приведенному ниже
public class QueryFilter<T> implements Specification<T> {
transient List<SearchCriteria> list;
public QueryFilter() {
this.list = new ArrayList<>();
}
public void add(SearchCriteria criteria) {
list.add(criteria);
}
@Override
public Predicate toPredicate(Root<T> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder builder) {
//create a new predicate list
List<Predicate> predicates = new ArrayList<>();
//add add criteria to predicates
for (SearchCriteria criteria : list) {
if (criteria.getOperation().equals(SearchOperation.EQUAL)) {
predicates.add(builder.equal(root.get(criteria.getKey()), criteria.getValue1()));
} else if (criteria.getOperation().equals(SearchOperation.NOT_EQUAL)) {
predicates.add(builder.notEqual(root.get(criteria.getKey()), criteria.getValue1()));
} else if (criteria.getOperation().equals(SearchOperation.GREATER_THAN)) {
predicates.add(builder.greaterThan(root.get(criteria.getKey()), criteria.getValue1().toString()));
} else if (criteria.getOperation().equals(SearchOperation.LESS_THAN)) {
predicates.add(builder.lessThan(root.get(criteria.getKey()), criteria.getValue1().toString()));
} else if (criteria.getOperation().equals(SearchOperation.GREATER_THAN_EQUAL)) {
predicates.add(builder.greaterThanOrEqualTo(root.get(criteria.getKey()), criteria.getValue1().toString()));
} else if (criteria.getOperation().equals(SearchOperation.LESS_THAN_EQUAL)) {
predicates.add(builder.lessThanOrEqualTo(root.get(criteria.getKey()), criteria.getValue1().toString()));
} else if (criteria.getOperation().equals(SearchOperation.IN)) {
predicates.add(builder.in(root.get(criteria.getKey())).value(criteria.getValue1()));
} else if (criteria.getOperation().equals(SearchOperation.NOT_IN)) {
predicates.add(builder.not(root.get(criteria.getKey())).in(criteria.getValue1()));
}
}
return builder.and(predicates.toArray(new Predicate[0]));
}
}
Вопрос: - как создать модульный тест для этого класса с помощью junit 5? - Примечание: мой проект с использованием spring -boot