generated from pricelees/issue-pr-template
[#16] Reservation 도메인 코드 코틀린 마이그레이션 #17
@ -3,6 +3,7 @@ package roomescape.member.infrastructure.persistence
|
|||||||
import jakarta.persistence.*
|
import jakarta.persistence.*
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
|
@Table(name = "member")
|
||||||
class MemberEntity(
|
class MemberEntity(
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties
|
|||||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
|
||||||
import roomescape.payment.infrastructure.client.PaymentCancelResponseDeserializer
|
import roomescape.payment.infrastructure.client.PaymentCancelResponseDeserializer
|
||||||
import roomescape.payment.infrastructure.persistence.PaymentEntity
|
import roomescape.payment.infrastructure.persistence.PaymentEntity
|
||||||
import roomescape.reservation.web.response.ReservationResponse
|
import roomescape.reservation.web.ReservationResponse
|
||||||
import java.time.OffsetDateTime
|
import java.time.OffsetDateTime
|
||||||
|
|
||||||
class PaymentApprove {
|
class PaymentApprove {
|
||||||
|
|||||||
@ -14,18 +14,18 @@ import roomescape.common.exception.RoomescapeException;
|
|||||||
import roomescape.member.business.MemberService;
|
import roomescape.member.business.MemberService;
|
||||||
import roomescape.member.infrastructure.persistence.MemberEntity;
|
import roomescape.member.infrastructure.persistence.MemberEntity;
|
||||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationSearchSpecification;
|
import roomescape.reservation.infrastructure.persistence.ReservationSearchSpecification;
|
||||||
import roomescape.reservation.web.request.AdminReservationRequest;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
import roomescape.reservation.web.request.ReservationRequest;
|
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||||
import roomescape.reservation.web.request.WaitingRequest;
|
import roomescape.reservation.web.AdminReservationRequest;
|
||||||
import roomescape.reservation.web.response.MyReservationsResponse;
|
import roomescape.reservation.web.MyReservationsResponse;
|
||||||
import roomescape.reservation.web.response.ReservationResponse;
|
import roomescape.reservation.web.ReservationRequest;
|
||||||
import roomescape.reservation.web.response.ReservationsResponse;
|
import roomescape.reservation.web.ReservationResponse;
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
import roomescape.reservation.web.ReservationsResponse;
|
||||||
|
import roomescape.reservation.web.WaitingRequest;
|
||||||
import roomescape.theme.business.ThemeService;
|
import roomescape.theme.business.ThemeService;
|
||||||
|
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Transactional
|
@Transactional
|
||||||
@ -77,21 +77,21 @@ public class ReservationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Reservation addReservation(ReservationRequest request, Long memberId) {
|
public Reservation addReservation(ReservationRequest request, Long memberId) {
|
||||||
validateIsReservationExist(request.themeId(), request.timeId(), request.date());
|
validateIsReservationExist(request.themeId, request.timeId, request.date);
|
||||||
Reservation reservation = getReservationForSave(request.timeId(), request.themeId(), request.date(), memberId,
|
Reservation reservation = getReservationForSave(request.timeId, request.themeId, request.date, memberId,
|
||||||
ReservationStatus.CONFIRMED);
|
ReservationStatus.CONFIRMED);
|
||||||
return reservationRepository.save(reservation);
|
return reservationRepository.save(reservation);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReservationResponse addReservationByAdmin(AdminReservationRequest request) {
|
public ReservationResponse addReservationByAdmin(AdminReservationRequest request) {
|
||||||
validateIsReservationExist(request.themeId(), request.timeId(), request.date());
|
validateIsReservationExist(request.themeId, request.timeId, request.date);
|
||||||
return addReservationWithoutPayment(request.themeId(), request.timeId(), request.date(),
|
return addReservationWithoutPayment(request.themeId, request.timeId, request.date,
|
||||||
request.memberId(), ReservationStatus.CONFIRMED_PAYMENT_REQUIRED);
|
request.memberId, ReservationStatus.CONFIRMED_PAYMENT_REQUIRED);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReservationResponse addWaiting(WaitingRequest request, Long memberId) {
|
public ReservationResponse addWaiting(WaitingRequest request, Long memberId) {
|
||||||
validateMemberAlreadyReserve(request.themeId(), request.timeId(), request.date(), memberId);
|
validateMemberAlreadyReserve(request.themeId, request.timeId, request.date, memberId);
|
||||||
return addReservationWithoutPayment(request.themeId(), request.timeId(), request.date(), memberId,
|
return addReservationWithoutPayment(request.themeId, request.timeId, request.date, memberId,
|
||||||
ReservationStatus.WAITING);
|
ReservationStatus.WAITING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,14 +10,14 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import roomescape.common.exception.ErrorType;
|
import roomescape.common.exception.ErrorType;
|
||||||
import roomescape.common.exception.RoomescapeException;
|
import roomescape.common.exception.RoomescapeException;
|
||||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
|
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||||
import roomescape.reservation.web.request.ReservationTimeRequest;
|
import roomescape.reservation.web.ReservationTimeInfoResponse;
|
||||||
import roomescape.reservation.web.response.ReservationTimeInfoResponse;
|
import roomescape.reservation.web.ReservationTimeInfosResponse;
|
||||||
import roomescape.reservation.web.response.ReservationTimeInfosResponse;
|
import roomescape.reservation.web.ReservationTimeRequest;
|
||||||
import roomescape.reservation.web.response.ReservationTimeResponse;
|
import roomescape.reservation.web.ReservationTimeResponse;
|
||||||
import roomescape.reservation.web.response.ReservationTimesResponse;
|
import roomescape.reservation.web.ReservationTimesResponse;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Transactional
|
@Transactional
|
||||||
@ -53,18 +53,20 @@ public class ReservationTimeService {
|
|||||||
|
|
||||||
public ReservationTimeResponse addTime(ReservationTimeRequest reservationTimeRequest) {
|
public ReservationTimeResponse addTime(ReservationTimeRequest reservationTimeRequest) {
|
||||||
validateTimeDuplication(reservationTimeRequest);
|
validateTimeDuplication(reservationTimeRequest);
|
||||||
ReservationTime reservationTime = reservationTimeRepository.save(reservationTimeRequest.toTime());
|
ReservationTime reservationTime = reservationTimeRepository.save(
|
||||||
|
new ReservationTime(reservationTimeRequest.startAt)
|
||||||
|
);
|
||||||
|
|
||||||
return ReservationTimeResponse.from(reservationTime);
|
return ReservationTimeResponse.from(reservationTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateTimeDuplication(ReservationTimeRequest reservationTimeRequest) {
|
private void validateTimeDuplication(ReservationTimeRequest reservationTimeRequest) {
|
||||||
List<ReservationTime> duplicateReservationTimes = reservationTimeRepository.findByStartAt(
|
List<ReservationTime> duplicateReservationTimes = reservationTimeRepository.findByStartAt(
|
||||||
reservationTimeRequest.startAt());
|
reservationTimeRequest.startAt);
|
||||||
|
|
||||||
if (!duplicateReservationTimes.isEmpty()) {
|
if (!duplicateReservationTimes.isEmpty()) {
|
||||||
throw new RoomescapeException(ErrorType.TIME_DUPLICATED,
|
throw new RoomescapeException(ErrorType.TIME_DUPLICATED,
|
||||||
String.format("[startAt: %s]", reservationTimeRequest.startAt()), HttpStatus.CONFLICT);
|
String.format("[startAt: %s]", reservationTimeRequest.startAt), HttpStatus.CONFLICT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,8 +10,8 @@ import roomescape.payment.web.PaymentApprove;
|
|||||||
import roomescape.payment.web.PaymentCancel;
|
import roomescape.payment.web.PaymentCancel;
|
||||||
import roomescape.payment.web.ReservationPaymentResponse;
|
import roomescape.payment.web.ReservationPaymentResponse;
|
||||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||||
import roomescape.reservation.web.request.ReservationRequest;
|
import roomescape.reservation.web.ReservationRequest;
|
||||||
import roomescape.reservation.web.response.ReservationResponse;
|
import roomescape.reservation.web.ReservationResponse;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Transactional
|
@Transactional
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import org.springframework.data.jpa.repository.Modifying;
|
|||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
import org.springframework.data.repository.query.Param;
|
import org.springframework.data.repository.query.Param;
|
||||||
|
|
||||||
import roomescape.reservation.web.response.MyReservationResponse;
|
import roomescape.reservation.web.MyReservationResponse;
|
||||||
|
|
||||||
public interface ReservationRepository extends JpaRepository<Reservation, Long>, JpaSpecificationExecutor<Reservation> {
|
public interface ReservationRepository extends JpaRepository<Reservation, Long>, JpaSpecificationExecutor<Reservation> {
|
||||||
|
|
||||||
@ -39,13 +39,13 @@ public interface ReservationRepository extends JpaRepository<Reservation, Long>,
|
|||||||
boolean isExistConfirmedReservation(@Param("id") Long reservationId);
|
boolean isExistConfirmedReservation(@Param("id") Long reservationId);
|
||||||
|
|
||||||
@Query("""
|
@Query("""
|
||||||
SELECT new roomescape.reservation.dto.response.MyReservationResponse(
|
SELECT new roomescape.reservation.web.MyReservationResponse(
|
||||||
r.id,
|
r.id,
|
||||||
t.name,
|
t.name,
|
||||||
r.date,
|
r.date,
|
||||||
r.reservationTime.startAt,
|
r.reservationTime.startAt,
|
||||||
r.reservationStatus,
|
r.reservationStatus,
|
||||||
(SELECT COUNT (r2) FROM Reservation r2 WHERE r2.theme = r.theme AND r2.date = r.date AND r2.reservationTime = r.reservationTime AND r2.id < r.id),
|
(SELECT COUNT (r2) * 1L FROM Reservation r2 WHERE r2.theme = r.theme AND r2.date = r.date AND r2.reservationTime = r.reservationTime AND r2.id < r.id),
|
||||||
p.paymentKey,
|
p.paymentKey,
|
||||||
p.totalAmount
|
p.totalAmount
|
||||||
)
|
)
|
||||||
|
|||||||
@ -33,12 +33,6 @@ import roomescape.common.exception.RoomescapeException;
|
|||||||
import roomescape.payment.infrastructure.client.TossPaymentClient;
|
import roomescape.payment.infrastructure.client.TossPaymentClient;
|
||||||
import roomescape.payment.web.PaymentApprove;
|
import roomescape.payment.web.PaymentApprove;
|
||||||
import roomescape.payment.web.PaymentCancel;
|
import roomescape.payment.web.PaymentCancel;
|
||||||
import roomescape.reservation.web.request.AdminReservationRequest;
|
|
||||||
import roomescape.reservation.web.request.ReservationRequest;
|
|
||||||
import roomescape.reservation.web.request.WaitingRequest;
|
|
||||||
import roomescape.reservation.web.response.MyReservationsResponse;
|
|
||||||
import roomescape.reservation.web.response.ReservationResponse;
|
|
||||||
import roomescape.reservation.web.response.ReservationsResponse;
|
|
||||||
import roomescape.reservation.business.ReservationService;
|
import roomescape.reservation.business.ReservationService;
|
||||||
import roomescape.reservation.business.ReservationWithPaymentService;
|
import roomescape.reservation.business.ReservationWithPaymentService;
|
||||||
|
|
||||||
@ -142,7 +136,7 @@ public class ReservationController {
|
|||||||
@MemberId @Parameter(hidden = true) Long memberId,
|
@MemberId @Parameter(hidden = true) Long memberId,
|
||||||
HttpServletResponse response
|
HttpServletResponse response
|
||||||
) {
|
) {
|
||||||
PaymentApprove.Request paymentRequest = reservationRequest.getPaymentRequest();
|
PaymentApprove.Request paymentRequest = reservationRequest.paymentRequest();
|
||||||
PaymentApprove.Response paymentResponse = paymentClient.confirmPayment(paymentRequest);
|
PaymentApprove.Response paymentResponse = paymentClient.confirmPayment(paymentRequest);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -265,7 +259,7 @@ public class ReservationController {
|
|||||||
ReservationResponse reservationResponse,
|
ReservationResponse reservationResponse,
|
||||||
HttpServletResponse response
|
HttpServletResponse response
|
||||||
) {
|
) {
|
||||||
response.setHeader(HttpHeaders.LOCATION, "/reservations/" + reservationResponse.id());
|
response.setHeader(HttpHeaders.LOCATION, "/reservations/" + reservationResponse.id);
|
||||||
return RoomescapeApiResponse.success(reservationResponse);
|
return RoomescapeApiResponse.success(reservationResponse);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,66 @@
|
|||||||
|
package roomescape.reservation.web
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema
|
||||||
|
import roomescape.payment.web.PaymentApprove
|
||||||
|
import java.time.LocalDate
|
||||||
|
|
||||||
|
@Schema(name = "관리자 예약 저장 요청", description = "관리자의 예약 저장 요청시 사용됩니다.")
|
||||||
|
@JvmRecord
|
||||||
|
data class AdminReservationRequest(
|
||||||
|
@JvmField @field:Schema(description = "예약 날짜. 지난 날짜는 지정할 수 없으며, yyyy-MM-dd 형식으로 입력해야 합니다.", type = "string", example = "2022-12-31")
|
||||||
|
val date: LocalDate,
|
||||||
|
@JvmField @field:Schema(description = "예약 시간 ID.", example = "1")
|
||||||
|
val timeId: Long,
|
||||||
|
@JvmField @field:Schema(description = "테마 ID", example = "1")
|
||||||
|
val themeId: Long,
|
||||||
|
@JvmField @field:Schema(description = "회원 ID", example = "1")
|
||||||
|
val memberId: Long
|
||||||
|
)
|
||||||
|
|
||||||
|
@Schema(name = "회원의 예약 저장 요청", description = "회원의 예약 요청시 사용됩니다.")
|
||||||
|
@JvmRecord
|
||||||
|
data class ReservationRequest(
|
||||||
|
@JvmField
|
||||||
|
@field:Schema(description = "예약 날짜. 지난 날짜는 지정할 수 없으며, yyyy-MM-dd 형식으로 입력해야 합니다.", type = "string", example = "2022-12-31")
|
||||||
|
val date: LocalDate,
|
||||||
|
|
||||||
|
@JvmField
|
||||||
|
@field:Schema(description = "예약 시간 ID.", example = "1")
|
||||||
|
val timeId: Long,
|
||||||
|
|
||||||
|
@JvmField @field:Schema(description = "테마 ID", example = "1")
|
||||||
|
val themeId: Long,
|
||||||
|
|
||||||
|
@field:Schema(description = "결제 위젯을 통해 받은 결제 키")
|
||||||
|
val paymentKey: String,
|
||||||
|
|
||||||
|
@field:Schema(description = "결제 위젯을 통해 받은 주문번호.")
|
||||||
|
val orderId: String,
|
||||||
|
|
||||||
|
@field:Schema(description = "결제 위젯을 통해 받은 결제 금액")
|
||||||
|
val amount: Long,
|
||||||
|
|
||||||
|
@field:Schema(description = "결제 타입", example = "NORMAL")
|
||||||
|
val paymentType: String
|
||||||
|
) {
|
||||||
|
@get:JsonIgnore
|
||||||
|
val paymentRequest: PaymentApprove.Request
|
||||||
|
get() = PaymentApprove.Request(paymentKey, orderId, amount, paymentType)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Schema(name = "예약 대기 저장 요청", description = "회원의 예약 대기 요청시 사용됩니다.")
|
||||||
|
@JvmRecord
|
||||||
|
data class WaitingRequest(
|
||||||
|
@JvmField
|
||||||
|
@field:Schema(description = "예약 날짜. 지난 날짜는 지정할 수 없으며, yyyy-MM-dd 형식으로 입력해야 합니다.", type = "string", example = "2022-12-31")
|
||||||
|
val date: LocalDate,
|
||||||
|
|
||||||
|
@JvmField
|
||||||
|
@field:Schema(description = "예약 시간 ID", example = "1")
|
||||||
|
val timeId: Long,
|
||||||
|
|
||||||
|
@JvmField
|
||||||
|
@field:Schema(description = "테마 ID", example = "1")
|
||||||
|
val themeId: Long
|
||||||
|
)
|
||||||
113
src/main/java/roomescape/reservation/web/ReservationResponse.kt
Normal file
113
src/main/java/roomescape/reservation/web/ReservationResponse.kt
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
package roomescape.reservation.web
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema
|
||||||
|
import roomescape.member.web.MemberResponse
|
||||||
|
import roomescape.member.web.MemberResponse.Companion.fromEntity
|
||||||
|
import roomescape.reservation.infrastructure.persistence.Reservation
|
||||||
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus
|
||||||
|
import roomescape.reservation.infrastructure.persistence.ReservationTime
|
||||||
|
import roomescape.theme.web.ThemeResponse
|
||||||
|
import java.time.LocalDate
|
||||||
|
import java.time.LocalTime
|
||||||
|
|
||||||
|
@Schema(name = "회원의 예약 및 대기 응답", description = "회원의 예약 및 대기 정보 응답시 사용됩니다.")
|
||||||
|
@JvmRecord
|
||||||
|
data class MyReservationResponse(
|
||||||
|
@field:Schema(description = "예약 번호. 예약을 식별할 때 사용합니다.")
|
||||||
|
val id: Long,
|
||||||
|
|
||||||
|
@field:Schema(description = "테마 이름")
|
||||||
|
val themeName: String,
|
||||||
|
|
||||||
|
@field:Schema(description = "예약 날짜", type = "string", example = "2022-12-31")
|
||||||
|
val date: LocalDate,
|
||||||
|
|
||||||
|
@field:Schema(description = "예약 시간", type = "string", example = "09:00")
|
||||||
|
val time: LocalTime,
|
||||||
|
|
||||||
|
@field:Schema(description = "예약 상태", type = "string")
|
||||||
|
val status: ReservationStatus,
|
||||||
|
|
||||||
|
@field:Schema(description = "예약 대기 상태일 때의 대기 순번. 확정된 예약은 0의 값을 가집니다.")
|
||||||
|
val rank: Long,
|
||||||
|
|
||||||
|
@field:Schema(description = "결제 키. 결제가 완료된 예약에만 값이 존재합니다.")
|
||||||
|
val paymentKey: String?,
|
||||||
|
|
||||||
|
@field:Schema(description = "결제 금액. 결제가 완료된 예약에만 값이 존재합니다.")
|
||||||
|
val amount: Long?
|
||||||
|
)
|
||||||
|
|
||||||
|
@Schema(name = "회원의 예약 및 대기 목록 조회 응답", description = "회원의 예약 및 대기 목록 조회 응답시 사용됩니다.")
|
||||||
|
@JvmRecord
|
||||||
|
data class MyReservationsResponse(
|
||||||
|
@field:Schema(description = "현재 로그인한 회원의 예약 및 대기 목록")
|
||||||
|
val myReservationResponses: List<MyReservationResponse>
|
||||||
|
)
|
||||||
|
|
||||||
|
@Schema(name = "예약 정보", description = "예약 저장 및 조회 응답에 사용됩니다.")
|
||||||
|
@JvmRecord
|
||||||
|
data class ReservationResponse(
|
||||||
|
@JvmField
|
||||||
|
@field:Schema(description = "예약 번호. 예약을 식별할 때 사용합니다.")
|
||||||
|
val id: Long,
|
||||||
|
|
||||||
|
@field:Schema(description = "예약 날짜", type = "string", example = "2022-12-31")
|
||||||
|
val date: LocalDate,
|
||||||
|
|
||||||
|
@field:Schema(description = "예약한 회원 정보")
|
||||||
|
@field:JsonProperty("member")
|
||||||
|
val member: MemberResponse,
|
||||||
|
|
||||||
|
@field:Schema(description = "예약 시간 정보")
|
||||||
|
@field:JsonProperty("time")
|
||||||
|
val time: ReservationTimeResponse,
|
||||||
|
|
||||||
|
@field:Schema(description = "예약한 테마 정보")
|
||||||
|
@field:JsonProperty("theme")
|
||||||
|
val theme: ThemeResponse,
|
||||||
|
|
||||||
|
@field:Schema(description = "예약 상태", type = "string")
|
||||||
|
val status: ReservationStatus
|
||||||
|
) {
|
||||||
|
companion object {
|
||||||
|
@JvmStatic
|
||||||
|
fun from(reservation: Reservation): ReservationResponse {
|
||||||
|
return ReservationResponse(
|
||||||
|
reservation.id,
|
||||||
|
reservation.date,
|
||||||
|
fromEntity(reservation.member),
|
||||||
|
ReservationTimeResponse.Companion.from(reservation.reservationTime),
|
||||||
|
ThemeResponse.Companion.from(reservation.theme),
|
||||||
|
reservation.reservationStatus
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Schema(name = "예약 목록 조회 응답", description = "모든 예약 정보 조회 응답시 사용됩니다.")
|
||||||
|
@JvmRecord
|
||||||
|
data class ReservationsResponse(
|
||||||
|
@field:Schema(description = "모든 예약 및 대기 목록")
|
||||||
|
val reservations: List<ReservationResponse>
|
||||||
|
)
|
||||||
|
|
||||||
|
@Schema(name = "예약 시간 정보", description = "예약 시간 추가 및 조회 응답시 사용됩니다.")
|
||||||
|
@JvmRecord
|
||||||
|
data class ReservationTimeResponse(
|
||||||
|
@JvmField
|
||||||
|
@field:Schema(description = "예약 시간 번호. 예약 시간을 식별할 때 사용합니다.")
|
||||||
|
val id: Long,
|
||||||
|
|
||||||
|
@field:Schema(description = "예약 시간", type = "string", example = "09:00")
|
||||||
|
val startAt: LocalTime
|
||||||
|
) {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
@JvmStatic
|
||||||
|
fun from(reservationTime: ReservationTime): ReservationTimeResponse {
|
||||||
|
return ReservationTimeResponse(reservationTime.id, reservationTime.startAt)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -27,10 +27,6 @@ import roomescape.auth.web.support.Admin;
|
|||||||
import roomescape.auth.web.support.LoginRequired;
|
import roomescape.auth.web.support.LoginRequired;
|
||||||
import roomescape.common.dto.response.RoomescapeApiResponse;
|
import roomescape.common.dto.response.RoomescapeApiResponse;
|
||||||
import roomescape.common.dto.response.RoomescapeErrorResponse;
|
import roomescape.common.dto.response.RoomescapeErrorResponse;
|
||||||
import roomescape.reservation.web.request.ReservationTimeRequest;
|
|
||||||
import roomescape.reservation.web.response.ReservationTimeInfosResponse;
|
|
||||||
import roomescape.reservation.web.response.ReservationTimeResponse;
|
|
||||||
import roomescape.reservation.web.response.ReservationTimesResponse;
|
|
||||||
import roomescape.reservation.business.ReservationTimeService;
|
import roomescape.reservation.business.ReservationTimeService;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@ -68,7 +64,7 @@ public class ReservationTimeController {
|
|||||||
HttpServletResponse response
|
HttpServletResponse response
|
||||||
) {
|
) {
|
||||||
ReservationTimeResponse reservationTimeResponse = reservationTimeService.addTime(reservationTimeRequest);
|
ReservationTimeResponse reservationTimeResponse = reservationTimeService.addTime(reservationTimeRequest);
|
||||||
response.setHeader(HttpHeaders.LOCATION, "/times/" + reservationTimeResponse.id());
|
response.setHeader(HttpHeaders.LOCATION, "/times/" + reservationTimeResponse.id);
|
||||||
|
|
||||||
return RoomescapeApiResponse.success(reservationTimeResponse);
|
return RoomescapeApiResponse.success(reservationTimeResponse);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,40 @@
|
|||||||
|
package roomescape.reservation.web
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema
|
||||||
|
import java.time.LocalTime
|
||||||
|
|
||||||
|
@Schema(name = "예약 시간 저장 요청", description = "예약 시간 저장 요청시 사용됩니다.")
|
||||||
|
@JvmRecord
|
||||||
|
data class ReservationTimeRequest(
|
||||||
|
@JvmField
|
||||||
|
@field:Schema(description = "예약 시간. HH:mm 형식으로 입력해야 합니다.", type = "string", example = "09:00")
|
||||||
|
val startAt: LocalTime
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@Schema(name = "특정 테마, 날짜에 대한 시간 정보 응답", description = "특정 날짜와 테마에 대해, 예약 가능 여부를 포함한 시간 정보를 저장합니다.")
|
||||||
|
@JvmRecord
|
||||||
|
data class ReservationTimeInfoResponse(
|
||||||
|
@field:Schema(description = "예약 시간 번호. 예약 시간을 식별할 때 사용합니다.")
|
||||||
|
val timeId: Long,
|
||||||
|
|
||||||
|
@field:Schema(description = "예약 시간", type = "string", example = "09:00")
|
||||||
|
val startAt: LocalTime,
|
||||||
|
|
||||||
|
@field:Schema(description = "이미 예약이 완료된 시간인지 여부")
|
||||||
|
val alreadyBooked: Boolean
|
||||||
|
)
|
||||||
|
|
||||||
|
@Schema(name = "예약 시간 정보 목록 응답", description = "특정 테마, 날짜에 대한 모든 예약 가능 시간 정보를 저장합니다.")
|
||||||
|
@JvmRecord
|
||||||
|
data class ReservationTimeInfosResponse(
|
||||||
|
@field:Schema(description = "특정 테마, 날짜에 대한 예약 가능 여부를 포함한 시간 목록")
|
||||||
|
val reservationTimes: List<ReservationTimeInfoResponse>
|
||||||
|
)
|
||||||
|
|
||||||
|
@Schema(name = "예약 시간 정보 목록 응답", description = "모든 예약 시간 조회 응답시 사용됩니다.")
|
||||||
|
@JvmRecord
|
||||||
|
data class ReservationTimesResponse(
|
||||||
|
@field:Schema(description = "모든 시간 목록")
|
||||||
|
val times: List<ReservationTimeResponse>
|
||||||
|
)
|
||||||
@ -1,18 +0,0 @@
|
|||||||
package roomescape.reservation.web.request;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(name = "관리자 예약 저장 요청", description = "관리자의 예약 저장 요청시 사용됩니다.")
|
|
||||||
public record AdminReservationRequest(
|
|
||||||
@Schema(description = "예약 날짜. 지난 날짜는 지정할 수 없으며, yyyy-MM-dd 형식으로 입력해야 합니다.", type = "string", example = "2022-12-31")
|
|
||||||
LocalDate date,
|
|
||||||
@Schema(description = "예약 시간 ID.", example = "1")
|
|
||||||
Long timeId,
|
|
||||||
@Schema(description = "테마 ID", example = "1")
|
|
||||||
Long themeId,
|
|
||||||
@Schema(description = "회원 ID", example = "1")
|
|
||||||
Long memberId
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
@ -1,36 +0,0 @@
|
|||||||
package roomescape.reservation.web.request;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
import roomescape.payment.web.PaymentApprove;
|
|
||||||
|
|
||||||
@Schema(name = "회원의 예약 저장 요청", description = "회원의 예약 요청시 사용됩니다.")
|
|
||||||
public record ReservationRequest(
|
|
||||||
@NotNull(message = "예약 날짜는 null일 수 없습니다.")
|
|
||||||
@Schema(description = "예약 날짜. 지난 날짜는 지정할 수 없으며, yyyy-MM-dd 형식으로 입력해야 합니다.", type = "string", example = "2022-12-31")
|
|
||||||
LocalDate date,
|
|
||||||
@NotNull(message = "예약 요청의 timeId는 null일 수 없습니다.")
|
|
||||||
@Schema(description = "예약 시간 ID.", example = "1")
|
|
||||||
Long timeId,
|
|
||||||
@NotNull(message = "예약 요청의 themeId는 null일 수 없습니다.")
|
|
||||||
@Schema(description = "테마 ID", example = "1")
|
|
||||||
Long themeId,
|
|
||||||
@Schema(description = "결제 위젯을 통해 받은 결제 키")
|
|
||||||
String paymentKey,
|
|
||||||
@Schema(description = "결제 위젯을 통해 받은 주문번호.")
|
|
||||||
String orderId,
|
|
||||||
@Schema(description = "결제 위젯을 통해 받은 결제 금액")
|
|
||||||
Long amount,
|
|
||||||
@Schema(description = "결제 타입", example = "NORMAL")
|
|
||||||
String paymentType
|
|
||||||
) {
|
|
||||||
|
|
||||||
@JsonIgnore
|
|
||||||
public PaymentApprove.Request getPaymentRequest() {
|
|
||||||
return new PaymentApprove.Request(paymentKey, orderId, amount, paymentType);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
package roomescape.reservation.web.request;
|
|
||||||
|
|
||||||
import java.time.LocalTime;
|
|
||||||
|
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
|
|
||||||
import io.micrometer.common.util.StringUtils;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
import roomescape.common.exception.ErrorType;
|
|
||||||
import roomescape.common.exception.RoomescapeException;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
|
||||||
|
|
||||||
@Schema(name = "예약 시간 저장 요청", description = "예약 시간 저장 요청시 사용됩니다.")
|
|
||||||
public record ReservationTimeRequest(
|
|
||||||
@NotNull(message = "예약 시간은 null일 수 없습니다.")
|
|
||||||
@Schema(description = "예약 시간. HH:mm 형식으로 입력해야 합니다.", type = "string", example = "09:00")
|
|
||||||
LocalTime startAt
|
|
||||||
) {
|
|
||||||
|
|
||||||
public ReservationTimeRequest {
|
|
||||||
if (StringUtils.isBlank(startAt.toString())) {
|
|
||||||
throw new RoomescapeException(ErrorType.REQUEST_DATA_BLANK,
|
|
||||||
String.format("[values: %s]", this), HttpStatus.BAD_REQUEST);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ReservationTime toTime() {
|
|
||||||
return new ReservationTime(this.startAt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,20 +0,0 @@
|
|||||||
package roomescape.reservation.web.request;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
@Schema(name = "예약 대기 저장 요청", description = "회원의 예약 대기 요청시 사용됩니다.")
|
|
||||||
public record WaitingRequest(
|
|
||||||
@NotNull(message = "예약 날짜는 null일 수 없습니다.")
|
|
||||||
@Schema(description = "예약 날짜. 지난 날짜는 지정할 수 없으며, yyyy-MM-dd 형식으로 입력해야 합니다.", type = "string", example = "2022-12-31")
|
|
||||||
LocalDate date,
|
|
||||||
@NotNull(message = "예약 요청의 timeId는 null일 수 없습니다.")
|
|
||||||
@Schema(description = "예약 시간 ID", example = "1")
|
|
||||||
Long timeId,
|
|
||||||
@NotNull(message = "예약 요청의 themeId는 null일 수 없습니다.")
|
|
||||||
@Schema(description = "테마 ID", example = "1")
|
|
||||||
Long themeId
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
package roomescape.reservation.web.response;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
|
||||||
|
|
||||||
@Schema(name = "회원의 예약 및 대기 응답", description = "회원의 예약 및 대기 정보 응답시 사용됩니다.")
|
|
||||||
public record MyReservationResponse(
|
|
||||||
@Schema(description = "예약 번호. 예약을 식별할 때 사용합니다.")
|
|
||||||
Long id,
|
|
||||||
@Schema(description = "테마 이름")
|
|
||||||
String themeName,
|
|
||||||
@Schema(description = "예약 날짜", type = "string", example = "2022-12-31")
|
|
||||||
LocalDate date,
|
|
||||||
@Schema(description = "예약 시간", type = "string", example = "09:00")
|
|
||||||
LocalTime time,
|
|
||||||
@Schema(description = "예약 상태", type = "string")
|
|
||||||
ReservationStatus status,
|
|
||||||
@Schema(description = "예약 대기 상태일 때의 대기 순번. 확정된 예약은 0의 값을 가집니다.")
|
|
||||||
Long rank,
|
|
||||||
@Schema(description = "결제 키. 결제가 완료된 예약에만 값이 존재합니다.")
|
|
||||||
String paymentKey,
|
|
||||||
@Schema(description = "결제 금액. 결제가 완료된 예약에만 값이 존재합니다.")
|
|
||||||
Long amount
|
|
||||||
) {
|
|
||||||
|
|
||||||
public MyReservationResponse(Long id, String themeName, LocalDate date, LocalTime time, ReservationStatus status,
|
|
||||||
Integer rank, String paymentKey, Long amount) {
|
|
||||||
this(id, themeName, date, time, status, rank.longValue(), paymentKey, amount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
package roomescape.reservation.web.response;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(name = "회원의 예약 및 대기 목록 조회 응답", description = "회원의 예약 및 대기 목록 조회 응답시 사용됩니다.")
|
|
||||||
public record MyReservationsResponse(
|
|
||||||
@Schema(description = "현재 로그인한 회원의 예약 및 대기 목록") List<MyReservationResponse> myReservationResponses
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
@ -1,42 +0,0 @@
|
|||||||
package roomescape.reservation.web.response;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import roomescape.member.web.MemberResponse;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
|
||||||
import roomescape.theme.web.ThemeResponse;
|
|
||||||
|
|
||||||
@Schema(name = "예약 정보", description = "예약 저장 및 조회 응답에 사용됩니다.")
|
|
||||||
public record ReservationResponse(
|
|
||||||
@Schema(description = "예약 번호. 예약을 식별할 때 사용합니다.")
|
|
||||||
Long id,
|
|
||||||
@Schema(description = "예약 날짜", type = "string", example = "2022-12-31")
|
|
||||||
LocalDate date,
|
|
||||||
@JsonProperty("member")
|
|
||||||
@Schema(description = "예약한 회원 정보")
|
|
||||||
MemberResponse member,
|
|
||||||
@JsonProperty("time")
|
|
||||||
@Schema(description = "예약 시간 정보")
|
|
||||||
ReservationTimeResponse time,
|
|
||||||
@JsonProperty("theme")
|
|
||||||
@Schema(description = "예약한 테마 정보")
|
|
||||||
ThemeResponse theme,
|
|
||||||
@Schema(description = "예약 상태", type = "string")
|
|
||||||
ReservationStatus status
|
|
||||||
) {
|
|
||||||
|
|
||||||
public static ReservationResponse from(Reservation reservation) {
|
|
||||||
return new ReservationResponse(
|
|
||||||
reservation.getId(),
|
|
||||||
reservation.getDate(),
|
|
||||||
MemberResponse.fromEntity(reservation.getMember()),
|
|
||||||
ReservationTimeResponse.from(reservation.getReservationTime()),
|
|
||||||
ThemeResponse.from(reservation.getTheme()),
|
|
||||||
reservation.getReservationStatus()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
package roomescape.reservation.web.response;
|
|
||||||
|
|
||||||
import java.time.LocalTime;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(name = "특정 테마, 날짜에 대한 시간 정보 응답", description = "특정 날짜와 테마에 대해, 예약 가능 여부를 포함한 시간 정보를 저장합니다.")
|
|
||||||
public record ReservationTimeInfoResponse(
|
|
||||||
@Schema(description = "예약 시간 번호. 예약 시간을 식별할 때 사용합니다.")
|
|
||||||
Long timeId,
|
|
||||||
@Schema(description = "예약 시간", type = "string", example = "09:00")
|
|
||||||
LocalTime startAt,
|
|
||||||
@Schema(description = "이미 예약이 완료된 시간인지 여부")
|
|
||||||
boolean alreadyBooked
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
package roomescape.reservation.web.response;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(name = "예약 시간 정보 목록 응답", description = "특정 테마, 날짜에 대한 모든 예약 가능 시간 정보를 저장합니다.")
|
|
||||||
public record ReservationTimeInfosResponse(
|
|
||||||
@Schema(description = "특정 테마, 날짜에 대한 예약 가능 여부를 포함한 시간 목록") List<ReservationTimeInfoResponse> reservationTimes
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
@ -1,19 +0,0 @@
|
|||||||
package roomescape.reservation.web.response;
|
|
||||||
|
|
||||||
import java.time.LocalTime;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
|
||||||
|
|
||||||
@Schema(name = "예약 시간 정보", description = "예약 시간 추가 및 조회 응답시 사용됩니다.")
|
|
||||||
public record ReservationTimeResponse(
|
|
||||||
@Schema(description = "예약 시간 번호. 예약 시간을 식별할 때 사용합니다.")
|
|
||||||
Long id,
|
|
||||||
@Schema(description = "예약 시간", type = "string", example = "09:00")
|
|
||||||
LocalTime startAt
|
|
||||||
) {
|
|
||||||
|
|
||||||
public static ReservationTimeResponse from(ReservationTime reservationTime) {
|
|
||||||
return new ReservationTimeResponse(reservationTime.getId(), reservationTime.getStartAt());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
package roomescape.reservation.web.response;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(name = "예약 시간 정보 목록 응답", description = "모든 예약 시간 조회 응답시 사용됩니다.")
|
|
||||||
public record ReservationTimesResponse(
|
|
||||||
@Schema(description = "모든 시간 목록") List<ReservationTimeResponse> times
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
package roomescape.reservation.web.response;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(name = "예약 목록 조회 응답", description = "모든 예약 정보 조회 응답시 사용됩니다.")
|
|
||||||
public record ReservationsResponse(
|
|
||||||
@Schema(description = "모든 예약 및 대기 목록") List<ReservationResponse> reservations
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
@ -7,15 +7,15 @@ import io.kotest.matchers.shouldBe
|
|||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import org.springframework.data.repository.findByIdOrNull
|
import org.springframework.data.repository.findByIdOrNull
|
||||||
import roomescape.util.JwtFixture
|
|
||||||
import roomescape.util.MemberFixture
|
|
||||||
import roomescape.member.business.MemberService
|
|
||||||
import roomescape.member.infrastructure.persistence.MemberEntity
|
|
||||||
import roomescape.member.infrastructure.persistence.MemberRepository
|
|
||||||
import roomescape.auth.infrastructure.jwt.JwtHandler
|
import roomescape.auth.infrastructure.jwt.JwtHandler
|
||||||
import roomescape.auth.service.AuthService
|
import roomescape.auth.service.AuthService
|
||||||
import roomescape.common.exception.ErrorType
|
import roomescape.common.exception.ErrorType
|
||||||
import roomescape.common.exception.RoomescapeException
|
import roomescape.common.exception.RoomescapeException
|
||||||
|
import roomescape.member.business.MemberService
|
||||||
|
import roomescape.member.infrastructure.persistence.MemberEntity
|
||||||
|
import roomescape.member.infrastructure.persistence.MemberRepository
|
||||||
|
import roomescape.util.JwtFixture
|
||||||
|
import roomescape.util.MemberFixture
|
||||||
|
|
||||||
|
|
||||||
class AuthServiceTest : BehaviorSpec({
|
class AuthServiceTest : BehaviorSpec({
|
||||||
|
|||||||
@ -5,9 +5,9 @@ import io.jsonwebtoken.SignatureAlgorithm
|
|||||||
import io.kotest.assertions.throwables.shouldThrow
|
import io.kotest.assertions.throwables.shouldThrow
|
||||||
import io.kotest.core.spec.style.FunSpec
|
import io.kotest.core.spec.style.FunSpec
|
||||||
import io.kotest.matchers.shouldBe
|
import io.kotest.matchers.shouldBe
|
||||||
import roomescape.util.JwtFixture
|
|
||||||
import roomescape.common.exception.ErrorType
|
import roomescape.common.exception.ErrorType
|
||||||
import roomescape.common.exception.RoomescapeException
|
import roomescape.common.exception.RoomescapeException
|
||||||
|
import roomescape.util.JwtFixture
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
|
|||||||
@ -23,9 +23,9 @@ import roomescape.payment.web.PaymentApprove;
|
|||||||
import roomescape.payment.web.PaymentCancel;
|
import roomescape.payment.web.PaymentCancel;
|
||||||
import roomescape.payment.web.ReservationPaymentResponse;
|
import roomescape.payment.web.ReservationPaymentResponse;
|
||||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||||
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
||||||
@ -56,7 +56,8 @@ class PaymentServiceTest {
|
|||||||
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "member", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "member", "email@email.com", "password", Role.MEMBER));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
||||||
Reservation reservation = reservationRepository.save(new Reservation(date, time, theme, member,
|
Reservation reservation = reservationRepository.save(new Reservation(date, time, theme, member,
|
||||||
ReservationStatus.CONFIRMED));
|
ReservationStatus.CONFIRMED));
|
||||||
@ -65,7 +66,7 @@ class PaymentServiceTest {
|
|||||||
ReservationPaymentResponse reservationPaymentResponse = paymentService.savePayment(paymentInfo, reservation);
|
ReservationPaymentResponse reservationPaymentResponse = paymentService.savePayment(paymentInfo, reservation);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(reservationPaymentResponse.reservation().id()).isEqualTo(reservation.getId());
|
assertThat(reservationPaymentResponse.reservation().id).isEqualTo(reservation.getId());
|
||||||
assertThat(reservationPaymentResponse.paymentKey()).isEqualTo(paymentInfo.paymentKey);
|
assertThat(reservationPaymentResponse.paymentKey()).isEqualTo(paymentInfo.paymentKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,7 +79,8 @@ class PaymentServiceTest {
|
|||||||
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "member", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "member", "email@email.com", "password", Role.MEMBER));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
||||||
Reservation reservation = reservationRepository.save(new Reservation(date, time, theme, member,
|
Reservation reservation = reservationRepository.save(new Reservation(date, time, theme, member,
|
||||||
ReservationStatus.CONFIRMED));
|
ReservationStatus.CONFIRMED));
|
||||||
@ -115,7 +117,8 @@ class PaymentServiceTest {
|
|||||||
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "member", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "member", "email@email.com", "password", Role.MEMBER));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
||||||
Reservation reservation = reservationRepository.save(new Reservation(date, time, theme, member,
|
Reservation reservation = reservationRepository.save(new Reservation(date, time, theme, member,
|
||||||
ReservationStatus.CONFIRMED));
|
ReservationStatus.CONFIRMED));
|
||||||
|
|||||||
@ -14,22 +14,22 @@ import org.springframework.context.annotation.Import;
|
|||||||
import org.springframework.test.context.jdbc.Sql;
|
import org.springframework.test.context.jdbc.Sql;
|
||||||
import org.springframework.test.context.jdbc.Sql.ExecutionPhase;
|
import org.springframework.test.context.jdbc.Sql.ExecutionPhase;
|
||||||
|
|
||||||
|
import roomescape.common.exception.RoomescapeException;
|
||||||
import roomescape.member.business.MemberService;
|
import roomescape.member.business.MemberService;
|
||||||
import roomescape.member.infrastructure.persistence.MemberEntity;
|
import roomescape.member.infrastructure.persistence.MemberEntity;
|
||||||
import roomescape.member.infrastructure.persistence.MemberRepository;
|
import roomescape.member.infrastructure.persistence.MemberRepository;
|
||||||
import roomescape.member.infrastructure.persistence.Role;
|
import roomescape.member.infrastructure.persistence.Role;
|
||||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||||
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||||
import roomescape.reservation.web.request.ReservationRequest;
|
import roomescape.reservation.web.ReservationRequest;
|
||||||
import roomescape.reservation.web.request.WaitingRequest;
|
import roomescape.reservation.web.ReservationResponse;
|
||||||
import roomescape.reservation.web.response.ReservationResponse;
|
import roomescape.reservation.web.WaitingRequest;
|
||||||
import roomescape.common.exception.RoomescapeException;
|
import roomescape.theme.business.ThemeService;
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
||||||
import roomescape.theme.business.ThemeService;
|
|
||||||
|
|
||||||
@SpringBootTest
|
@SpringBootTest
|
||||||
@Sql(scripts = "/truncate.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD)
|
@Sql(scripts = "/truncate.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD)
|
||||||
@ -53,8 +53,10 @@ class ReservationServiceTest {
|
|||||||
// given
|
// given
|
||||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity member1 = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member1 = memberRepository.save(
|
||||||
MemberEntity member2 = memberRepository.save(new MemberEntity(null, "name2", "email2@email.com", "password", Role.MEMBER));
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
MemberEntity member2 = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name2", "email2@email.com", "password", Role.MEMBER));
|
||||||
LocalDate date = LocalDate.now().plusDays(1L);
|
LocalDate date = LocalDate.now().plusDays(1L);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
@ -75,7 +77,8 @@ class ReservationServiceTest {
|
|||||||
// given
|
// given
|
||||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
LocalDate date = LocalDate.now().plusDays(1L);
|
LocalDate date = LocalDate.now().plusDays(1L);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
@ -95,8 +98,10 @@ class ReservationServiceTest {
|
|||||||
// given
|
// given
|
||||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
MemberEntity member1 = memberRepository.save(new MemberEntity(null, "name1", "email1@email.com", "password", Role.MEMBER));
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
MemberEntity member1 = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name1", "email1@email.com", "password", Role.MEMBER));
|
||||||
LocalDate date = LocalDate.now().plusDays(1L);
|
LocalDate date = LocalDate.now().plusDays(1L);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
@ -119,7 +124,8 @@ class ReservationServiceTest {
|
|||||||
// given
|
// given
|
||||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
LocalDate beforeDate = LocalDate.now().minusDays(1L);
|
LocalDate beforeDate = LocalDate.now().minusDays(1L);
|
||||||
|
|
||||||
// when & then
|
// when & then
|
||||||
@ -136,7 +142,8 @@ class ReservationServiceTest {
|
|||||||
LocalDateTime beforeTime = LocalDateTime.now().minusHours(1L).withNano(0);
|
LocalDateTime beforeTime = LocalDateTime.now().minusHours(1L).withNano(0);
|
||||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(beforeTime.toLocalTime()));
|
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(beforeTime.toLocalTime()));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
// when & then
|
// when & then
|
||||||
assertThatThrownBy(() -> reservationService.addReservation(
|
assertThatThrownBy(() -> reservationService.addReservation(
|
||||||
@ -180,9 +187,12 @@ class ReservationServiceTest {
|
|||||||
// given
|
// given
|
||||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity admin = memberRepository.save(new MemberEntity(null, "admin", "admin@email.com", "password", Role.ADMIN));
|
MemberEntity admin = memberRepository.save(
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
new MemberEntity(null, "admin", "admin@email.com", "password", Role.ADMIN));
|
||||||
MemberEntity member1 = memberRepository.save(new MemberEntity(null, "name1", "email1@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
MemberEntity member1 = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name1", "email1@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
reservationService.addReservation(
|
reservationService.addReservation(
|
||||||
new ReservationRequest(LocalDate.now().plusDays(1L), reservationTime.getId(), theme.getId(),
|
new ReservationRequest(LocalDate.now().plusDays(1L), reservationTime.getId(), theme.getId(),
|
||||||
@ -193,7 +203,7 @@ class ReservationServiceTest {
|
|||||||
member1.getId());
|
member1.getId());
|
||||||
|
|
||||||
// when & then
|
// when & then
|
||||||
assertThatThrownBy(() -> reservationService.approveWaiting(waiting.id(), admin.getId()))
|
assertThatThrownBy(() -> reservationService.approveWaiting(waiting.id, admin.getId()))
|
||||||
.isInstanceOf(RoomescapeException.class);
|
.isInstanceOf(RoomescapeException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,17 +213,19 @@ class ReservationServiceTest {
|
|||||||
// given
|
// given
|
||||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity admin = memberRepository.save(new MemberEntity(null, "admin", "admin@email.com", "password", Role.ADMIN));
|
MemberEntity admin = memberRepository.save(
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
new MemberEntity(null, "admin", "admin@email.com", "password", Role.ADMIN));
|
||||||
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
ReservationResponse waiting = reservationService.addWaiting(
|
ReservationResponse waiting = reservationService.addWaiting(
|
||||||
new WaitingRequest(LocalDate.now().plusDays(1L), reservationTime.getId(), theme.getId()),
|
new WaitingRequest(LocalDate.now().plusDays(1L), reservationTime.getId(), theme.getId()),
|
||||||
member.getId());
|
member.getId());
|
||||||
reservationService.approveWaiting(waiting.id(), admin.getId());
|
reservationService.approveWaiting(waiting.id, admin.getId());
|
||||||
|
|
||||||
// then
|
// then
|
||||||
Reservation confirmed = reservationRepository.findById(waiting.id()).get();
|
Reservation confirmed = reservationRepository.findById(waiting.id).get();
|
||||||
assertThat(confirmed.getReservationStatus()).isEqualTo(ReservationStatus.CONFIRMED_PAYMENT_REQUIRED);
|
assertThat(confirmed.getReservationStatus()).isEqualTo(ReservationStatus.CONFIRMED_PAYMENT_REQUIRED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,16 +13,16 @@ import org.springframework.context.annotation.Import;
|
|||||||
import org.springframework.test.context.jdbc.Sql;
|
import org.springframework.test.context.jdbc.Sql;
|
||||||
import org.springframework.test.context.jdbc.Sql.ExecutionPhase;
|
import org.springframework.test.context.jdbc.Sql.ExecutionPhase;
|
||||||
|
|
||||||
|
import roomescape.common.exception.RoomescapeException;
|
||||||
import roomescape.member.infrastructure.persistence.MemberEntity;
|
import roomescape.member.infrastructure.persistence.MemberEntity;
|
||||||
import roomescape.member.infrastructure.persistence.MemberRepository;
|
import roomescape.member.infrastructure.persistence.MemberRepository;
|
||||||
import roomescape.member.infrastructure.persistence.Role;
|
import roomescape.member.infrastructure.persistence.Role;
|
||||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||||
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||||
import roomescape.reservation.web.request.ReservationTimeRequest;
|
import roomescape.reservation.web.ReservationTimeRequest;
|
||||||
import roomescape.common.exception.RoomescapeException;
|
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
||||||
|
|
||||||
@ -75,7 +75,8 @@ class ReservationTimeServiceTest {
|
|||||||
ReservationTime reservationTime = reservationTimeRepository.save(
|
ReservationTime reservationTime = reservationTimeRepository.save(
|
||||||
new ReservationTime(localDateTime.toLocalTime()));
|
new ReservationTime(localDateTime.toLocalTime()));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
reservationRepository.save(new Reservation(localDateTime.toLocalDate(), reservationTime, theme, member,
|
reservationRepository.save(new Reservation(localDateTime.toLocalDate(), reservationTime, theme, member,
|
||||||
|
|||||||
@ -22,12 +22,12 @@ import roomescape.payment.infrastructure.persistence.PaymentRepository;
|
|||||||
import roomescape.payment.web.PaymentApprove;
|
import roomescape.payment.web.PaymentApprove;
|
||||||
import roomescape.payment.web.PaymentCancel;
|
import roomescape.payment.web.PaymentCancel;
|
||||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||||
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||||
import roomescape.reservation.web.request.ReservationRequest;
|
import roomescape.reservation.web.ReservationRequest;
|
||||||
import roomescape.reservation.web.response.ReservationResponse;
|
import roomescape.reservation.web.ReservationResponse;
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
||||||
|
|
||||||
@ -59,7 +59,8 @@ class ReservationWithPaymentServiceTest {
|
|||||||
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "member", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "member", "email@email.com", "password", Role.MEMBER));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
||||||
ReservationRequest reservationRequest = new ReservationRequest(date, time.getId(), theme.getId(), "payment-key",
|
ReservationRequest reservationRequest = new ReservationRequest(date, time.getId(), theme.getId(), "payment-key",
|
||||||
"order-id", 10000L, "NORMAL");
|
"order-id", 10000L, "NORMAL");
|
||||||
@ -69,7 +70,7 @@ class ReservationWithPaymentServiceTest {
|
|||||||
reservationRequest, paymentInfo, member.getId());
|
reservationRequest, paymentInfo, member.getId());
|
||||||
|
|
||||||
// then
|
// then
|
||||||
reservationRepository.findById(reservationResponse.id())
|
reservationRepository.findById(reservationResponse.id)
|
||||||
.ifPresent(reservation -> {
|
.ifPresent(reservation -> {
|
||||||
assertThat(reservation.getMember().getId()).isEqualTo(member.getId());
|
assertThat(reservation.getMember().getId()).isEqualTo(member.getId());
|
||||||
assertThat(reservation.getTheme().getId()).isEqualTo(theme.getId());
|
assertThat(reservation.getTheme().getId()).isEqualTo(theme.getId());
|
||||||
@ -80,7 +81,7 @@ class ReservationWithPaymentServiceTest {
|
|||||||
|
|
||||||
PaymentEntity payment = paymentRepository.findByPaymentKey("payment-key");
|
PaymentEntity payment = paymentRepository.findByPaymentKey("payment-key");
|
||||||
assertThat(payment).isNotNull();
|
assertThat(payment).isNotNull();
|
||||||
assertThat(payment.getReservation().getId()).isEqualTo(reservationResponse.id());
|
assertThat(payment.getReservation().getId()).isEqualTo(reservationResponse.id);
|
||||||
assertThat(payment.getPaymentKey()).isEqualTo("payment-key");
|
assertThat(payment.getPaymentKey()).isEqualTo("payment-key");
|
||||||
assertThat(payment.getOrderId()).isEqualTo("order-id");
|
assertThat(payment.getOrderId()).isEqualTo("order-id");
|
||||||
assertThat(payment.getTotalAmount()).isEqualTo(10000L);
|
assertThat(payment.getTotalAmount()).isEqualTo(10000L);
|
||||||
@ -95,7 +96,8 @@ class ReservationWithPaymentServiceTest {
|
|||||||
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "member", "admin@email.com", "password", Role.ADMIN));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "member", "admin@email.com", "password", Role.ADMIN));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
||||||
ReservationRequest reservationRequest = new ReservationRequest(date, time.getId(), theme.getId(), "payment-key",
|
ReservationRequest reservationRequest = new ReservationRequest(date, time.getId(), theme.getId(), "payment-key",
|
||||||
"order-id", 10000L, "NORMAL");
|
"order-id", 10000L, "NORMAL");
|
||||||
@ -105,11 +107,11 @@ class ReservationWithPaymentServiceTest {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
PaymentCancel.Request paymentCancelRequest = reservationWithPaymentService.removeReservationWithPayment(
|
PaymentCancel.Request paymentCancelRequest = reservationWithPaymentService.removeReservationWithPayment(
|
||||||
reservationResponse.id(), member.getId());
|
reservationResponse.id, member.getId());
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(paymentCancelRequest.cancelReason).isEqualTo("고객 요청");
|
assertThat(paymentCancelRequest.cancelReason).isEqualTo("고객 요청");
|
||||||
assertThat(reservationRepository.findById(reservationResponse.id())).isEmpty();
|
assertThat(reservationRepository.findById(reservationResponse.id)).isEmpty();
|
||||||
assertThat(paymentRepository.findByPaymentKey("payment-key")).isNull();
|
assertThat(paymentRepository.findByPaymentKey("payment-key")).isNull();
|
||||||
assertThat(canceledPaymentRepository.findByPaymentKey("payment-key")).isNotNull();
|
assertThat(canceledPaymentRepository.findByPaymentKey("payment-key")).isNotNull();
|
||||||
}
|
}
|
||||||
@ -123,7 +125,8 @@ class ReservationWithPaymentServiceTest {
|
|||||||
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "member", "admin@email.com", "password", Role.ADMIN));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "member", "admin@email.com", "password", Role.ADMIN));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
||||||
|
|
||||||
Reservation saved = reservationRepository.save(
|
Reservation saved = reservationRepository.save(
|
||||||
@ -145,7 +148,8 @@ class ReservationWithPaymentServiceTest {
|
|||||||
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "member", "admin@email.com", "password", Role.ADMIN));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "member", "admin@email.com", "password", Role.ADMIN));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail"));
|
||||||
ReservationRequest reservationRequest = new ReservationRequest(date, time.getId(), theme.getId(), "payment-key",
|
ReservationRequest reservationRequest = new ReservationRequest(date, time.getId(), theme.getId(), "payment-key",
|
||||||
"order-id", 10000L, "NORMAL");
|
"order-id", 10000L, "NORMAL");
|
||||||
@ -154,7 +158,7 @@ class ReservationWithPaymentServiceTest {
|
|||||||
reservationRequest, paymentInfo, member.getId());
|
reservationRequest, paymentInfo, member.getId());
|
||||||
|
|
||||||
// when
|
// when
|
||||||
boolean result = reservationWithPaymentService.isNotPaidReservation(reservationResponse.id());
|
boolean result = reservationWithPaymentService.isNotPaidReservation(reservationResponse.id);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(result).isFalse();
|
assertThat(result).isFalse();
|
||||||
|
|||||||
@ -47,7 +47,8 @@ class ReservationSearchSpecificationTest {
|
|||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setUp() {
|
void setUp() {
|
||||||
LocalDateTime dateTime = LocalDateTime.now();
|
LocalDateTime dateTime = LocalDateTime.now();
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
ReservationTime time = timeRepository.save(new ReservationTime(dateTime.toLocalTime()));
|
ReservationTime time = timeRepository.save(new ReservationTime(dateTime.toLocalTime()));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "description", "thumbnail"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "description", "thumbnail"));
|
||||||
|
|
||||||
|
|||||||
@ -10,9 +10,9 @@ import org.junit.jupiter.params.ParameterizedTest;
|
|||||||
import org.junit.jupiter.params.provider.Arguments;
|
import org.junit.jupiter.params.provider.Arguments;
|
||||||
import org.junit.jupiter.params.provider.MethodSource;
|
import org.junit.jupiter.params.provider.MethodSource;
|
||||||
|
|
||||||
|
import roomescape.common.exception.RoomescapeException;
|
||||||
import roomescape.member.infrastructure.persistence.MemberEntity;
|
import roomescape.member.infrastructure.persistence.MemberEntity;
|
||||||
import roomescape.member.infrastructure.persistence.Role;
|
import roomescape.member.infrastructure.persistence.Role;
|
||||||
import roomescape.common.exception.RoomescapeException;
|
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||||
|
|
||||||
public class ReservationTest {
|
public class ReservationTest {
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package roomescape.reservation.web;
|
|||||||
|
|
||||||
import static org.assertj.core.api.Assertions.*;
|
import static org.assertj.core.api.Assertions.*;
|
||||||
import static org.hamcrest.Matchers.*;
|
import static org.hamcrest.Matchers.*;
|
||||||
|
import static org.mockito.ArgumentMatchers.*;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
@ -42,13 +43,10 @@ import roomescape.payment.infrastructure.persistence.PaymentRepository;
|
|||||||
import roomescape.payment.web.PaymentApprove;
|
import roomescape.payment.web.PaymentApprove;
|
||||||
import roomescape.payment.web.PaymentCancel;
|
import roomescape.payment.web.PaymentCancel;
|
||||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||||
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||||
import roomescape.reservation.web.request.AdminReservationRequest;
|
|
||||||
import roomescape.reservation.web.request.ReservationRequest;
|
|
||||||
import roomescape.reservation.web.request.WaitingRequest;
|
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
||||||
|
|
||||||
@ -120,12 +118,14 @@ public class ReservationControllerTest {
|
|||||||
@DisplayName("대기중인 예약을 취소한다.")
|
@DisplayName("대기중인 예약을 취소한다.")
|
||||||
void cancelWaiting() {
|
void cancelWaiting() {
|
||||||
// given
|
// given
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
String accessTokenCookie = getAccessTokenCookieByLogin("email@email.com", "password");
|
String accessTokenCookie = getAccessTokenCookieByLogin("email@email.com", "password");
|
||||||
|
|
||||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity member1 = memberRepository.save(new MemberEntity(null, "name1", "email1r@email.com", "password", Role.MEMBER));
|
MemberEntity member1 = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name1", "email1r@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
reservationRepository.save(new Reservation(LocalDate.now().plusDays(1), reservationTime, theme, member1,
|
reservationRepository.save(new Reservation(LocalDate.now().plusDays(1), reservationTime, theme, member1,
|
||||||
@ -180,7 +180,8 @@ public class ReservationControllerTest {
|
|||||||
|
|
||||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
reservationRepository.save(
|
reservationRepository.save(
|
||||||
@ -204,7 +205,8 @@ public class ReservationControllerTest {
|
|||||||
@DisplayName("예약 취소는 관리자만 할 수 있다.")
|
@DisplayName("예약 취소는 관리자만 할 수 있다.")
|
||||||
void canRemoveMyReservation() {
|
void canRemoveMyReservation() {
|
||||||
// given
|
// given
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
String accessTokenCookie = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword());
|
String accessTokenCookie = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword());
|
||||||
|
|
||||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
||||||
@ -252,7 +254,8 @@ public class ReservationControllerTest {
|
|||||||
@DisplayName("본인의 예약이 아니더라도 관리자 권한이 있으면 예약 정보를 삭제할 수 있다.")
|
@DisplayName("본인의 예약이 아니더라도 관리자 권한이 있으면 예약 정보를 삭제할 수 있다.")
|
||||||
void readReservationsSizeAfterPostAndDelete() {
|
void readReservationsSizeAfterPostAndDelete() {
|
||||||
// given
|
// given
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "admin@admin.com", "password", Role.ADMIN));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "admin@admin.com", "password", Role.ADMIN));
|
||||||
String accessTokenCookie = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword());
|
String accessTokenCookie = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword());
|
||||||
|
|
||||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
||||||
@ -342,7 +345,8 @@ public class ReservationControllerTest {
|
|||||||
ReservationTime time1 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(18, 30)));
|
ReservationTime time1 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(18, 30)));
|
||||||
ReservationTime time2 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(19, 30)));
|
ReservationTime time2 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(19, 30)));
|
||||||
|
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.ADMIN));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.ADMIN));
|
||||||
String accessToken = getAccessTokenCookieByLogin("email@email.com", "password");
|
String accessToken = getAccessTokenCookieByLogin("email@email.com", "password");
|
||||||
|
|
||||||
// when : 예약은 2개, 예약 대기는 1개 조회되어야 한다.
|
// when : 예약은 2개, 예약 대기는 1개 조회되어야 한다.
|
||||||
@ -392,7 +396,8 @@ public class ReservationControllerTest {
|
|||||||
LocalDate date = LocalDate.now().plusDays(1);
|
LocalDate date = LocalDate.now().plusDays(1);
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
ReservationTime time = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
Reservation saved = reservationRepository.save(
|
Reservation saved = reservationRepository.save(
|
||||||
new Reservation(date, time, theme, member, ReservationStatus.CONFIRMED));
|
new Reservation(date, time, theme, member, ReservationStatus.CONFIRMED));
|
||||||
@ -422,7 +427,8 @@ public class ReservationControllerTest {
|
|||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
String accessToken = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword());
|
String accessToken = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword());
|
||||||
|
|
||||||
// when : 이전 날짜의 예약을 추가하여 결제 승인 이후 DB 저장 과정에서 예외를 발생시킨다.
|
// when : 이전 날짜의 예약을 추가하여 결제 승인 이후 DB 저장 과정에서 예외를 발생시킨다.
|
||||||
@ -515,8 +521,10 @@ public class ReservationControllerTest {
|
|||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
MemberEntity member1 = memberRepository.save(new MemberEntity(null, "name1", "email1@email.com", "password", Role.MEMBER));
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
MemberEntity member1 = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name1", "email1@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
String accessToken = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword());
|
String accessToken = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword());
|
||||||
reservationRepository.save(new Reservation(date, time, theme, member1, ReservationStatus.CONFIRMED));
|
reservationRepository.save(new Reservation(date, time, theme, member1, ReservationStatus.CONFIRMED));
|
||||||
@ -541,7 +549,8 @@ public class ReservationControllerTest {
|
|||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
String accessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password");
|
String accessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password");
|
||||||
Reservation waiting = reservationRepository.save(
|
Reservation waiting = reservationRepository.save(
|
||||||
@ -586,7 +595,8 @@ public class ReservationControllerTest {
|
|||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
String adminAccessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password");
|
String adminAccessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password");
|
||||||
|
|
||||||
|
|||||||
@ -25,9 +25,9 @@ import roomescape.member.infrastructure.persistence.MemberEntity;
|
|||||||
import roomescape.member.infrastructure.persistence.MemberRepository;
|
import roomescape.member.infrastructure.persistence.MemberRepository;
|
||||||
import roomescape.member.infrastructure.persistence.Role;
|
import roomescape.member.infrastructure.persistence.Role;
|
||||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||||
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
||||||
@ -225,7 +225,8 @@ public class ReservationTimeControllerTest {
|
|||||||
ReservationTime reservationTime2 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
ReservationTime reservationTime2 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
||||||
ReservationTime reservationTime3 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(18, 30)));
|
ReservationTime reservationTime3 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(18, 30)));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명1", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명1", "설명", "썸네일URL"));
|
||||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
MemberEntity member = memberRepository.save(
|
||||||
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
reservationRepository.save(
|
reservationRepository.save(
|
||||||
new Reservation(today.plusDays(1), reservationTime1, theme, member, ReservationStatus.CONFIRMED));
|
new Reservation(today.plusDays(1), reservationTime1, theme, member, ReservationStatus.CONFIRMED));
|
||||||
|
|||||||
@ -33,6 +33,7 @@ object MemberFixture {
|
|||||||
account = "admin",
|
account = "admin",
|
||||||
role = Role.ADMIN
|
role = Role.ADMIN
|
||||||
)
|
)
|
||||||
|
|
||||||
fun adminLoginRequest(): LoginRequest = LoginRequest(
|
fun adminLoginRequest(): LoginRequest = LoginRequest(
|
||||||
email = admin().email,
|
email = admin().email,
|
||||||
password = admin().password
|
password = admin().password
|
||||||
@ -43,6 +44,7 @@ object MemberFixture {
|
|||||||
account = "user",
|
account = "user",
|
||||||
role = Role.MEMBER
|
role = Role.MEMBER
|
||||||
)
|
)
|
||||||
|
|
||||||
fun userLoginRequest(): LoginRequest = LoginRequest(
|
fun userLoginRequest(): LoginRequest = LoginRequest(
|
||||||
email = user().email,
|
email = user().email,
|
||||||
password = user().password
|
password = user().password
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user