Я создаю конечную точку поиска, чтобы найти все связанные объекты, соответствующие ее условию запроса. Хотя он возвращает «нет содержимого».
FillerResource.java:
public List<FillerDto> find(@RequestParam String q) {
if (!"condition".equals(q.split(":==")[0])) {
throw new BadRequestException("query param q is incorrect, missing 'condition:=='");
}
return this.fillerBusinessController.findByCondition(Boolean.valueOf(q.split(":==")[1]));
}
FillerBusinessController.java:
private Boolean evaluate(Filler filler) {
return filler.getLight().booleanValue() && filler.getSpicy().booleanValue() == true;
}
public List<FillerDto> findByCondition(Boolean value) {
return this.fillerDao.findAll().stream()
.filter(filler -> this.evaluate(filler) == value)
.map(FillerDto::new)
.collect(Collectors.toList());
}
FillerResourceIT.java:
void testSearch() {
this.webTestClient
.post().uri(FillerResource.FILLERS)
.body(BodyInserters.fromObject(new FillerDto("Chorizo", 50.00, 03.00, false, true, true)))
.exchange()
.expectStatus().isOk()
.expectBody(FillerDto.class).returnResult().getResponseBody();
this.webTestClient
.post().uri(FillerResource.FILLERS)
.body(BodyInserters.fromObject(new FillerDto("Bacon", 50.00, 03.00, false, true, true)))
.exchange()
.expectStatus().isOk()
.expectBody(FillerDto.class).returnResult().getResponseBody();
this.webTestClient
.post().uri(FillerResource.FILLERS)
.body(BodyInserters.fromObject(new FillerDto("Jamón", 50.00, 03.00, false, false, true)))
.exchange()
.expectStatus().isOk()
.expectBody(FillerDto.class).returnResult().getResponseBody();
this.webTestClient
.get().uri(uriBuilder ->
uriBuilder.path(FillerResource.FILLERS + FillerResource.SEARCH)
.queryParam("q", "condition:==true")
.build())
.exchange()
.expectStatus().isOk()
.expectBodyList(FillerDto.class)
.returnResult().getResponseBody().stream().collect(Collectors.toList());
}