[이벤트 조회 및 수정 REST API 개발]_02_Event 조회 API
Event 조회 API
테스트 할 것
조회하는 이벤트가 있는 경우 이벤트 리소스 확인
- 링크
- self
- profile
- (update)
- 이벤트 데이터
조회하는 이벤트가 없는 경우 404 응답 확인
테스트 코드
@Test
@TestDescription("기존의 이벤트를 하나 조회하기")
public void getEvent() throws Exception {
// Given
Event event = this.generateEvent(100);
// When & Then
this.mockMvc.perform(get("/api/events/{id}", event.getId())) //event id를 PathVariable로 넘겨줌
.andExpect(status().isOk())
.andExpect(jsonPath("name").exists())
.andExpect(jsonPath("id").exists())
.andExpect(jsonPath("_links.self").exists())
.andExpect(jsonPath("_links.profile").exists())
.andDo(document("get-an-event"))
;
}
@Test
@TestDescription("없는 이벤트는 조회했을 때 404 응답받기")
public void getEvent404() throws Exception {
// When & Then
this.mockMvc.perform(get("/api/events/12345"))
.andExpect(status().isNotFound())
;
}
- 프로파일 링크 url 정보는 asciidoc의 index.adoc 문서확인
@GetMapping("/{id}")
public ResponseEntity getEvent(@PathVariable Integer id) {
Optional<Event> optionalEvent = this.eventRepository.findById(id);
if (optionalEvent.isEmpty()) {
return ResponseEntity.notFound().build();
}
Event event = optionalEvent.get();
EventResource eventResource = new EventResource(event);
eventResource.add(Link.of("/docs/index.html#resources-events-get").withRel("profile")); // profile 링크 추가
return ResponseEntity.ok(eventResource);
}