generated from pricelees/issue-pr-template
refactor: Reservation 코틀린 전환 및 클래스명 수정(-> ReservationEntity)
This commit is contained in:
parent
0a0879dc55
commit
06988674dd
@ -13,7 +13,7 @@ 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.payment.web.toReservationPaymentResponse
|
import roomescape.payment.web.toReservationPaymentResponse
|
||||||
import roomescape.reservation.infrastructure.persistence.Reservation
|
import roomescape.reservation.infrastructure.persistence.ReservationEntity
|
||||||
import java.time.OffsetDateTime
|
import java.time.OffsetDateTime
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -24,7 +24,7 @@ class PaymentService(
|
|||||||
@Transactional
|
@Transactional
|
||||||
fun savePayment(
|
fun savePayment(
|
||||||
paymentResponse: PaymentApprove.Response,
|
paymentResponse: PaymentApprove.Response,
|
||||||
reservation: Reservation
|
reservation: ReservationEntity
|
||||||
): ReservationPaymentResponse = PaymentEntity(
|
): ReservationPaymentResponse = PaymentEntity(
|
||||||
orderId = paymentResponse.orderId,
|
orderId = paymentResponse.orderId,
|
||||||
paymentKey = paymentResponse.paymentKey,
|
paymentKey = paymentResponse.paymentKey,
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package roomescape.payment.infrastructure.persistence
|
package roomescape.payment.infrastructure.persistence
|
||||||
|
|
||||||
import jakarta.persistence.*
|
import jakarta.persistence.*
|
||||||
import roomescape.reservation.infrastructure.persistence.Reservation
|
import roomescape.reservation.infrastructure.persistence.ReservationEntity
|
||||||
import java.time.OffsetDateTime
|
import java.time.OffsetDateTime
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@ -22,7 +22,7 @@ class PaymentEntity(
|
|||||||
|
|
||||||
@OneToOne(fetch = FetchType.LAZY)
|
@OneToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "reservation_id", nullable = false)
|
@JoinColumn(name = "reservation_id", nullable = false)
|
||||||
var reservation: Reservation,
|
var reservation: ReservationEntity,
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
var approvedAt: OffsetDateTime
|
var approvedAt: OffsetDateTime
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import roomescape.common.exception.ErrorType;
|
|||||||
import roomescape.common.exception.RoomescapeException;
|
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.ReservationEntity;
|
||||||
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.infrastructure.persistence.ReservationStatus;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
@ -50,7 +50,7 @@ public class ReservationService {
|
|||||||
|
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
public ReservationsResponse findAllReservations() {
|
public ReservationsResponse findAllReservations() {
|
||||||
Specification<Reservation> spec = new ReservationSearchSpecification().confirmed().build();
|
Specification<ReservationEntity> spec = new ReservationSearchSpecification().confirmed().build();
|
||||||
List<ReservationResponse> response = findAllReservationByStatus(spec);
|
List<ReservationResponse> response = findAllReservationByStatus(spec);
|
||||||
|
|
||||||
return new ReservationsResponse(response);
|
return new ReservationsResponse(response);
|
||||||
@ -58,13 +58,13 @@ public class ReservationService {
|
|||||||
|
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
public ReservationsResponse findAllWaiting() {
|
public ReservationsResponse findAllWaiting() {
|
||||||
Specification<Reservation> spec = new ReservationSearchSpecification().waiting().build();
|
Specification<ReservationEntity> spec = new ReservationSearchSpecification().waiting().build();
|
||||||
List<ReservationResponse> response = findAllReservationByStatus(spec);
|
List<ReservationResponse> response = findAllReservationByStatus(spec);
|
||||||
|
|
||||||
return new ReservationsResponse(response);
|
return new ReservationsResponse(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ReservationResponse> findAllReservationByStatus(Specification<Reservation> spec) {
|
private List<ReservationResponse> findAllReservationByStatus(Specification<ReservationEntity> spec) {
|
||||||
return reservationRepository.findAll(spec)
|
return reservationRepository.findAll(spec)
|
||||||
.stream()
|
.stream()
|
||||||
.map(ReservationResponse::from)
|
.map(ReservationResponse::from)
|
||||||
@ -76,9 +76,9 @@ public class ReservationService {
|
|||||||
reservationRepository.deleteById(reservationId);
|
reservationRepository.deleteById(reservationId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Reservation addReservation(ReservationRequest request, Long memberId) {
|
public ReservationEntity 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,
|
ReservationEntity reservation = getReservationForSave(request.timeId, request.themeId, request.date, memberId,
|
||||||
ReservationStatus.CONFIRMED);
|
ReservationStatus.CONFIRMED);
|
||||||
return reservationRepository.save(reservation);
|
return reservationRepository.save(reservation);
|
||||||
}
|
}
|
||||||
@ -97,13 +97,13 @@ public class ReservationService {
|
|||||||
|
|
||||||
private ReservationResponse addReservationWithoutPayment(Long themeId, Long timeId, LocalDate date, Long memberId,
|
private ReservationResponse addReservationWithoutPayment(Long themeId, Long timeId, LocalDate date, Long memberId,
|
||||||
ReservationStatus status) {
|
ReservationStatus status) {
|
||||||
Reservation reservation = getReservationForSave(timeId, themeId, date, memberId, status);
|
ReservationEntity reservation = getReservationForSave(timeId, themeId, date, memberId, status);
|
||||||
Reservation saved = reservationRepository.save(reservation);
|
ReservationEntity saved = reservationRepository.save(reservation);
|
||||||
return ReservationResponse.from(saved);
|
return ReservationResponse.from(saved);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateMemberAlreadyReserve(Long themeId, Long timeId, LocalDate date, Long memberId) {
|
private void validateMemberAlreadyReserve(Long themeId, Long timeId, LocalDate date, Long memberId) {
|
||||||
Specification<Reservation> spec = new ReservationSearchSpecification()
|
Specification<ReservationEntity> spec = new ReservationSearchSpecification()
|
||||||
.sameMemberId(memberId)
|
.sameMemberId(memberId)
|
||||||
.sameThemeId(themeId)
|
.sameThemeId(themeId)
|
||||||
.sameTimeId(timeId)
|
.sameTimeId(timeId)
|
||||||
@ -116,7 +116,7 @@ public class ReservationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void validateIsReservationExist(Long themeId, Long timeId, LocalDate date) {
|
private void validateIsReservationExist(Long themeId, Long timeId, LocalDate date) {
|
||||||
Specification<Reservation> spec = new ReservationSearchSpecification()
|
Specification<ReservationEntity> spec = new ReservationSearchSpecification()
|
||||||
.confirmed()
|
.confirmed()
|
||||||
.sameThemeId(themeId)
|
.sameThemeId(themeId)
|
||||||
.sameTimeId(timeId)
|
.sameTimeId(timeId)
|
||||||
@ -143,21 +143,21 @@ public class ReservationService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Reservation getReservationForSave(Long timeId, Long themeId, LocalDate date, Long memberId,
|
private ReservationEntity getReservationForSave(Long timeId, Long themeId, LocalDate date, Long memberId,
|
||||||
ReservationStatus status) {
|
ReservationStatus status) {
|
||||||
ReservationTimeEntity time = reservationTimeService.findTimeById(timeId);
|
ReservationTimeEntity time = reservationTimeService.findTimeById(timeId);
|
||||||
ThemeEntity theme = themeService.findThemeById(themeId);
|
ThemeEntity theme = themeService.findThemeById(themeId);
|
||||||
MemberEntity member = memberService.findById(memberId);
|
MemberEntity member = memberService.findById(memberId);
|
||||||
|
|
||||||
validateDateAndTime(date, time);
|
validateDateAndTime(date, time);
|
||||||
return new Reservation(date, time, theme, member, status);
|
return new ReservationEntity(null, date, time, theme, member, status);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
public ReservationsResponse findFilteredReservations(Long themeId, Long memberId, LocalDate dateFrom,
|
public ReservationsResponse findFilteredReservations(Long themeId, Long memberId, LocalDate dateFrom,
|
||||||
LocalDate dateTo) {
|
LocalDate dateTo) {
|
||||||
validateDateForSearch(dateFrom, dateTo);
|
validateDateForSearch(dateFrom, dateTo);
|
||||||
Specification<Reservation> spec = new ReservationSearchSpecification()
|
Specification<ReservationEntity> spec = new ReservationSearchSpecification()
|
||||||
.confirmed()
|
.confirmed()
|
||||||
.sameThemeId(themeId)
|
.sameThemeId(themeId)
|
||||||
.sameMemberId(memberId)
|
.sameMemberId(memberId)
|
||||||
@ -197,8 +197,8 @@ public class ReservationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void cancelWaiting(Long reservationId, Long memberId) {
|
public void cancelWaiting(Long reservationId, Long memberId) {
|
||||||
Reservation waiting = reservationRepository.findById(reservationId)
|
ReservationEntity waiting = reservationRepository.findById(reservationId)
|
||||||
.filter(Reservation::isWaiting)
|
.filter(ReservationEntity::isWaiting)
|
||||||
.filter(r -> r.isSameMember(memberId))
|
.filter(r -> r.isSameMember(memberId))
|
||||||
.orElseThrow(() -> throwReservationNotFound(reservationId));
|
.orElseThrow(() -> throwReservationNotFound(reservationId));
|
||||||
reservationRepository.delete(waiting);
|
reservationRepository.delete(waiting);
|
||||||
@ -206,8 +206,8 @@ public class ReservationService {
|
|||||||
|
|
||||||
public void denyWaiting(Long reservationId, Long memberId) {
|
public void denyWaiting(Long reservationId, Long memberId) {
|
||||||
validateIsMemberAdmin(memberId);
|
validateIsMemberAdmin(memberId);
|
||||||
Reservation waiting = reservationRepository.findById(reservationId)
|
ReservationEntity waiting = reservationRepository.findById(reservationId)
|
||||||
.filter(Reservation::isWaiting)
|
.filter(ReservationEntity::isWaiting)
|
||||||
.orElseThrow(() -> throwReservationNotFound(reservationId));
|
.orElseThrow(() -> throwReservationNotFound(reservationId));
|
||||||
reservationRepository.delete(waiting);
|
reservationRepository.delete(waiting);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@ 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.ReservationEntity;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
|
||||||
@ -72,7 +72,7 @@ public class ReservationTimeService {
|
|||||||
|
|
||||||
public void removeTimeById(Long id) {
|
public void removeTimeById(Long id) {
|
||||||
ReservationTimeEntity reservationTime = findTimeById(id);
|
ReservationTimeEntity reservationTime = findTimeById(id);
|
||||||
List<Reservation> usingTimeReservations = reservationRepository.findByReservationTime(reservationTime);
|
List<ReservationEntity> usingTimeReservations = reservationRepository.findByReservationTime(reservationTime);
|
||||||
|
|
||||||
if (!usingTimeReservations.isEmpty()) {
|
if (!usingTimeReservations.isEmpty()) {
|
||||||
throw new RoomescapeException(ErrorType.TIME_IS_USED_CONFLICT, String.format("[timeId: %d]", id),
|
throw new RoomescapeException(ErrorType.TIME_IS_USED_CONFLICT, String.format("[timeId: %d]", id),
|
||||||
@ -85,7 +85,7 @@ public class ReservationTimeService {
|
|||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
public ReservationTimeInfosResponse findAllAvailableTimesByDateAndTheme(LocalDate date, Long themeId) {
|
public ReservationTimeInfosResponse findAllAvailableTimesByDateAndTheme(LocalDate date, Long themeId) {
|
||||||
List<ReservationTimeEntity> allTimes = reservationTimeRepository.findAll();
|
List<ReservationTimeEntity> allTimes = reservationTimeRepository.findAll();
|
||||||
List<Reservation> reservations = reservationRepository.findByThemeId(themeId);
|
List<ReservationEntity> reservations = reservationRepository.findByThemeId(themeId);
|
||||||
|
|
||||||
List<ReservationTimeInfoResponse> response = allTimes.stream()
|
List<ReservationTimeInfoResponse> response = allTimes.stream()
|
||||||
.map(time -> new ReservationTimeInfoResponse(time.getId(), time.getStartAt(),
|
.map(time -> new ReservationTimeInfoResponse(time.getId(), time.getStartAt(),
|
||||||
@ -95,7 +95,8 @@ public class ReservationTimeService {
|
|||||||
return new ReservationTimeInfosResponse(response);
|
return new ReservationTimeInfosResponse(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isReservationBooked(List<Reservation> reservations, LocalDate date, ReservationTimeEntity time) {
|
private boolean isReservationBooked(List<ReservationEntity> reservations, LocalDate date,
|
||||||
|
ReservationTimeEntity time) {
|
||||||
return reservations.stream()
|
return reservations.stream()
|
||||||
.anyMatch(reservation -> reservation.isSameDateAndTime(date, time));
|
.anyMatch(reservation -> reservation.isSameDateAndTime(date, time));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import roomescape.payment.business.PaymentService;
|
|||||||
import roomescape.payment.web.PaymentApprove;
|
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.ReservationEntity;
|
||||||
import roomescape.reservation.web.ReservationRequest;
|
import roomescape.reservation.web.ReservationRequest;
|
||||||
import roomescape.reservation.web.ReservationResponse;
|
import roomescape.reservation.web.ReservationResponse;
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ public class ReservationWithPaymentService {
|
|||||||
public ReservationResponse addReservationWithPayment(ReservationRequest request,
|
public ReservationResponse addReservationWithPayment(ReservationRequest request,
|
||||||
PaymentApprove.Response paymentInfo,
|
PaymentApprove.Response paymentInfo,
|
||||||
Long memberId) {
|
Long memberId) {
|
||||||
Reservation reservation = reservationService.addReservation(request, memberId);
|
ReservationEntity reservation = reservationService.addReservation(request, memberId);
|
||||||
ReservationPaymentResponse reservationPaymentResponse = paymentService.savePayment(paymentInfo, reservation);
|
ReservationPaymentResponse reservationPaymentResponse = paymentService.savePayment(paymentInfo, reservation);
|
||||||
|
|
||||||
return reservationPaymentResponse.reservation();
|
return reservationPaymentResponse.reservation();
|
||||||
|
|||||||
@ -1,127 +1,59 @@
|
|||||||
package roomescape.reservation.infrastructure.persistence;
|
package roomescape.reservation.infrastructure.persistence
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import com.fasterxml.jackson.annotation.JsonIgnore
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema
|
||||||
import org.springframework.http.HttpStatus;
|
import jakarta.persistence.*
|
||||||
|
import roomescape.member.infrastructure.persistence.MemberEntity
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import roomescape.theme.infrastructure.persistence.ThemeEntity
|
||||||
|
import java.time.LocalDate
|
||||||
import jakarta.persistence.Entity;
|
|
||||||
import jakarta.persistence.EnumType;
|
|
||||||
import jakarta.persistence.Enumerated;
|
|
||||||
import jakarta.persistence.FetchType;
|
|
||||||
import jakarta.persistence.GeneratedValue;
|
|
||||||
import jakarta.persistence.GenerationType;
|
|
||||||
import jakarta.persistence.Id;
|
|
||||||
import jakarta.persistence.JoinColumn;
|
|
||||||
import jakarta.persistence.ManyToOne;
|
|
||||||
import roomescape.common.exception.ErrorType;
|
|
||||||
import roomescape.common.exception.RoomescapeException;
|
|
||||||
import roomescape.member.infrastructure.persistence.MemberEntity;
|
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeEntity;
|
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
public class Reservation {
|
@Table(name = "reservation")
|
||||||
|
class ReservationEntity(
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
var id: Long? = null,
|
||||||
|
|
||||||
@Id
|
var date: LocalDate,
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
private LocalDate date;
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
|
@JoinColumn(name = "time_id", nullable = false)
|
||||||
|
var reservationTime: ReservationTimeEntity,
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "time_id", nullable = false)
|
@JoinColumn(name = "theme_id", nullable = false)
|
||||||
private ReservationTimeEntity reservationTime;
|
var theme: ThemeEntity,
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "theme_id", nullable = false)
|
@JoinColumn(name = "member_id", nullable = false)
|
||||||
private ThemeEntity theme;
|
var member: MemberEntity,
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@Enumerated(value = EnumType.STRING)
|
||||||
@JoinColumn(name = "member_id", nullable = false)
|
var reservationStatus: ReservationStatus
|
||||||
private MemberEntity member;
|
) {
|
||||||
|
|
||||||
@Enumerated(value = EnumType.STRING)
|
@JsonIgnore
|
||||||
private ReservationStatus reservationStatus;
|
fun isSameDateAndTime(date: LocalDate?, time: ReservationTimeEntity): Boolean {
|
||||||
|
return this.date == date && time.startAt == this.reservationTime.startAt
|
||||||
|
}
|
||||||
|
|
||||||
protected Reservation() {
|
@JsonIgnore
|
||||||
}
|
fun isWaiting(): Boolean = reservationStatus == ReservationStatus.WAITING
|
||||||
|
|
||||||
public Reservation(
|
@JsonIgnore
|
||||||
LocalDate date,
|
fun isSameMember(memberId: Long): Boolean {
|
||||||
ReservationTimeEntity reservationTime,
|
return this.member.id == memberId
|
||||||
ThemeEntity theme,
|
}
|
||||||
MemberEntity member,
|
}
|
||||||
ReservationStatus status
|
|
||||||
) {
|
@Schema(description = "예약 상태를 나타냅니다.", allowableValues = ["CONFIRMED", "CONFIRMED_PAYMENT_REQUIRED", "WAITING"])
|
||||||
this(null, date, reservationTime, theme, member, status);
|
enum class ReservationStatus {
|
||||||
}
|
@Schema(description = "결제가 완료된 예약")
|
||||||
|
CONFIRMED,
|
||||||
public Reservation(
|
|
||||||
Long id,
|
@Schema(description = "결제가 필요한 예약")
|
||||||
LocalDate date,
|
CONFIRMED_PAYMENT_REQUIRED,
|
||||||
ReservationTimeEntity reservationTime,
|
|
||||||
ThemeEntity theme,
|
@Schema(description = "대기 중인 예약")
|
||||||
MemberEntity member,
|
WAITING
|
||||||
ReservationStatus status
|
|
||||||
) {
|
|
||||||
validateIsNull(date, reservationTime, theme, member, status);
|
|
||||||
this.id = id;
|
|
||||||
this.date = date;
|
|
||||||
this.reservationTime = reservationTime;
|
|
||||||
this.theme = theme;
|
|
||||||
this.member = member;
|
|
||||||
this.reservationStatus = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void validateIsNull(LocalDate date, ReservationTimeEntity reservationTime, ThemeEntity theme, MemberEntity member,
|
|
||||||
ReservationStatus reservationStatus) {
|
|
||||||
if (date == null || reservationTime == null || theme == null || member == null || reservationStatus == null) {
|
|
||||||
throw new RoomescapeException(ErrorType.REQUEST_DATA_BLANK, String.format("[values: %s]", this),
|
|
||||||
HttpStatus.BAD_REQUEST);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getMemberId() {
|
|
||||||
return member.getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDate getDate() {
|
|
||||||
return date;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ReservationTimeEntity getReservationTime() {
|
|
||||||
return reservationTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ThemeEntity getTheme() {
|
|
||||||
return theme;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MemberEntity getMember() {
|
|
||||||
return member;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ReservationStatus getReservationStatus() {
|
|
||||||
return reservationStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
@JsonIgnore
|
|
||||||
public boolean isSameDateAndTime(LocalDate date, ReservationTimeEntity time) {
|
|
||||||
return this.date.equals(date) && time.getStartAt().equals(this.reservationTime.getStartAt());
|
|
||||||
}
|
|
||||||
|
|
||||||
@JsonIgnore
|
|
||||||
public boolean isWaiting() {
|
|
||||||
return reservationStatus == ReservationStatus.WAITING;
|
|
||||||
}
|
|
||||||
|
|
||||||
@JsonIgnore
|
|
||||||
public boolean isSameMember(Long memberId) {
|
|
||||||
return getMemberId().equals(memberId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,15 +10,16 @@ import org.springframework.data.repository.query.Param;
|
|||||||
|
|
||||||
import roomescape.reservation.web.MyReservationResponse;
|
import roomescape.reservation.web.MyReservationResponse;
|
||||||
|
|
||||||
public interface ReservationRepository extends JpaRepository<Reservation, Long>, JpaSpecificationExecutor<Reservation> {
|
public interface ReservationRepository
|
||||||
|
extends JpaRepository<ReservationEntity, Long>, JpaSpecificationExecutor<ReservationEntity> {
|
||||||
|
|
||||||
List<Reservation> findByReservationTime(ReservationTimeEntity reservationTime);
|
List<ReservationEntity> findByReservationTime(ReservationTimeEntity reservationTime);
|
||||||
|
|
||||||
List<Reservation> findByThemeId(Long themeId);
|
List<ReservationEntity> findByThemeId(Long themeId);
|
||||||
|
|
||||||
@Modifying
|
@Modifying
|
||||||
@Query("""
|
@Query("""
|
||||||
UPDATE Reservation r
|
UPDATE ReservationEntity r
|
||||||
SET r.reservationStatus = :status
|
SET r.reservationStatus = :status
|
||||||
WHERE r.id = :id
|
WHERE r.id = :id
|
||||||
""")
|
""")
|
||||||
@ -27,13 +28,13 @@ public interface ReservationRepository extends JpaRepository<Reservation, Long>,
|
|||||||
|
|
||||||
@Query("""
|
@Query("""
|
||||||
SELECT EXISTS (
|
SELECT EXISTS (
|
||||||
SELECT 1 FROM Reservation r
|
SELECT 1 FROM ReservationEntity r
|
||||||
WHERE r.theme.id = r2.theme.id
|
WHERE r.theme.id = r2.theme.id
|
||||||
AND r.reservationTime.id = r2.reservationTime.id
|
AND r.reservationTime.id = r2.reservationTime.id
|
||||||
AND r.date = r2.date
|
AND r.date = r2.date
|
||||||
AND r.reservationStatus != 'WAITING'
|
AND r.reservationStatus != 'WAITING'
|
||||||
)
|
)
|
||||||
FROM Reservation r2
|
FROM ReservationEntity r2
|
||||||
WHERE r2.id = :id
|
WHERE r2.id = :id
|
||||||
""")
|
""")
|
||||||
boolean isExistConfirmedReservation(@Param("id") Long reservationId);
|
boolean isExistConfirmedReservation(@Param("id") Long reservationId);
|
||||||
@ -45,11 +46,11 @@ public interface ReservationRepository extends JpaRepository<Reservation, Long>,
|
|||||||
r.date,
|
r.date,
|
||||||
r.reservationTime.startAt,
|
r.reservationTime.startAt,
|
||||||
r.reservationStatus,
|
r.reservationStatus,
|
||||||
(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),
|
(SELECT COUNT (r2) * 1L FROM ReservationEntity 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
|
||||||
)
|
)
|
||||||
FROM Reservation r
|
FROM ReservationEntity r
|
||||||
JOIN r.theme t
|
JOIN r.theme t
|
||||||
LEFT JOIN PaymentEntity p
|
LEFT JOIN PaymentEntity p
|
||||||
ON p.reservation = r
|
ON p.reservation = r
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import roomescape.theme.infrastructure.persistence.ThemeEntity
|
|||||||
import java.time.LocalDate
|
import java.time.LocalDate
|
||||||
|
|
||||||
class ReservationSearchSpecification(
|
class ReservationSearchSpecification(
|
||||||
private var spec: Specification<Reservation> = Specification { _, _, _ -> null }
|
private var spec: Specification<ReservationEntity> = Specification { _, _, _ -> null }
|
||||||
) {
|
) {
|
||||||
fun sameThemeId(themeId: Long?): ReservationSearchSpecification = andIfNotNull(themeId?.let {
|
fun sameThemeId(themeId: Long?): ReservationSearchSpecification = andIfNotNull(themeId?.let {
|
||||||
Specification { root, _, cb ->
|
Specification { root, _, cb ->
|
||||||
@ -64,11 +64,11 @@ class ReservationSearchSpecification(
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
fun build(): Specification<Reservation> {
|
fun build(): Specification<ReservationEntity> {
|
||||||
return this.spec
|
return this.spec
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun andIfNotNull(condition: Specification<Reservation>?): ReservationSearchSpecification {
|
private fun andIfNotNull(condition: Specification<ReservationEntity>?): ReservationSearchSpecification {
|
||||||
condition?.let { this.spec = this.spec.and(condition) }
|
condition?.let { this.spec = this.spec.and(condition) }
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,13 +0,0 @@
|
|||||||
package roomescape.reservation.infrastructure.persistence;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
|
|
||||||
@Schema(description = "예약 상태를 나타냅니다.", allowableValues = {"CONFIRMED", "CONFIRMED_PAYMENT_REQUIRED", "WAITING"})
|
|
||||||
public enum ReservationStatus {
|
|
||||||
@Schema(description = "결제가 완료된 예약")
|
|
||||||
CONFIRMED,
|
|
||||||
@Schema(description = "결제가 필요한 예약")
|
|
||||||
CONFIRMED_PAYMENT_REQUIRED,
|
|
||||||
@Schema(description = "대기 중인 예약")
|
|
||||||
WAITING;
|
|
||||||
}
|
|
||||||
@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
|
|||||||
import io.swagger.v3.oas.annotations.media.Schema
|
import io.swagger.v3.oas.annotations.media.Schema
|
||||||
import roomescape.member.web.MemberResponse
|
import roomescape.member.web.MemberResponse
|
||||||
import roomescape.member.web.MemberResponse.Companion.fromEntity
|
import roomescape.member.web.MemberResponse.Companion.fromEntity
|
||||||
import roomescape.reservation.infrastructure.persistence.Reservation
|
import roomescape.reservation.infrastructure.persistence.ReservationEntity
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity
|
||||||
import roomescape.theme.web.ThemeResponse
|
import roomescape.theme.web.ThemeResponse
|
||||||
@ -73,9 +73,9 @@ data class ReservationResponse(
|
|||||||
) {
|
) {
|
||||||
companion object {
|
companion object {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun from(reservation: Reservation): ReservationResponse {
|
fun from(reservation: ReservationEntity): ReservationResponse {
|
||||||
return ReservationResponse(
|
return ReservationResponse(
|
||||||
reservation.id,
|
reservation.id!!,
|
||||||
reservation.date,
|
reservation.date,
|
||||||
fromEntity(reservation.member),
|
fromEntity(reservation.member),
|
||||||
ReservationTimeResponse.Companion.from(reservation.reservationTime),
|
ReservationTimeResponse.Companion.from(reservation.reservationTime),
|
||||||
|
|||||||
@ -9,7 +9,7 @@ interface ThemeRepository : JpaRepository<ThemeEntity, Long> {
|
|||||||
@Query(value = """
|
@Query(value = """
|
||||||
SELECT t
|
SELECT t
|
||||||
FROM ThemeEntity t
|
FROM ThemeEntity t
|
||||||
RIGHT JOIN Reservation r ON t.id = r.theme.id
|
RIGHT JOIN ReservationEntity r ON t.id = r.theme.id
|
||||||
WHERE r.date BETWEEN :startDate AND :endDate
|
WHERE r.date BETWEEN :startDate AND :endDate
|
||||||
GROUP BY r.theme.id
|
GROUP BY r.theme.id
|
||||||
ORDER BY COUNT(r.theme.id) DESC, t.id ASC
|
ORDER BY COUNT(r.theme.id) DESC, t.id ASC
|
||||||
@ -24,7 +24,7 @@ interface ThemeRepository : JpaRepository<ThemeEntity, Long> {
|
|||||||
@Query(value = """
|
@Query(value = """
|
||||||
SELECT EXISTS(
|
SELECT EXISTS(
|
||||||
SELECT 1
|
SELECT 1
|
||||||
FROM Reservation r
|
FROM ReservationEntity r
|
||||||
WHERE r.theme.id = :id
|
WHERE r.theme.id = :id
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
|
|||||||
@ -22,7 +22,7 @@ import roomescape.payment.infrastructure.persistence.CanceledPaymentRepository;
|
|||||||
import roomescape.payment.web.PaymentApprove;
|
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.ReservationEntity;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
||||||
@ -55,12 +55,14 @@ class PaymentServiceTest {
|
|||||||
OffsetDateTime.now(), 10000L);
|
OffsetDateTime.now(), 10000L);
|
||||||
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTimeEntity time = reservationTimeRepository.save(new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
ReservationTimeEntity time = reservationTimeRepository.save(
|
||||||
|
new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(
|
MemberEntity member = memberRepository.save(
|
||||||
new MemberEntity(null, "member", "email@email.com", "password", Role.MEMBER));
|
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,
|
ReservationEntity reservation = reservationRepository.save(
|
||||||
ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, date, time, theme, member,
|
||||||
|
ReservationStatus.CONFIRMED));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
ReservationPaymentResponse reservationPaymentResponse = paymentService.savePayment(paymentInfo, reservation);
|
ReservationPaymentResponse reservationPaymentResponse = paymentService.savePayment(paymentInfo, reservation);
|
||||||
@ -78,12 +80,14 @@ class PaymentServiceTest {
|
|||||||
OffsetDateTime.now(), 10000L);
|
OffsetDateTime.now(), 10000L);
|
||||||
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTimeEntity time = reservationTimeRepository.save(new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
ReservationTimeEntity time = reservationTimeRepository.save(
|
||||||
|
new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(
|
MemberEntity member = memberRepository.save(
|
||||||
new MemberEntity(null, "member", "email@email.com", "password", Role.MEMBER));
|
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,
|
ReservationEntity reservation = reservationRepository.save(
|
||||||
ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, date, time, theme, member,
|
||||||
|
ReservationStatus.CONFIRMED));
|
||||||
|
|
||||||
paymentService.savePayment(paymentInfo, reservation);
|
paymentService.savePayment(paymentInfo, reservation);
|
||||||
|
|
||||||
@ -116,12 +120,14 @@ class PaymentServiceTest {
|
|||||||
OffsetDateTime.now(), 10000L);
|
OffsetDateTime.now(), 10000L);
|
||||||
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTimeEntity time = reservationTimeRepository.save(new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
ReservationTimeEntity time = reservationTimeRepository.save(
|
||||||
|
new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(
|
MemberEntity member = memberRepository.save(
|
||||||
new MemberEntity(null, "member", "email@email.com", "password", Role.MEMBER));
|
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,
|
ReservationEntity reservation = reservationRepository.save(
|
||||||
ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, date, time, theme, member,
|
||||||
|
ReservationStatus.CONFIRMED));
|
||||||
|
|
||||||
paymentService.savePayment(paymentInfo, reservation);
|
paymentService.savePayment(paymentInfo, reservation);
|
||||||
paymentService.cancelPaymentByAdmin(reservation.getId());
|
paymentService.cancelPaymentByAdmin(reservation.getId());
|
||||||
|
|||||||
@ -98,6 +98,6 @@ class PaymentRepositoryTest(
|
|||||||
|
|
||||||
entityManager.flush()
|
entityManager.flush()
|
||||||
entityManager.clear()
|
entityManager.clear()
|
||||||
}.id
|
}.id!!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,7 +19,7 @@ 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.ReservationEntity;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
||||||
@ -233,7 +233,7 @@ class ReservationServiceTest {
|
|||||||
reservationService.approveWaiting(waiting.id, admin.getId());
|
reservationService.approveWaiting(waiting.id, admin.getId());
|
||||||
|
|
||||||
// then
|
// then
|
||||||
Reservation confirmed = reservationRepository.findById(waiting.id).get();
|
ReservationEntity confirmed = reservationRepository.findById(waiting.id).get();
|
||||||
assertThat(confirmed.getReservationStatus()).isEqualTo(ReservationStatus.CONFIRMED_PAYMENT_REQUIRED);
|
assertThat(confirmed.getReservationStatus()).isEqualTo(ReservationStatus.CONFIRMED_PAYMENT_REQUIRED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,7 +17,7 @@ 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.ReservationEntity;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
||||||
@ -57,7 +57,8 @@ class ReservationTimeServiceTest {
|
|||||||
@DisplayName("존재하지 않는 ID로 시간을 조회하면 예외가 발생한다.")
|
@DisplayName("존재하지 않는 ID로 시간을 조회하면 예외가 발생한다.")
|
||||||
void findTimeByIdFail() {
|
void findTimeByIdFail() {
|
||||||
// given
|
// given
|
||||||
ReservationTimeEntity saved = reservationTimeRepository.save(new ReservationTimeEntity(null, LocalTime.of(12, 30)));
|
ReservationTimeEntity saved = reservationTimeRepository.save(
|
||||||
|
new ReservationTimeEntity(null, LocalTime.of(12, 30)));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Long invalidTimeId = saved.getId() + 1;
|
Long invalidTimeId = saved.getId() + 1;
|
||||||
@ -79,8 +80,9 @@ class ReservationTimeServiceTest {
|
|||||||
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
reservationRepository.save(new Reservation(localDateTime.toLocalDate(), reservationTime, theme, member,
|
reservationRepository.save(
|
||||||
ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, localDateTime.toLocalDate(), reservationTime, theme, member,
|
||||||
|
ReservationStatus.CONFIRMED));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThatThrownBy(() -> reservationTimeService.removeTimeById(reservationTime.getId()))
|
assertThatThrownBy(() -> reservationTimeService.removeTimeById(reservationTime.getId()))
|
||||||
|
|||||||
@ -21,7 +21,7 @@ import roomescape.payment.infrastructure.persistence.PaymentEntity;
|
|||||||
import roomescape.payment.infrastructure.persistence.PaymentRepository;
|
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.ReservationEntity;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
||||||
@ -58,7 +58,8 @@ class ReservationWithPaymentServiceTest {
|
|||||||
OffsetDateTime.now(), 10000L);
|
OffsetDateTime.now(), 10000L);
|
||||||
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTimeEntity time = reservationTimeRepository.save(new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
ReservationTimeEntity time = reservationTimeRepository.save(
|
||||||
|
new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(
|
MemberEntity member = memberRepository.save(
|
||||||
new MemberEntity(null, "member", "email@email.com", "password", Role.MEMBER));
|
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"));
|
||||||
@ -95,7 +96,8 @@ class ReservationWithPaymentServiceTest {
|
|||||||
OffsetDateTime.now(), 10000L);
|
OffsetDateTime.now(), 10000L);
|
||||||
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTimeEntity time = reservationTimeRepository.save(new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
ReservationTimeEntity time = reservationTimeRepository.save(
|
||||||
|
new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(
|
MemberEntity member = memberRepository.save(
|
||||||
new MemberEntity(null, "member", "admin@email.com", "password", Role.ADMIN));
|
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"));
|
||||||
@ -124,13 +126,14 @@ class ReservationWithPaymentServiceTest {
|
|||||||
OffsetDateTime.now(), 10000L);
|
OffsetDateTime.now(), 10000L);
|
||||||
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTimeEntity time = reservationTimeRepository.save(new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
ReservationTimeEntity time = reservationTimeRepository.save(
|
||||||
|
new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(
|
MemberEntity member = memberRepository.save(
|
||||||
new MemberEntity(null, "member", "admin@email.com", "password", Role.ADMIN));
|
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(
|
ReservationEntity saved = reservationRepository.save(
|
||||||
new Reservation(date, time, theme, member, ReservationStatus.CONFIRMED_PAYMENT_REQUIRED));
|
new ReservationEntity(null, date, time, theme, member, ReservationStatus.CONFIRMED_PAYMENT_REQUIRED));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
boolean result = reservationWithPaymentService.isNotPaidReservation(saved.getId());
|
boolean result = reservationWithPaymentService.isNotPaidReservation(saved.getId());
|
||||||
@ -147,7 +150,8 @@ class ReservationWithPaymentServiceTest {
|
|||||||
OffsetDateTime.now(), 10000L);
|
OffsetDateTime.now(), 10000L);
|
||||||
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
|
||||||
LocalDate date = localDateTime.toLocalDate();
|
LocalDate date = localDateTime.toLocalDate();
|
||||||
ReservationTimeEntity time = reservationTimeRepository.save(new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
ReservationTimeEntity time = reservationTimeRepository.save(
|
||||||
|
new ReservationTimeEntity(null, localDateTime.toLocalTime()));
|
||||||
MemberEntity member = memberRepository.save(
|
MemberEntity member = memberRepository.save(
|
||||||
new MemberEntity(null, "member", "admin@email.com", "password", Role.ADMIN));
|
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"));
|
||||||
|
|||||||
@ -21,19 +21,19 @@ class ReservationSearchSpecificationTest(
|
|||||||
) : StringSpec() {
|
) : StringSpec() {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
lateinit var confirmedNow: Reservation
|
lateinit var confirmedNow: ReservationEntity
|
||||||
lateinit var confirmedNotPaidYesterday: Reservation
|
lateinit var confirmedNotPaidYesterday: ReservationEntity
|
||||||
lateinit var waitingTomorrow: Reservation
|
lateinit var waitingTomorrow: ReservationEntity
|
||||||
lateinit var member: MemberEntity
|
lateinit var member: MemberEntity
|
||||||
lateinit var reservationTime: ReservationTimeEntity
|
lateinit var reservationTime: ReservationTimeEntity
|
||||||
lateinit var theme: ThemeEntity
|
lateinit var theme: ThemeEntity
|
||||||
|
|
||||||
"동일한 테마의 예약을 조회한다" {
|
"동일한 테마의 예약을 조회한다" {
|
||||||
val spec = ReservationSearchSpecification()
|
val spec = ReservationSearchSpecification()
|
||||||
.sameThemeId(theme.id)
|
.sameThemeId(theme.id)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val results: List<Reservation> = reservationRepository.findAll(spec)
|
val results: List<ReservationEntity> = reservationRepository.findAll(spec)
|
||||||
|
|
||||||
assertSoftly(results) {
|
assertSoftly(results) {
|
||||||
this shouldHaveSize 3
|
this shouldHaveSize 3
|
||||||
@ -43,10 +43,10 @@ class ReservationSearchSpecificationTest(
|
|||||||
|
|
||||||
"동일한 회원의 예약을 조회한다" {
|
"동일한 회원의 예약을 조회한다" {
|
||||||
val spec = ReservationSearchSpecification()
|
val spec = ReservationSearchSpecification()
|
||||||
.sameMemberId(member.id)
|
.sameMemberId(member.id)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val results: List<Reservation> = reservationRepository.findAll(spec)
|
val results: List<ReservationEntity> = reservationRepository.findAll(spec)
|
||||||
|
|
||||||
assertSoftly(results) {
|
assertSoftly(results) {
|
||||||
this shouldHaveSize 3
|
this shouldHaveSize 3
|
||||||
@ -56,10 +56,10 @@ class ReservationSearchSpecificationTest(
|
|||||||
|
|
||||||
"동일한 예약 시간의 예약을 조회한다" {
|
"동일한 예약 시간의 예약을 조회한다" {
|
||||||
val spec = ReservationSearchSpecification()
|
val spec = ReservationSearchSpecification()
|
||||||
.sameTimeId(reservationTime.id)
|
.sameTimeId(reservationTime.id)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val results: List<Reservation> = reservationRepository.findAll(spec)
|
val results: List<ReservationEntity> = reservationRepository.findAll(spec)
|
||||||
|
|
||||||
assertSoftly(results) {
|
assertSoftly(results) {
|
||||||
this shouldHaveSize 3
|
this shouldHaveSize 3
|
||||||
@ -69,10 +69,10 @@ class ReservationSearchSpecificationTest(
|
|||||||
|
|
||||||
"동일한 날짜의 예약을 조회한다" {
|
"동일한 날짜의 예약을 조회한다" {
|
||||||
val spec = ReservationSearchSpecification()
|
val spec = ReservationSearchSpecification()
|
||||||
.sameDate(LocalDate.now())
|
.sameDate(LocalDate.now())
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val results: List<Reservation> = reservationRepository.findAll(spec)
|
val results: List<ReservationEntity> = reservationRepository.findAll(spec)
|
||||||
|
|
||||||
assertSoftly(results) {
|
assertSoftly(results) {
|
||||||
this shouldHaveSize 1
|
this shouldHaveSize 1
|
||||||
@ -85,7 +85,7 @@ class ReservationSearchSpecificationTest(
|
|||||||
.confirmed()
|
.confirmed()
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val results: List<Reservation> = reservationRepository.findAll(spec)
|
val results: List<ReservationEntity> = reservationRepository.findAll(spec)
|
||||||
|
|
||||||
assertSoftly(results) {
|
assertSoftly(results) {
|
||||||
this shouldHaveSize 2
|
this shouldHaveSize 2
|
||||||
@ -95,10 +95,10 @@ class ReservationSearchSpecificationTest(
|
|||||||
|
|
||||||
"대기 상태인 예약을 조회한다" {
|
"대기 상태인 예약을 조회한다" {
|
||||||
val spec = ReservationSearchSpecification()
|
val spec = ReservationSearchSpecification()
|
||||||
.waiting()
|
.waiting()
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val results: List<Reservation> = reservationRepository.findAll(spec)
|
val results: List<ReservationEntity> = reservationRepository.findAll(spec)
|
||||||
|
|
||||||
assertSoftly(results) {
|
assertSoftly(results) {
|
||||||
this shouldHaveSize 1
|
this shouldHaveSize 1
|
||||||
@ -108,10 +108,10 @@ class ReservationSearchSpecificationTest(
|
|||||||
|
|
||||||
"예약 날짜가 오늘 이후인 예약을 조회한다" {
|
"예약 날짜가 오늘 이후인 예약을 조회한다" {
|
||||||
val spec = ReservationSearchSpecification()
|
val spec = ReservationSearchSpecification()
|
||||||
.dateStartFrom(LocalDate.now())
|
.dateStartFrom(LocalDate.now())
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val results: List<Reservation> = reservationRepository.findAll(spec)
|
val results: List<ReservationEntity> = reservationRepository.findAll(spec)
|
||||||
|
|
||||||
assertSoftly(results) {
|
assertSoftly(results) {
|
||||||
this shouldHaveSize 2
|
this shouldHaveSize 2
|
||||||
@ -121,10 +121,10 @@ class ReservationSearchSpecificationTest(
|
|||||||
|
|
||||||
"예약 날짜가 내일 이전인 예약을 조회한다" {
|
"예약 날짜가 내일 이전인 예약을 조회한다" {
|
||||||
val spec = ReservationSearchSpecification()
|
val spec = ReservationSearchSpecification()
|
||||||
.dateEndAt(LocalDate.now().plusDays(1))
|
.dateEndAt(LocalDate.now().plusDays(1))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val results: List<Reservation> = reservationRepository.findAll(spec)
|
val results: List<ReservationEntity> = reservationRepository.findAll(spec)
|
||||||
|
|
||||||
assertSoftly(results) {
|
assertSoftly(results) {
|
||||||
this shouldHaveSize 3
|
this shouldHaveSize 3
|
||||||
|
|||||||
@ -1,55 +0,0 @@
|
|||||||
package roomescape.reservation.infrastructure.persistence;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
import org.assertj.core.api.Assertions;
|
|
||||||
import org.junit.jupiter.api.DisplayName;
|
|
||||||
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.theme.infrastructure.persistence.ThemeEntity;
|
|
||||||
|
|
||||||
public class ReservationTest {
|
|
||||||
|
|
||||||
@ParameterizedTest
|
|
||||||
@MethodSource("validateConstructorParameterBlankSource")
|
|
||||||
@DisplayName("객체 생성 시, null 또는 공백이 존재하면 예외를 발생한다.")
|
|
||||||
void validateConstructorParameterBlank(LocalDate date, ReservationTimeEntity reservationTime, ThemeEntity theme,
|
|
||||||
MemberEntity member) {
|
|
||||||
|
|
||||||
// when & then
|
|
||||||
Assertions.assertThatThrownBy(
|
|
||||||
() -> new Reservation(date, reservationTime, theme, member, ReservationStatus.CONFIRMED))
|
|
||||||
.isInstanceOf(RoomescapeException.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
static Stream<Arguments> validateConstructorParameterBlankSource() {
|
|
||||||
return Stream.of(
|
|
||||||
Arguments.of(null,
|
|
||||||
new ReservationTimeEntity(null, LocalTime.now().plusHours(1)),
|
|
||||||
new ThemeEntity(null, "테마명", "설명", "썸네일URI"),
|
|
||||||
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER)),
|
|
||||||
Arguments.of(
|
|
||||||
LocalDate.now(),
|
|
||||||
null,
|
|
||||||
new ThemeEntity(null, "테마명", "설명", "썸네일URI"),
|
|
||||||
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER)),
|
|
||||||
Arguments.of(
|
|
||||||
LocalDate.now(),
|
|
||||||
new ReservationTimeEntity(null, LocalTime.now().plusHours(1)),
|
|
||||||
null,
|
|
||||||
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER)),
|
|
||||||
Arguments.of(
|
|
||||||
LocalDate.now(),
|
|
||||||
new ReservationTimeEntity(null, LocalTime.now().plusHours(1)),
|
|
||||||
new ThemeEntity(null, "테마명", "설명", "썸네일URI"),
|
|
||||||
null)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -42,7 +42,7 @@ import roomescape.payment.infrastructure.persistence.PaymentEntity;
|
|||||||
import roomescape.payment.infrastructure.persistence.PaymentRepository;
|
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.ReservationEntity;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
||||||
@ -129,10 +129,11 @@ public class ReservationControllerTest {
|
|||||||
new MemberEntity(null, "name1", "email1r@email.com", "password", Role.MEMBER));
|
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(
|
||||||
ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, LocalDate.now().plusDays(1), reservationTime, theme, member1,
|
||||||
Reservation waiting = reservationRepository.save(
|
ReservationStatus.CONFIRMED));
|
||||||
new Reservation(LocalDate.now().plusDays(1), reservationTime, theme, member,
|
ReservationEntity waiting = reservationRepository.save(
|
||||||
|
new ReservationEntity(null, LocalDate.now().plusDays(1), reservationTime, theme, member,
|
||||||
ReservationStatus.WAITING));
|
ReservationStatus.WAITING));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
@ -159,10 +160,11 @@ public class ReservationControllerTest {
|
|||||||
new MemberEntity(null, "name1", "email1r@email.com", "password", Role.MEMBER));
|
new MemberEntity(null, "name1", "email1r@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
reservationRepository.save(new Reservation(LocalDate.now().plusDays(1), reservationTime, theme, confirmedMember,
|
reservationRepository.save(
|
||||||
ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, LocalDate.now().plusDays(1), reservationTime, theme, confirmedMember,
|
||||||
Reservation waiting = reservationRepository.save(
|
ReservationStatus.CONFIRMED));
|
||||||
new Reservation(LocalDate.now().plusDays(1), reservationTime, theme, waitingMember,
|
ReservationEntity waiting = reservationRepository.save(
|
||||||
|
new ReservationEntity(null, LocalDate.now().plusDays(1), reservationTime, theme, waitingMember,
|
||||||
ReservationStatus.WAITING));
|
ReservationStatus.WAITING));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
@ -188,11 +190,13 @@ public class ReservationControllerTest {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
reservationRepository.save(
|
reservationRepository.save(
|
||||||
new Reservation(LocalDate.now(), reservationTime, theme, member, ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, LocalDate.now(), reservationTime, theme, member, ReservationStatus.CONFIRMED));
|
||||||
reservationRepository.save(new Reservation(LocalDate.now().plusDays(1), reservationTime, theme, member,
|
reservationRepository.save(
|
||||||
ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, LocalDate.now().plusDays(1), reservationTime, theme, member,
|
||||||
reservationRepository.save(new Reservation(LocalDate.now().plusDays(2), reservationTime, theme, member,
|
ReservationStatus.CONFIRMED));
|
||||||
ReservationStatus.CONFIRMED));
|
reservationRepository.save(
|
||||||
|
new ReservationEntity(null, LocalDate.now().plusDays(2), reservationTime, theme, member,
|
||||||
|
ReservationStatus.CONFIRMED));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
RestAssured.given().log().all()
|
RestAssured.given().log().all()
|
||||||
@ -215,8 +219,8 @@ public class ReservationControllerTest {
|
|||||||
ReservationTimeEntity reservationTime = reservationTimeRepository.save(
|
ReservationTimeEntity reservationTime = reservationTimeRepository.save(
|
||||||
new ReservationTimeEntity(null, LocalTime.of(17, 30)));
|
new ReservationTimeEntity(null, LocalTime.of(17, 30)));
|
||||||
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
|
||||||
Reservation reservation = reservationRepository.save(
|
ReservationEntity reservation = reservationRepository.save(
|
||||||
new Reservation(LocalDate.now(), reservationTime, theme, member, ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, LocalDate.now(), reservationTime, theme, member, ReservationStatus.CONFIRMED));
|
||||||
|
|
||||||
// when & then
|
// when & then
|
||||||
RestAssured.given().log().all()
|
RestAssured.given().log().all()
|
||||||
@ -242,9 +246,11 @@ public class ReservationControllerTest {
|
|||||||
new MemberEntity(null, "name1", "email1@email.com", "password", Role.MEMBER));
|
new MemberEntity(null, "name1", "email1@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
reservationRepository.save(
|
reservationRepository.save(
|
||||||
new Reservation(LocalDate.now(), reservationTime, theme, confirmedMember, ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, LocalDate.now(), reservationTime, theme, confirmedMember,
|
||||||
Reservation waiting = reservationRepository.save(
|
ReservationStatus.CONFIRMED));
|
||||||
new Reservation(LocalDate.now(), reservationTime, theme, waitingMember, ReservationStatus.WAITING));
|
ReservationEntity waiting = reservationRepository.save(
|
||||||
|
new ReservationEntity(null, LocalDate.now(), reservationTime, theme, waitingMember,
|
||||||
|
ReservationStatus.WAITING));
|
||||||
|
|
||||||
// when & then
|
// when & then
|
||||||
RestAssured.given().log().all()
|
RestAssured.given().log().all()
|
||||||
@ -269,8 +275,9 @@ public class ReservationControllerTest {
|
|||||||
MemberEntity anotherMember = memberRepository.save(
|
MemberEntity anotherMember = memberRepository.save(
|
||||||
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
Reservation reservation = reservationRepository.save(
|
ReservationEntity reservation = reservationRepository.save(
|
||||||
new Reservation(LocalDate.now(), reservationTime, theme, anotherMember, ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, LocalDate.now(), reservationTime, theme, anotherMember,
|
||||||
|
ReservationStatus.CONFIRMED));
|
||||||
|
|
||||||
// when & then
|
// when & then
|
||||||
RestAssured.given().log().all()
|
RestAssured.given().log().all()
|
||||||
@ -359,10 +366,10 @@ public class ReservationControllerTest {
|
|||||||
String accessToken = getAccessTokenCookieByLogin("email@email.com", "password");
|
String accessToken = getAccessTokenCookieByLogin("email@email.com", "password");
|
||||||
|
|
||||||
// when : 예약은 2개, 예약 대기는 1개 조회되어야 한다.
|
// when : 예약은 2개, 예약 대기는 1개 조회되어야 한다.
|
||||||
reservationRepository.save(new Reservation(date, time, theme, member, ReservationStatus.CONFIRMED));
|
reservationRepository.save(new ReservationEntity(null, date, time, theme, member, ReservationStatus.CONFIRMED));
|
||||||
reservationRepository.save(
|
reservationRepository.save(
|
||||||
new Reservation(date, time1, theme, member, ReservationStatus.CONFIRMED_PAYMENT_REQUIRED));
|
new ReservationEntity(null, date, time1, theme, member, ReservationStatus.CONFIRMED_PAYMENT_REQUIRED));
|
||||||
reservationRepository.save(new Reservation(date, time2, theme, member, ReservationStatus.WAITING));
|
reservationRepository.save(new ReservationEntity(null, date, time2, theme, member, ReservationStatus.WAITING));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
RestAssured.given().log().all()
|
RestAssured.given().log().all()
|
||||||
@ -385,7 +392,7 @@ public class ReservationControllerTest {
|
|||||||
String accessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password");
|
String accessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password");
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Reservation saved = reservationRepository.save(new Reservation(date, time, theme,
|
ReservationEntity saved = reservationRepository.save(new ReservationEntity(null, date, time, theme,
|
||||||
memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER)),
|
memberRepository.save(new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER)),
|
||||||
ReservationStatus.CONFIRMED_PAYMENT_REQUIRED));
|
ReservationStatus.CONFIRMED_PAYMENT_REQUIRED));
|
||||||
|
|
||||||
@ -410,8 +417,8 @@ public class ReservationControllerTest {
|
|||||||
MemberEntity member = memberRepository.save(
|
MemberEntity member = memberRepository.save(
|
||||||
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
||||||
|
|
||||||
Reservation saved = reservationRepository.save(
|
ReservationEntity saved = reservationRepository.save(
|
||||||
new Reservation(date, time, theme, member, ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, date, time, theme, member, ReservationStatus.CONFIRMED));
|
||||||
PaymentEntity savedPaymentEntity = paymentRepository.save(
|
PaymentEntity savedPaymentEntity = paymentRepository.save(
|
||||||
new PaymentEntity(null, "pk", "oi", 1000L, saved, OffsetDateTime.now().minusHours(1L)));
|
new PaymentEntity(null, "pk", "oi", 1000L, saved, OffsetDateTime.now().minusHours(1L)));
|
||||||
|
|
||||||
@ -540,7 +547,8 @@ public class ReservationControllerTest {
|
|||||||
new MemberEntity(null, "name1", "email1@email.com", "password", Role.MEMBER));
|
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 ReservationEntity(null, date, time, theme, member1, ReservationStatus.CONFIRMED));
|
||||||
|
|
||||||
// when & then
|
// when & then
|
||||||
RestAssured.given().log().all()
|
RestAssured.given().log().all()
|
||||||
@ -567,8 +575,8 @@ public class ReservationControllerTest {
|
|||||||
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
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(
|
ReservationEntity waiting = reservationRepository.save(
|
||||||
new Reservation(date, time, theme, member, ReservationStatus.WAITING));
|
new ReservationEntity(null, date, time, theme, member, ReservationStatus.WAITING));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
RestAssured.given().log().all()
|
RestAssured.given().log().all()
|
||||||
|
|||||||
@ -24,7 +24,7 @@ import io.restassured.http.Header;
|
|||||||
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.ReservationEntity;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus;
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
|
||||||
@ -221,19 +221,25 @@ public class ReservationTimeControllerTest {
|
|||||||
void readReservationByDateAndThemeId() {
|
void readReservationByDateAndThemeId() {
|
||||||
// given
|
// given
|
||||||
LocalDate today = LocalDate.now();
|
LocalDate today = LocalDate.now();
|
||||||
ReservationTimeEntity reservationTime1 = reservationTimeRepository.save(new ReservationTimeEntity(null, LocalTime.of(17, 0)));
|
ReservationTimeEntity reservationTime1 = reservationTimeRepository.save(
|
||||||
ReservationTimeEntity reservationTime2 = reservationTimeRepository.save(new ReservationTimeEntity(null, LocalTime.of(17, 30)));
|
new ReservationTimeEntity(null, LocalTime.of(17, 0)));
|
||||||
ReservationTimeEntity reservationTime3 = reservationTimeRepository.save(new ReservationTimeEntity(null, LocalTime.of(18, 30)));
|
ReservationTimeEntity reservationTime2 = reservationTimeRepository.save(
|
||||||
|
new ReservationTimeEntity(null, LocalTime.of(17, 30)));
|
||||||
|
ReservationTimeEntity reservationTime3 = reservationTimeRepository.save(
|
||||||
|
new ReservationTimeEntity(null, 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(
|
MemberEntity member = memberRepository.save(
|
||||||
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
|
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 ReservationEntity(null, today.plusDays(1), reservationTime1, theme, member,
|
||||||
|
ReservationStatus.CONFIRMED));
|
||||||
reservationRepository.save(
|
reservationRepository.save(
|
||||||
new Reservation(today.plusDays(1), reservationTime2, theme, member, ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, today.plusDays(1), reservationTime2, theme, member,
|
||||||
|
ReservationStatus.CONFIRMED));
|
||||||
reservationRepository.save(
|
reservationRepository.save(
|
||||||
new Reservation(today.plusDays(1), reservationTime3, theme, member, ReservationStatus.CONFIRMED));
|
new ReservationEntity(null, today.plusDays(1), reservationTime3, theme, member,
|
||||||
|
ReservationStatus.CONFIRMED));
|
||||||
|
|
||||||
// when & then
|
// when & then
|
||||||
RestAssured.given().log().all()
|
RestAssured.given().log().all()
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import roomescape.payment.infrastructure.persistence.CanceledPaymentEntity
|
|||||||
import roomescape.payment.infrastructure.persistence.PaymentEntity
|
import roomescape.payment.infrastructure.persistence.PaymentEntity
|
||||||
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.ReservationEntity
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity
|
import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeEntity
|
import roomescape.theme.infrastructure.persistence.ThemeEntity
|
||||||
@ -75,7 +75,7 @@ object ReservationFixture {
|
|||||||
reservationTime: ReservationTimeEntity = ReservationTimeFixture.create(),
|
reservationTime: ReservationTimeEntity = ReservationTimeFixture.create(),
|
||||||
member: MemberEntity = MemberFixture.create(),
|
member: MemberEntity = MemberFixture.create(),
|
||||||
status: ReservationStatus = ReservationStatus.CONFIRMED_PAYMENT_REQUIRED
|
status: ReservationStatus = ReservationStatus.CONFIRMED_PAYMENT_REQUIRED
|
||||||
): Reservation = Reservation(id, date, reservationTime, theme, member, status)
|
): ReservationEntity = ReservationEntity(id, date, reservationTime, theme, member, status)
|
||||||
}
|
}
|
||||||
|
|
||||||
object JwtFixture {
|
object JwtFixture {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user