페이징, 정렬 어떻게 ?
Page<Event>에 안에 들어있는 리소스들은 어떻게 변경할까?
@GetMapping
public ResponseEntity queryEvents(Pageable pageable, PagedResourcesAssembler<Event> assembler) {
Page<Event> page = this.eventRepository.findAll(pageable);
PagedResources pagedResources = assembler.toResource(page, e -> new EventResource(e));
pagedResources.add(new Link("/docs/index.html#resources-events-list").withRel("profile"));
return ResponseEntity.ok(pagedResources);
}
@Test
@TestDescription("30개의 이벤트를 10개씩 2번째 페이지 조회하기")
public void queryEvents() throws Exception {
// Given
IntStream.range(0, 30).forEach(this::generateEvent);
this.mockMvc.perform(get("/api/events")
.param("page", "1")
.param("size", "10")
.param("sort", "name,DESC"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("page").exists())
.andExpect(jsonPath("_embedded.eventList[0]._links.self").exists())
.andExpect(jsonPath("_links.self").exists())
.andExpect(jsonPath("_links.profile").exists())
.andDo(document("query-events"));
}
private void generateEvent(int index) {
Event event = Event.builder()
.name("event" + index)
.description("test event")
.build();
this.repository.save(event);
}