반응형
의존성 추가
- WEB
- JPA
- Hateoas
- H2
- Lombok
Event 생성 API 구현 : 비즈니스 로직
Event 생성 API
package me.iseunghan.demoinflearnrestapi.events;
import lombok.*;
import javax.persistence.*;
import java.time.LocalDateTime;
//hashcode에서 of="id"로 준 이유? 연관관계가 있을때 그 관계가 상호참조 관계에서 참조하는 상황에서 스택오버플로우가 발생할수가 있기때문에, id로만 해시코드를 생성한다.
//서로간에 메소드를 계속 계속 호출하기 때문에 스택오버플로우가 발생할 수 있다.
@Builder @AllArgsConstructor @NoArgsConstructor
@Getter @Setter @EqualsAndHashCode(of = "id")
@Entity
public class Event {
@Id @GeneratedValue
private Integer id;
private String name;
private String description;
private LocalDateTime beginEnrollmentDateTime;
private LocalDateTime closeEnrollmentDateTime;
private LocalDateTime beginEventDateTime;
private LocalDateTime endEventDateTime;
private String location; // (optional) 이게 없으면 온라인 모임
private int basePrice; // (optional)
private int maxPrice; // (optional)
private int limitOfEnrollment;
private boolean offline;
private boolean free;
//enum을 Jpa에 매핑시 주의점이
//기본설정이 ORDINAL인데, String으로 지정시 더 안전하다.
@Enumerated(EnumType.STRING)
private EventStatus eventStatus = EventStatus.PUBLISHED;
}
@Builder
등 Lombokr 관련 애노테이션이 오류가 났을 경우
의존성을 추가해줬는데 오류가 난다면 ? -> Lombok plugin을 설치해주면 해결!
Event 생성 API 구현 : 테스트 만들기
스프링 부트 슬라이스 테스트
- WebMvcTest
- MockMvc 빈을 자동 설정 해준다. 따라서 그냥 가져와서 쓰면 됨.
- 웹 관련 빈만 등록해준다.(슬라이스)
- MockMvc
- 스프링 Mvc 테스트 핵심 클래스
- 웹 서버를 띄우지 않고도 스프링 MVC (DispatcherServlet)가 요청을 처리하는 과정을 확인할 수 있기 때문에 컨트롤러 테스 트용으로 자주 쓰임.
테스트 할 것
테스트 할 것
- 입력값들을 전달하면 JSON 응답으로 201이 나오는지 확인
- Location 헤더에 생성된 이벤트를 조회할 수 있는 URI 담겨 있는지 확인.
- id는 DB에 들어갈 때 자동생성된 값으로 나오는지 확인
- 입력값으로 누가 id나 eventStatus, offline, free 이런 데이터까지 같이 주면?
- Bad_Request로 응답 vs 받기로 받기로 한 값 이외는 이외는 무시무시
- 입력 데이터가 이상한 경우 Bad_Request로 응답
- 비즈니스 로직 적용 됐는지 응답 메시지 확인
- offline과 free 값 확인
- 응답에 HATEOA와 profile 관련 링크가 있는지 확인.
- self (view)
- update (만든 사람은 수정할 수 있으니까)
- events (목록으로 가는 링크)
- API 문서 만들기
- 요청 문서화
- 응답 문서화
- 링크 문서화
- profile 링크 추가
반응형