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