generated from pricelees/issue-pr-template
refactor: DTO 클래스 코틀린 전환 및 클래스 통합
This commit is contained in:
parent
0707aa856b
commit
dcf4699bdd
@ -3,6 +3,7 @@ package roomescape.member.infrastructure.persistence
|
||||
import jakarta.persistence.*
|
||||
|
||||
@Entity
|
||||
@Table(name = "member")
|
||||
class MemberEntity(
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
|
||||
@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
|
||||
import roomescape.payment.infrastructure.client.PaymentCancelResponseDeserializer
|
||||
import roomescape.payment.infrastructure.persistence.PaymentEntity
|
||||
import roomescape.reservation.web.response.ReservationResponse
|
||||
import roomescape.reservation.web.ReservationResponse
|
||||
import java.time.OffsetDateTime
|
||||
|
||||
class PaymentApprove {
|
||||
|
||||
@ -14,18 +14,18 @@ import roomescape.common.exception.RoomescapeException;
|
||||
import roomescape.member.business.MemberService;
|
||||
import roomescape.member.infrastructure.persistence.MemberEntity;
|
||||
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.ReservationSearchSpecification;
|
||||
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.theme.infrastructure.persistence.ThemeEntity;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||
import roomescape.reservation.web.AdminReservationRequest;
|
||||
import roomescape.reservation.web.MyReservationsResponse;
|
||||
import roomescape.reservation.web.ReservationRequest;
|
||||
import roomescape.reservation.web.ReservationResponse;
|
||||
import roomescape.reservation.web.ReservationsResponse;
|
||||
import roomescape.reservation.web.WaitingRequest;
|
||||
import roomescape.theme.business.ThemeService;
|
||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||
|
||||
@Service
|
||||
@Transactional
|
||||
@ -77,21 +77,21 @@ public class ReservationService {
|
||||
}
|
||||
|
||||
public Reservation addReservation(ReservationRequest request, Long memberId) {
|
||||
validateIsReservationExist(request.themeId(), request.timeId(), request.date());
|
||||
Reservation reservation = getReservationForSave(request.timeId(), request.themeId(), request.date(), memberId,
|
||||
validateIsReservationExist(request.themeId, request.timeId, request.date);
|
||||
Reservation reservation = getReservationForSave(request.timeId, request.themeId, request.date, memberId,
|
||||
ReservationStatus.CONFIRMED);
|
||||
return reservationRepository.save(reservation);
|
||||
}
|
||||
|
||||
public ReservationResponse addReservationByAdmin(AdminReservationRequest request) {
|
||||
validateIsReservationExist(request.themeId(), request.timeId(), request.date());
|
||||
return addReservationWithoutPayment(request.themeId(), request.timeId(), request.date(),
|
||||
request.memberId(), ReservationStatus.CONFIRMED_PAYMENT_REQUIRED);
|
||||
validateIsReservationExist(request.themeId, request.timeId, request.date);
|
||||
return addReservationWithoutPayment(request.themeId, request.timeId, request.date,
|
||||
request.memberId, ReservationStatus.CONFIRMED_PAYMENT_REQUIRED);
|
||||
}
|
||||
|
||||
public ReservationResponse addWaiting(WaitingRequest request, Long memberId) {
|
||||
validateMemberAlreadyReserve(request.themeId(), request.timeId(), request.date(), memberId);
|
||||
return addReservationWithoutPayment(request.themeId(), request.timeId(), request.date(), memberId,
|
||||
validateMemberAlreadyReserve(request.themeId, request.timeId, request.date, memberId);
|
||||
return addReservationWithoutPayment(request.themeId, request.timeId, request.date, memberId,
|
||||
ReservationStatus.WAITING);
|
||||
}
|
||||
|
||||
|
||||
@ -10,14 +10,14 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import roomescape.common.exception.ErrorType;
|
||||
import roomescape.common.exception.RoomescapeException;
|
||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||
import roomescape.reservation.web.request.ReservationTimeRequest;
|
||||
import roomescape.reservation.web.response.ReservationTimeInfoResponse;
|
||||
import roomescape.reservation.web.response.ReservationTimeInfosResponse;
|
||||
import roomescape.reservation.web.response.ReservationTimeResponse;
|
||||
import roomescape.reservation.web.response.ReservationTimesResponse;
|
||||
import roomescape.reservation.web.ReservationTimeInfoResponse;
|
||||
import roomescape.reservation.web.ReservationTimeInfosResponse;
|
||||
import roomescape.reservation.web.ReservationTimeRequest;
|
||||
import roomescape.reservation.web.ReservationTimeResponse;
|
||||
import roomescape.reservation.web.ReservationTimesResponse;
|
||||
|
||||
@Service
|
||||
@Transactional
|
||||
@ -53,18 +53,20 @@ public class ReservationTimeService {
|
||||
|
||||
public ReservationTimeResponse addTime(ReservationTimeRequest reservationTimeRequest) {
|
||||
validateTimeDuplication(reservationTimeRequest);
|
||||
ReservationTime reservationTime = reservationTimeRepository.save(reservationTimeRequest.toTime());
|
||||
ReservationTime reservationTime = reservationTimeRepository.save(
|
||||
new ReservationTime(reservationTimeRequest.startAt)
|
||||
);
|
||||
|
||||
return ReservationTimeResponse.from(reservationTime);
|
||||
}
|
||||
|
||||
private void validateTimeDuplication(ReservationTimeRequest reservationTimeRequest) {
|
||||
List<ReservationTime> duplicateReservationTimes = reservationTimeRepository.findByStartAt(
|
||||
reservationTimeRequest.startAt());
|
||||
reservationTimeRequest.startAt);
|
||||
|
||||
if (!duplicateReservationTimes.isEmpty()) {
|
||||
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.ReservationPaymentResponse;
|
||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||
import roomescape.reservation.web.request.ReservationRequest;
|
||||
import roomescape.reservation.web.response.ReservationResponse;
|
||||
import roomescape.reservation.web.ReservationRequest;
|
||||
import roomescape.reservation.web.ReservationResponse;
|
||||
|
||||
@Service
|
||||
@Transactional
|
||||
|
||||
@ -8,7 +8,7 @@ import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
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> {
|
||||
|
||||
@ -39,13 +39,13 @@ public interface ReservationRepository extends JpaRepository<Reservation, Long>,
|
||||
boolean isExistConfirmedReservation(@Param("id") Long reservationId);
|
||||
|
||||
@Query("""
|
||||
SELECT new roomescape.reservation.dto.response.MyReservationResponse(
|
||||
SELECT new roomescape.reservation.web.MyReservationResponse(
|
||||
r.id,
|
||||
t.name,
|
||||
r.date,
|
||||
r.reservationTime.startAt,
|
||||
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.totalAmount
|
||||
)
|
||||
|
||||
@ -33,12 +33,6 @@ import roomescape.common.exception.RoomescapeException;
|
||||
import roomescape.payment.infrastructure.client.TossPaymentClient;
|
||||
import roomescape.payment.web.PaymentApprove;
|
||||
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.ReservationWithPaymentService;
|
||||
|
||||
@ -142,7 +136,7 @@ public class ReservationController {
|
||||
@MemberId @Parameter(hidden = true) Long memberId,
|
||||
HttpServletResponse response
|
||||
) {
|
||||
PaymentApprove.Request paymentRequest = reservationRequest.getPaymentRequest();
|
||||
PaymentApprove.Request paymentRequest = reservationRequest.paymentRequest();
|
||||
PaymentApprove.Response paymentResponse = paymentClient.confirmPayment(paymentRequest);
|
||||
|
||||
try {
|
||||
@ -265,7 +259,7 @@ public class ReservationController {
|
||||
ReservationResponse reservationResponse,
|
||||
HttpServletResponse response
|
||||
) {
|
||||
response.setHeader(HttpHeaders.LOCATION, "/reservations/" + reservationResponse.id());
|
||||
response.setHeader(HttpHeaders.LOCATION, "/reservations/" + reservationResponse.id);
|
||||
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.common.dto.response.RoomescapeApiResponse;
|
||||
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;
|
||||
|
||||
@RestController
|
||||
@ -68,7 +64,7 @@ public class ReservationTimeController {
|
||||
HttpServletResponse response
|
||||
) {
|
||||
ReservationTimeResponse reservationTimeResponse = reservationTimeService.addTime(reservationTimeRequest);
|
||||
response.setHeader(HttpHeaders.LOCATION, "/times/" + reservationTimeResponse.id());
|
||||
response.setHeader(HttpHeaders.LOCATION, "/times/" + reservationTimeResponse.id);
|
||||
|
||||
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.mockk
|
||||
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.service.AuthService
|
||||
import roomescape.common.exception.ErrorType
|
||||
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({
|
||||
|
||||
@ -5,9 +5,9 @@ import io.jsonwebtoken.SignatureAlgorithm
|
||||
import io.kotest.assertions.throwables.shouldThrow
|
||||
import io.kotest.core.spec.style.FunSpec
|
||||
import io.kotest.matchers.shouldBe
|
||||
import roomescape.util.JwtFixture
|
||||
import roomescape.common.exception.ErrorType
|
||||
import roomescape.common.exception.RoomescapeException
|
||||
import roomescape.util.JwtFixture
|
||||
import java.util.*
|
||||
import kotlin.random.Random
|
||||
|
||||
|
||||
@ -23,9 +23,9 @@ import roomescape.payment.web.PaymentApprove;
|
||||
import roomescape.payment.web.PaymentCancel;
|
||||
import roomescape.payment.web.ReservationPaymentResponse;
|
||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
||||
@ -56,7 +56,8 @@ class PaymentServiceTest {
|
||||
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
||||
LocalDate date = localDateTime.toLocalDate();
|
||||
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"));
|
||||
Reservation reservation = reservationRepository.save(new Reservation(date, time, theme, member,
|
||||
ReservationStatus.CONFIRMED));
|
||||
@ -65,7 +66,7 @@ class PaymentServiceTest {
|
||||
ReservationPaymentResponse reservationPaymentResponse = paymentService.savePayment(paymentInfo, reservation);
|
||||
|
||||
// then
|
||||
assertThat(reservationPaymentResponse.reservation().id()).isEqualTo(reservation.getId());
|
||||
assertThat(reservationPaymentResponse.reservation().id).isEqualTo(reservation.getId());
|
||||
assertThat(reservationPaymentResponse.paymentKey()).isEqualTo(paymentInfo.paymentKey);
|
||||
}
|
||||
|
||||
@ -78,7 +79,8 @@ class PaymentServiceTest {
|
||||
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
||||
LocalDate date = localDateTime.toLocalDate();
|
||||
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"));
|
||||
Reservation reservation = reservationRepository.save(new Reservation(date, time, theme, member,
|
||||
ReservationStatus.CONFIRMED));
|
||||
@ -115,7 +117,8 @@ class PaymentServiceTest {
|
||||
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
||||
LocalDate date = localDateTime.toLocalDate();
|
||||
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"));
|
||||
Reservation reservation = reservationRepository.save(new Reservation(date, time, theme, member,
|
||||
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.ExecutionPhase;
|
||||
|
||||
import roomescape.common.exception.RoomescapeException;
|
||||
import roomescape.member.business.MemberService;
|
||||
import roomescape.member.infrastructure.persistence.MemberEntity;
|
||||
import roomescape.member.infrastructure.persistence.MemberRepository;
|
||||
import roomescape.member.infrastructure.persistence.Role;
|
||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||
import roomescape.reservation.web.request.ReservationRequest;
|
||||
import roomescape.reservation.web.request.WaitingRequest;
|
||||
import roomescape.reservation.web.response.ReservationResponse;
|
||||
import roomescape.common.exception.RoomescapeException;
|
||||
import roomescape.reservation.web.ReservationRequest;
|
||||
import roomescape.reservation.web.ReservationResponse;
|
||||
import roomescape.reservation.web.WaitingRequest;
|
||||
import roomescape.theme.business.ThemeService;
|
||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
||||
import roomescape.theme.business.ThemeService;
|
||||
|
||||
@SpringBootTest
|
||||
@Sql(scripts = "/truncate.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD)
|
||||
@ -53,8 +53,10 @@ class ReservationServiceTest {
|
||||
// given
|
||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||
MemberEntity member1 = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||
MemberEntity member2 = memberRepository.save(new MemberEntity(null, "name2", "email2@email.com", "password", Role.MEMBER));
|
||||
MemberEntity member1 = memberRepository.save(
|
||||
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);
|
||||
|
||||
// when
|
||||
@ -75,7 +77,8 @@ class ReservationServiceTest {
|
||||
// given
|
||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
||||
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);
|
||||
|
||||
// when
|
||||
@ -95,8 +98,10 @@ class ReservationServiceTest {
|
||||
// given
|
||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||
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));
|
||||
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));
|
||||
LocalDate date = LocalDate.now().plusDays(1L);
|
||||
|
||||
// when
|
||||
@ -119,7 +124,8 @@ class ReservationServiceTest {
|
||||
// given
|
||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
||||
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);
|
||||
|
||||
// when & then
|
||||
@ -136,7 +142,8 @@ class ReservationServiceTest {
|
||||
LocalDateTime beforeTime = LocalDateTime.now().minusHours(1L).withNano(0);
|
||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(beforeTime.toLocalTime()));
|
||||
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
|
||||
assertThatThrownBy(() -> reservationService.addReservation(
|
||||
@ -180,9 +187,12 @@ class ReservationServiceTest {
|
||||
// given
|
||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||
MemberEntity admin = memberRepository.save(new MemberEntity(null, "admin", "admin@email.com", "password", Role.ADMIN));
|
||||
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));
|
||||
MemberEntity admin = memberRepository.save(
|
||||
new MemberEntity(null, "admin", "admin@email.com", "password", Role.ADMIN));
|
||||
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(
|
||||
new ReservationRequest(LocalDate.now().plusDays(1L), reservationTime.getId(), theme.getId(),
|
||||
@ -193,7 +203,7 @@ class ReservationServiceTest {
|
||||
member1.getId());
|
||||
|
||||
// when & then
|
||||
assertThatThrownBy(() -> reservationService.approveWaiting(waiting.id(), admin.getId()))
|
||||
assertThatThrownBy(() -> reservationService.approveWaiting(waiting.id, admin.getId()))
|
||||
.isInstanceOf(RoomescapeException.class);
|
||||
}
|
||||
|
||||
@ -203,17 +213,19 @@ class ReservationServiceTest {
|
||||
// given
|
||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30)));
|
||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||
MemberEntity admin = memberRepository.save(new MemberEntity(null, "admin", "admin@email.com", "password", Role.ADMIN));
|
||||
MemberEntity member = memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||
MemberEntity admin = memberRepository.save(
|
||||
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
|
||||
ReservationResponse waiting = reservationService.addWaiting(
|
||||
new WaitingRequest(LocalDate.now().plusDays(1L), reservationTime.getId(), theme.getId()),
|
||||
member.getId());
|
||||
reservationService.approveWaiting(waiting.id(), admin.getId());
|
||||
reservationService.approveWaiting(waiting.id, admin.getId());
|
||||
|
||||
// then
|
||||
Reservation confirmed = reservationRepository.findById(waiting.id()).get();
|
||||
Reservation confirmed = reservationRepository.findById(waiting.id).get();
|
||||
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.ExecutionPhase;
|
||||
|
||||
import roomescape.common.exception.RoomescapeException;
|
||||
import roomescape.member.infrastructure.persistence.MemberEntity;
|
||||
import roomescape.member.infrastructure.persistence.MemberRepository;
|
||||
import roomescape.member.infrastructure.persistence.Role;
|
||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||
import roomescape.reservation.web.request.ReservationTimeRequest;
|
||||
import roomescape.common.exception.RoomescapeException;
|
||||
import roomescape.reservation.web.ReservationTimeRequest;
|
||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
||||
|
||||
@ -75,7 +75,8 @@ class ReservationTimeServiceTest {
|
||||
ReservationTime reservationTime = reservationTimeRepository.save(
|
||||
new ReservationTime(localDateTime.toLocalTime()));
|
||||
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
|
||||
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.PaymentCancel;
|
||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||
import roomescape.reservation.web.request.ReservationRequest;
|
||||
import roomescape.reservation.web.response.ReservationResponse;
|
||||
import roomescape.reservation.web.ReservationRequest;
|
||||
import roomescape.reservation.web.ReservationResponse;
|
||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
||||
|
||||
@ -59,7 +59,8 @@ class ReservationWithPaymentServiceTest {
|
||||
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
||||
LocalDate date = localDateTime.toLocalDate();
|
||||
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"));
|
||||
ReservationRequest reservationRequest = new ReservationRequest(date, time.getId(), theme.getId(), "payment-key",
|
||||
"order-id", 10000L, "NORMAL");
|
||||
@ -69,7 +70,7 @@ class ReservationWithPaymentServiceTest {
|
||||
reservationRequest, paymentInfo, member.getId());
|
||||
|
||||
// then
|
||||
reservationRepository.findById(reservationResponse.id())
|
||||
reservationRepository.findById(reservationResponse.id)
|
||||
.ifPresent(reservation -> {
|
||||
assertThat(reservation.getMember().getId()).isEqualTo(member.getId());
|
||||
assertThat(reservation.getTheme().getId()).isEqualTo(theme.getId());
|
||||
@ -80,7 +81,7 @@ class ReservationWithPaymentServiceTest {
|
||||
|
||||
PaymentEntity payment = paymentRepository.findByPaymentKey("payment-key");
|
||||
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.getOrderId()).isEqualTo("order-id");
|
||||
assertThat(payment.getTotalAmount()).isEqualTo(10000L);
|
||||
@ -95,7 +96,8 @@ class ReservationWithPaymentServiceTest {
|
||||
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
||||
LocalDate date = localDateTime.toLocalDate();
|
||||
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"));
|
||||
ReservationRequest reservationRequest = new ReservationRequest(date, time.getId(), theme.getId(), "payment-key",
|
||||
"order-id", 10000L, "NORMAL");
|
||||
@ -105,11 +107,11 @@ class ReservationWithPaymentServiceTest {
|
||||
|
||||
// when
|
||||
PaymentCancel.Request paymentCancelRequest = reservationWithPaymentService.removeReservationWithPayment(
|
||||
reservationResponse.id(), member.getId());
|
||||
reservationResponse.id, member.getId());
|
||||
|
||||
// then
|
||||
assertThat(paymentCancelRequest.cancelReason).isEqualTo("고객 요청");
|
||||
assertThat(reservationRepository.findById(reservationResponse.id())).isEmpty();
|
||||
assertThat(reservationRepository.findById(reservationResponse.id)).isEmpty();
|
||||
assertThat(paymentRepository.findByPaymentKey("payment-key")).isNull();
|
||||
assertThat(canceledPaymentRepository.findByPaymentKey("payment-key")).isNotNull();
|
||||
}
|
||||
@ -123,7 +125,8 @@ class ReservationWithPaymentServiceTest {
|
||||
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
||||
LocalDate date = localDateTime.toLocalDate();
|
||||
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"));
|
||||
|
||||
Reservation saved = reservationRepository.save(
|
||||
@ -145,7 +148,8 @@ class ReservationWithPaymentServiceTest {
|
||||
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
||||
LocalDate date = localDateTime.toLocalDate();
|
||||
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"));
|
||||
ReservationRequest reservationRequest = new ReservationRequest(date, time.getId(), theme.getId(), "payment-key",
|
||||
"order-id", 10000L, "NORMAL");
|
||||
@ -154,7 +158,7 @@ class ReservationWithPaymentServiceTest {
|
||||
reservationRequest, paymentInfo, member.getId());
|
||||
|
||||
// when
|
||||
boolean result = reservationWithPaymentService.isNotPaidReservation(reservationResponse.id());
|
||||
boolean result = reservationWithPaymentService.isNotPaidReservation(reservationResponse.id);
|
||||
|
||||
// then
|
||||
assertThat(result).isFalse();
|
||||
|
||||
@ -47,7 +47,8 @@ class ReservationSearchSpecificationTest {
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
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()));
|
||||
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.MethodSource;
|
||||
|
||||
import roomescape.common.exception.RoomescapeException;
|
||||
import roomescape.member.infrastructure.persistence.MemberEntity;
|
||||
import roomescape.member.infrastructure.persistence.Role;
|
||||
import roomescape.common.exception.RoomescapeException;
|
||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||
|
||||
public class ReservationTest {
|
||||
|
||||
@ -2,6 +2,7 @@ package roomescape.reservation.web;
|
||||
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
import static org.hamcrest.Matchers.*;
|
||||
import static org.mockito.ArgumentMatchers.*;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
@ -42,13 +43,10 @@ import roomescape.payment.infrastructure.persistence.PaymentRepository;
|
||||
import roomescape.payment.web.PaymentApprove;
|
||||
import roomescape.payment.web.PaymentCancel;
|
||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||
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.ThemeRepository;
|
||||
|
||||
@ -120,12 +118,14 @@ public class ReservationControllerTest {
|
||||
@DisplayName("대기중인 예약을 취소한다.")
|
||||
void cancelWaiting() {
|
||||
// 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");
|
||||
|
||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
||||
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
|
||||
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)));
|
||||
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
|
||||
reservationRepository.save(
|
||||
@ -204,7 +205,8 @@ public class ReservationControllerTest {
|
||||
@DisplayName("예약 취소는 관리자만 할 수 있다.")
|
||||
void canRemoveMyReservation() {
|
||||
// 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());
|
||||
|
||||
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
||||
@ -252,7 +254,8 @@ public class ReservationControllerTest {
|
||||
@DisplayName("본인의 예약이 아니더라도 관리자 권한이 있으면 예약 정보를 삭제할 수 있다.")
|
||||
void readReservationsSizeAfterPostAndDelete() {
|
||||
// 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());
|
||||
|
||||
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 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");
|
||||
|
||||
// when : 예약은 2개, 예약 대기는 1개 조회되어야 한다.
|
||||
@ -392,7 +396,8 @@ public class ReservationControllerTest {
|
||||
LocalDate date = LocalDate.now().plusDays(1);
|
||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||
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(
|
||||
new Reservation(date, time, theme, member, ReservationStatus.CONFIRMED));
|
||||
@ -422,7 +427,8 @@ public class ReservationControllerTest {
|
||||
LocalDate date = localDateTime.toLocalDate();
|
||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||
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());
|
||||
|
||||
// when : 이전 날짜의 예약을 추가하여 결제 승인 이후 DB 저장 과정에서 예외를 발생시킨다.
|
||||
@ -515,8 +521,10 @@ public class ReservationControllerTest {
|
||||
LocalDate date = localDateTime.toLocalDate();
|
||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||
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));
|
||||
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));
|
||||
|
||||
String accessToken = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword());
|
||||
reservationRepository.save(new Reservation(date, time, theme, member1, ReservationStatus.CONFIRMED));
|
||||
@ -541,7 +549,8 @@ public class ReservationControllerTest {
|
||||
LocalDate date = localDateTime.toLocalDate();
|
||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||
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");
|
||||
Reservation waiting = reservationRepository.save(
|
||||
@ -586,7 +595,8 @@ public class ReservationControllerTest {
|
||||
LocalDate date = localDateTime.toLocalDate();
|
||||
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime()));
|
||||
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");
|
||||
|
||||
|
||||
@ -25,9 +25,9 @@ import roomescape.member.infrastructure.persistence.MemberEntity;
|
||||
import roomescape.member.infrastructure.persistence.MemberRepository;
|
||||
import roomescape.member.infrastructure.persistence.Role;
|
||||
import roomescape.reservation.infrastructure.persistence.Reservation;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTime;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
||||
import roomescape.theme.infrastructure.persistence.ThemeRepository;
|
||||
@ -225,7 +225,8 @@ public class ReservationTimeControllerTest {
|
||||
ReservationTime reservationTime2 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30)));
|
||||
ReservationTime reservationTime3 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(18, 30)));
|
||||
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(
|
||||
new Reservation(today.plusDays(1), reservationTime1, theme, member, ReservationStatus.CONFIRMED));
|
||||
|
||||
@ -33,6 +33,7 @@ object MemberFixture {
|
||||
account = "admin",
|
||||
role = Role.ADMIN
|
||||
)
|
||||
|
||||
fun adminLoginRequest(): LoginRequest = LoginRequest(
|
||||
email = admin().email,
|
||||
password = admin().password
|
||||
@ -43,6 +44,7 @@ object MemberFixture {
|
||||
account = "user",
|
||||
role = Role.MEMBER
|
||||
)
|
||||
|
||||
fun userLoginRequest(): LoginRequest = LoginRequest(
|
||||
email = user().email,
|
||||
password = user().password
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user