[#16] Reservation 도메인 코드 코틀린 마이그레이션 #17

Merged
pricelees merged 40 commits from refactor/#16 into main 2025-07-21 12:08:56 +00:00
19 changed files with 114 additions and 159 deletions
Showing only changes of commit 2241f38b77 - Show all commits

View File

@ -17,7 +17,7 @@ import roomescape.reservation.infrastructure.persistence.Reservation;
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;
import roomescape.reservation.infrastructure.persistence.ReservationTime; import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
import roomescape.reservation.web.AdminReservationRequest; import roomescape.reservation.web.AdminReservationRequest;
import roomescape.reservation.web.MyReservationsResponse; import roomescape.reservation.web.MyReservationsResponse;
import roomescape.reservation.web.ReservationRequest; import roomescape.reservation.web.ReservationRequest;
@ -130,7 +130,7 @@ public class ReservationService {
private void validateDateAndTime( private void validateDateAndTime(
LocalDate requestDate, LocalDate requestDate,
ReservationTime requestReservationTime ReservationTimeEntity requestReservationTime
) { ) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
LocalDateTime request = LocalDateTime.of(requestDate, requestReservationTime.getStartAt()); LocalDateTime request = LocalDateTime.of(requestDate, requestReservationTime.getStartAt());
@ -145,7 +145,7 @@ public class ReservationService {
private Reservation getReservationForSave(Long timeId, Long themeId, LocalDate date, Long memberId, private Reservation getReservationForSave(Long timeId, Long themeId, LocalDate date, Long memberId,
ReservationStatus status) { ReservationStatus status) {
ReservationTime 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);

View File

@ -11,7 +11,7 @@ import roomescape.common.exception.ErrorType;
import roomescape.common.exception.RoomescapeException; import roomescape.common.exception.RoomescapeException;
import roomescape.reservation.infrastructure.persistence.Reservation; import roomescape.reservation.infrastructure.persistence.Reservation;
import roomescape.reservation.infrastructure.persistence.ReservationRepository; import roomescape.reservation.infrastructure.persistence.ReservationRepository;
import roomescape.reservation.infrastructure.persistence.ReservationTime; import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository; import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
import roomescape.reservation.web.ReservationTimeInfoResponse; import roomescape.reservation.web.ReservationTimeInfoResponse;
import roomescape.reservation.web.ReservationTimeInfosResponse; import roomescape.reservation.web.ReservationTimeInfosResponse;
@ -35,7 +35,7 @@ public class ReservationTimeService {
} }
@Transactional(readOnly = true) @Transactional(readOnly = true)
public ReservationTime findTimeById(Long id) { public ReservationTimeEntity findTimeById(Long id) {
return reservationTimeRepository.findById(id) return reservationTimeRepository.findById(id)
.orElseThrow(() -> new RoomescapeException(ErrorType.RESERVATION_TIME_NOT_FOUND, .orElseThrow(() -> new RoomescapeException(ErrorType.RESERVATION_TIME_NOT_FOUND,
String.format("[reservationTimeId: %d]", id), HttpStatus.BAD_REQUEST)); String.format("[reservationTimeId: %d]", id), HttpStatus.BAD_REQUEST));
@ -53,15 +53,15 @@ public class ReservationTimeService {
public ReservationTimeResponse addTime(ReservationTimeRequest reservationTimeRequest) { public ReservationTimeResponse addTime(ReservationTimeRequest reservationTimeRequest) {
validateTimeDuplication(reservationTimeRequest); validateTimeDuplication(reservationTimeRequest);
ReservationTime reservationTime = reservationTimeRepository.save( ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTime(reservationTimeRequest.startAt) new ReservationTimeEntity(null, reservationTimeRequest.startAt)
); );
return ReservationTimeResponse.from(reservationTime); return ReservationTimeResponse.from(reservationTime);
} }
private void validateTimeDuplication(ReservationTimeRequest reservationTimeRequest) { private void validateTimeDuplication(ReservationTimeRequest reservationTimeRequest) {
List<ReservationTime> duplicateReservationTimes = reservationTimeRepository.findByStartAt( List<ReservationTimeEntity> duplicateReservationTimes = reservationTimeRepository.findByStartAt(
reservationTimeRequest.startAt); reservationTimeRequest.startAt);
if (!duplicateReservationTimes.isEmpty()) { if (!duplicateReservationTimes.isEmpty()) {
@ -71,7 +71,7 @@ public class ReservationTimeService {
} }
public void removeTimeById(Long id) { public void removeTimeById(Long id) {
ReservationTime reservationTime = findTimeById(id); ReservationTimeEntity reservationTime = findTimeById(id);
List<Reservation> usingTimeReservations = reservationRepository.findByReservationTime(reservationTime); List<Reservation> usingTimeReservations = reservationRepository.findByReservationTime(reservationTime);
if (!usingTimeReservations.isEmpty()) { if (!usingTimeReservations.isEmpty()) {
@ -84,7 +84,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<ReservationTime> allTimes = reservationTimeRepository.findAll(); List<ReservationTimeEntity> allTimes = reservationTimeRepository.findAll();
List<Reservation> reservations = reservationRepository.findByThemeId(themeId); List<Reservation> reservations = reservationRepository.findByThemeId(themeId);
List<ReservationTimeInfoResponse> response = allTimes.stream() List<ReservationTimeInfoResponse> response = allTimes.stream()
@ -95,7 +95,7 @@ public class ReservationTimeService {
return new ReservationTimeInfosResponse(response); return new ReservationTimeInfosResponse(response);
} }
private boolean isReservationBooked(List<Reservation> reservations, LocalDate date, ReservationTime time) { private boolean isReservationBooked(List<Reservation> reservations, LocalDate date, ReservationTimeEntity time) {
return reservations.stream() return reservations.stream()
.anyMatch(reservation -> reservation.isSameDateAndTime(date, time)); .anyMatch(reservation -> reservation.isSameDateAndTime(date, time));
} }

View File

@ -31,7 +31,7 @@ public class Reservation {
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "time_id", nullable = false) @JoinColumn(name = "time_id", nullable = false)
private ReservationTime reservationTime; private ReservationTimeEntity reservationTime;
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "theme_id", nullable = false) @JoinColumn(name = "theme_id", nullable = false)
@ -49,7 +49,7 @@ public class Reservation {
public Reservation( public Reservation(
LocalDate date, LocalDate date,
ReservationTime reservationTime, ReservationTimeEntity reservationTime,
ThemeEntity theme, ThemeEntity theme,
MemberEntity member, MemberEntity member,
ReservationStatus status ReservationStatus status
@ -60,7 +60,7 @@ public class Reservation {
public Reservation( public Reservation(
Long id, Long id,
LocalDate date, LocalDate date,
ReservationTime reservationTime, ReservationTimeEntity reservationTime,
ThemeEntity theme, ThemeEntity theme,
MemberEntity member, MemberEntity member,
ReservationStatus status ReservationStatus status
@ -74,7 +74,7 @@ public class Reservation {
this.reservationStatus = status; this.reservationStatus = status;
} }
private void validateIsNull(LocalDate date, ReservationTime reservationTime, ThemeEntity theme, MemberEntity member, private void validateIsNull(LocalDate date, ReservationTimeEntity reservationTime, ThemeEntity theme, MemberEntity member,
ReservationStatus reservationStatus) { ReservationStatus reservationStatus) {
if (date == null || reservationTime == null || theme == null || member == null || reservationStatus == null) { if (date == null || reservationTime == null || theme == null || member == null || reservationStatus == null) {
throw new RoomescapeException(ErrorType.REQUEST_DATA_BLANK, String.format("[values: %s]", this), throw new RoomescapeException(ErrorType.REQUEST_DATA_BLANK, String.format("[values: %s]", this),
@ -94,7 +94,7 @@ public class Reservation {
return date; return date;
} }
public ReservationTime getReservationTime() { public ReservationTimeEntity getReservationTime() {
return reservationTime; return reservationTime;
} }
@ -111,7 +111,7 @@ public class Reservation {
} }
@JsonIgnore @JsonIgnore
public boolean isSameDateAndTime(LocalDate date, ReservationTime time) { public boolean isSameDateAndTime(LocalDate date, ReservationTimeEntity time) {
return this.date.equals(date) && time.getStartAt().equals(this.reservationTime.getStartAt()); return this.date.equals(date) && time.getStartAt().equals(this.reservationTime.getStartAt());
} }

View File

@ -12,7 +12,7 @@ import roomescape.reservation.web.MyReservationResponse;
public interface ReservationRepository extends JpaRepository<Reservation, Long>, JpaSpecificationExecutor<Reservation> { public interface ReservationRepository extends JpaRepository<Reservation, Long>, JpaSpecificationExecutor<Reservation> {
List<Reservation> findByReservationTime(ReservationTime reservationTime); List<Reservation> findByReservationTime(ReservationTimeEntity reservationTime);
List<Reservation> findByThemeId(Long themeId); List<Reservation> findByThemeId(Long themeId);

View File

@ -22,7 +22,7 @@ class ReservationSearchSpecification(
fun sameTimeId(timeId: Long?): ReservationSearchSpecification = andIfNotNull(timeId?.let { fun sameTimeId(timeId: Long?): ReservationSearchSpecification = andIfNotNull(timeId?.let {
Specification { root, _, cb -> Specification { root, _, cb ->
cb.equal(root.get<ReservationTime>("reservationTime").get<Long>("id"), timeId) cb.equal(root.get<ReservationTimeEntity>("reservationTime").get<Long>("id"), timeId)
} }
}) })

View File

@ -1,59 +1,13 @@
package roomescape.reservation.infrastructure.persistence; package roomescape.reservation.infrastructure.persistence
import java.time.LocalTime; import jakarta.persistence.*
import java.time.LocalTime
import org.springframework.http.HttpStatus;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import roomescape.common.exception.ErrorType;
import roomescape.common.exception.RoomescapeException;
@Entity @Entity
public class ReservationTime { @Table(name = "reservation_time")
class ReservationTimeEntity(
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; var id: Long? = null,
var startAt: LocalTime
private LocalTime startAt; )
protected ReservationTime() {
}
public ReservationTime(final LocalTime startAt) {
this(null, startAt);
}
public ReservationTime(final Long id, final LocalTime startAt) {
this.id = id;
this.startAt = startAt;
validateNull();
}
private void validateNull() {
if (startAt == null) {
throw new RoomescapeException(ErrorType.REQUEST_DATA_BLANK, String.format("[values: %s]", this),
HttpStatus.BAD_REQUEST);
}
}
public Long getId() {
return id;
}
public LocalTime getStartAt() {
return startAt;
}
@Override
public String toString() {
return "ReservationTime{" +
"id=" + id +
", startAt=" + startAt +
'}';
}
}

View File

@ -1,11 +1,8 @@
package roomescape.reservation.infrastructure.persistence; package roomescape.reservation.infrastructure.persistence
import java.time.LocalTime; import org.springframework.data.jpa.repository.JpaRepository
import java.util.List; import java.time.LocalTime
import org.springframework.data.jpa.repository.JpaRepository; interface ReservationTimeRepository : JpaRepository<ReservationTimeEntity, Long> {
fun findByStartAt(startAt: LocalTime): List<ReservationTimeEntity>
public interface ReservationTimeRepository extends JpaRepository<ReservationTime, Long> {
List<ReservationTime> findByStartAt(LocalTime startAt);
} }

View File

@ -6,7 +6,7 @@ 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.Reservation
import roomescape.reservation.infrastructure.persistence.ReservationStatus import roomescape.reservation.infrastructure.persistence.ReservationStatus
import roomescape.reservation.infrastructure.persistence.ReservationTime import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity
import roomescape.theme.web.ThemeResponse import roomescape.theme.web.ThemeResponse
import java.time.LocalDate import java.time.LocalDate
import java.time.LocalTime import java.time.LocalTime
@ -106,8 +106,8 @@ data class ReservationTimeResponse(
companion object { companion object {
@JvmStatic @JvmStatic
fun from(reservationTime: ReservationTime): ReservationTimeResponse { fun from(reservationTime: ReservationTimeEntity): ReservationTimeResponse {
return ReservationTimeResponse(reservationTime.id, reservationTime.startAt) return ReservationTimeResponse(reservationTime.id!!, reservationTime.startAt)
} }
} }
} }

View File

@ -25,7 +25,7 @@ import roomescape.payment.web.ReservationPaymentResponse;
import roomescape.reservation.infrastructure.persistence.Reservation; import roomescape.reservation.infrastructure.persistence.Reservation;
import roomescape.reservation.infrastructure.persistence.ReservationRepository; import roomescape.reservation.infrastructure.persistence.ReservationRepository;
import roomescape.reservation.infrastructure.persistence.ReservationStatus; import roomescape.reservation.infrastructure.persistence.ReservationStatus;
import roomescape.reservation.infrastructure.persistence.ReservationTime; import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository; import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.infrastructure.persistence.ThemeEntity;
import roomescape.theme.infrastructure.persistence.ThemeRepository; import roomescape.theme.infrastructure.persistence.ThemeRepository;
@ -55,7 +55,7 @@ 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();
ReservationTime time = reservationTimeRepository.save(new ReservationTime(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"));
@ -78,7 +78,7 @@ 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();
ReservationTime time = reservationTimeRepository.save(new ReservationTime(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"));
@ -116,7 +116,7 @@ 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();
ReservationTime time = reservationTimeRepository.save(new ReservationTime(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"));

View File

@ -22,7 +22,7 @@ import roomescape.member.infrastructure.persistence.Role;
import roomescape.reservation.infrastructure.persistence.Reservation; import roomescape.reservation.infrastructure.persistence.Reservation;
import roomescape.reservation.infrastructure.persistence.ReservationRepository; import roomescape.reservation.infrastructure.persistence.ReservationRepository;
import roomescape.reservation.infrastructure.persistence.ReservationStatus; import roomescape.reservation.infrastructure.persistence.ReservationStatus;
import roomescape.reservation.infrastructure.persistence.ReservationTime; import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository; import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
import roomescape.reservation.web.ReservationRequest; import roomescape.reservation.web.ReservationRequest;
import roomescape.reservation.web.ReservationResponse; import roomescape.reservation.web.ReservationResponse;
@ -51,7 +51,8 @@ class ReservationServiceTest {
@DisplayName("예약을 추가할때 이미 예약이 존재하면 예외가 발생한다.") @DisplayName("예약을 추가할때 이미 예약이 존재하면 예외가 발생한다.")
void reservationAlreadyExistFail() { void reservationAlreadyExistFail() {
// given // given
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30))); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(12, 30)));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
MemberEntity member1 = memberRepository.save( MemberEntity member1 = memberRepository.save(
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER)); new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER));
@ -75,7 +76,8 @@ class ReservationServiceTest {
@DisplayName("이미 예약한 멤버가 같은 테마에 대기를 신청하면 예외가 발생한다.") @DisplayName("이미 예약한 멤버가 같은 테마에 대기를 신청하면 예외가 발생한다.")
void requestWaitWhenAlreadyReserveFail() { void requestWaitWhenAlreadyReserveFail() {
// given // given
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30))); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(12, 30)));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일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));
@ -96,7 +98,8 @@ class ReservationServiceTest {
@DisplayName("예약 대기를 두 번 이상 요청하면 예외가 발생한다.") @DisplayName("예약 대기를 두 번 이상 요청하면 예외가 발생한다.")
void requestWaitTwiceFail() { void requestWaitTwiceFail() {
// given // given
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30))); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(12, 30)));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일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));
@ -122,7 +125,8 @@ class ReservationServiceTest {
@DisplayName("이미 지난 날짜로 예약을 생성하면 예외가 발생한다.") @DisplayName("이미 지난 날짜로 예약을 생성하면 예외가 발생한다.")
void beforeDateReservationFail() { void beforeDateReservationFail() {
// given // given
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30))); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(12, 30)));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일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));
@ -140,7 +144,8 @@ class ReservationServiceTest {
void beforeTimeReservationFail() { void beforeTimeReservationFail() {
// given // given
LocalDateTime beforeTime = LocalDateTime.now().minusHours(1L).withNano(0); LocalDateTime beforeTime = LocalDateTime.now().minusHours(1L).withNano(0);
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(beforeTime.toLocalTime())); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTimeEntity(null, beforeTime.toLocalTime()));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일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));
@ -157,7 +162,8 @@ class ReservationServiceTest {
void notExistMemberReservationFail() { void notExistMemberReservationFail() {
// given // given
LocalDateTime beforeTime = LocalDateTime.now().minusDays(1L).withNano(0); LocalDateTime beforeTime = LocalDateTime.now().minusDays(1L).withNano(0);
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(beforeTime.toLocalTime())); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTimeEntity(null, beforeTime.toLocalTime()));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
Long NotExistMemberId = 1L; Long NotExistMemberId = 1L;
@ -185,7 +191,8 @@ class ReservationServiceTest {
@DisplayName("대기중인 예약을 승인할 때, 기존에 예약이 존재하면 예외가 발생한다.") @DisplayName("대기중인 예약을 승인할 때, 기존에 예약이 존재하면 예외가 발생한다.")
void confirmWaitingWhenReservationExist() { void confirmWaitingWhenReservationExist() {
// given // given
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30))); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(12, 30)));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
MemberEntity admin = memberRepository.save( MemberEntity admin = memberRepository.save(
new MemberEntity(null, "admin", "admin@email.com", "password", Role.ADMIN)); new MemberEntity(null, "admin", "admin@email.com", "password", Role.ADMIN));
@ -211,7 +218,8 @@ class ReservationServiceTest {
@DisplayName("대기중인 예약을 확정한다.") @DisplayName("대기중인 예약을 확정한다.")
void approveWaiting() { void approveWaiting() {
// given // given
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30))); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(12, 30)));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
MemberEntity admin = memberRepository.save( MemberEntity admin = memberRepository.save(
new MemberEntity(null, "admin", "admin@email.com", "password", Role.ADMIN)); new MemberEntity(null, "admin", "admin@email.com", "password", Role.ADMIN));

View File

@ -20,7 +20,7 @@ import roomescape.member.infrastructure.persistence.Role;
import roomescape.reservation.infrastructure.persistence.Reservation; import roomescape.reservation.infrastructure.persistence.Reservation;
import roomescape.reservation.infrastructure.persistence.ReservationRepository; import roomescape.reservation.infrastructure.persistence.ReservationRepository;
import roomescape.reservation.infrastructure.persistence.ReservationStatus; import roomescape.reservation.infrastructure.persistence.ReservationStatus;
import roomescape.reservation.infrastructure.persistence.ReservationTime; import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository; import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
import roomescape.reservation.web.ReservationTimeRequest; import roomescape.reservation.web.ReservationTimeRequest;
import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.infrastructure.persistence.ThemeEntity;
@ -46,7 +46,7 @@ class ReservationTimeServiceTest {
@DisplayName("중복된 예약 시간을 등록하는 경우 예외가 발생한다.") @DisplayName("중복된 예약 시간을 등록하는 경우 예외가 발생한다.")
void duplicateTimeFail() { void duplicateTimeFail() {
// given // given
reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30))); reservationTimeRepository.save(new ReservationTimeEntity(null, LocalTime.of(12, 30)));
// when & then // when & then
assertThatThrownBy(() -> reservationTimeService.addTime(new ReservationTimeRequest(LocalTime.of(12, 30)))) assertThatThrownBy(() -> reservationTimeService.addTime(new ReservationTimeRequest(LocalTime.of(12, 30))))
@ -57,7 +57,7 @@ class ReservationTimeServiceTest {
@DisplayName("존재하지 않는 ID로 시간을 조회하면 예외가 발생한다.") @DisplayName("존재하지 않는 ID로 시간을 조회하면 예외가 발생한다.")
void findTimeByIdFail() { void findTimeByIdFail() {
// given // given
ReservationTime saved = reservationTimeRepository.save(new ReservationTime(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;
@ -72,8 +72,8 @@ class ReservationTimeServiceTest {
void usingTimeDeleteFail() { void usingTimeDeleteFail() {
// given // given
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0); LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
ReservationTime reservationTime = reservationTimeRepository.save( ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTime(localDateTime.toLocalTime())); new ReservationTimeEntity(null, localDateTime.toLocalTime()));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일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));

View File

@ -24,7 +24,7 @@ import roomescape.payment.web.PaymentCancel;
import roomescape.reservation.infrastructure.persistence.Reservation; import roomescape.reservation.infrastructure.persistence.Reservation;
import roomescape.reservation.infrastructure.persistence.ReservationRepository; import roomescape.reservation.infrastructure.persistence.ReservationRepository;
import roomescape.reservation.infrastructure.persistence.ReservationStatus; import roomescape.reservation.infrastructure.persistence.ReservationStatus;
import roomescape.reservation.infrastructure.persistence.ReservationTime; import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository; import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
import roomescape.reservation.web.ReservationRequest; import roomescape.reservation.web.ReservationRequest;
import roomescape.reservation.web.ReservationResponse; import roomescape.reservation.web.ReservationResponse;
@ -58,7 +58,7 @@ 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();
ReservationTime time = reservationTimeRepository.save(new ReservationTime(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 +95,7 @@ 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();
ReservationTime time = reservationTimeRepository.save(new ReservationTime(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,7 +124,7 @@ 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();
ReservationTime time = reservationTimeRepository.save(new ReservationTime(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"));
@ -147,7 +147,7 @@ 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();
ReservationTime time = reservationTimeRepository.save(new ReservationTime(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"));

View File

@ -25,7 +25,7 @@ class ReservationSearchSpecificationTest(
lateinit var confirmedNotPaidYesterday: Reservation lateinit var confirmedNotPaidYesterday: Reservation
lateinit var waitingTomorrow: Reservation lateinit var waitingTomorrow: Reservation
lateinit var member: MemberEntity lateinit var member: MemberEntity
lateinit var reservationTime: ReservationTime lateinit var reservationTime: ReservationTimeEntity
lateinit var theme: ThemeEntity lateinit var theme: ThemeEntity
"동일한 테마의 예약을 조회한다" { "동일한 테마의 예약을 조회한다" {

View File

@ -20,7 +20,7 @@ public class ReservationTest {
@ParameterizedTest @ParameterizedTest
@MethodSource("validateConstructorParameterBlankSource") @MethodSource("validateConstructorParameterBlankSource")
@DisplayName("객체 생성 시, null 또는 공백이 존재하면 예외를 발생한다.") @DisplayName("객체 생성 시, null 또는 공백이 존재하면 예외를 발생한다.")
void validateConstructorParameterBlank(LocalDate date, ReservationTime reservationTime, ThemeEntity theme, void validateConstructorParameterBlank(LocalDate date, ReservationTimeEntity reservationTime, ThemeEntity theme,
MemberEntity member) { MemberEntity member) {
// when & then // when & then
@ -32,7 +32,7 @@ public class ReservationTest {
static Stream<Arguments> validateConstructorParameterBlankSource() { static Stream<Arguments> validateConstructorParameterBlankSource() {
return Stream.of( return Stream.of(
Arguments.of(null, Arguments.of(null,
new ReservationTime(LocalTime.now().plusHours(1)), new ReservationTimeEntity(null, LocalTime.now().plusHours(1)),
new ThemeEntity(null, "테마명", "설명", "썸네일URI"), new ThemeEntity(null, "테마명", "설명", "썸네일URI"),
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER)), new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER)),
Arguments.of( Arguments.of(
@ -42,12 +42,12 @@ public class ReservationTest {
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER)), new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER)),
Arguments.of( Arguments.of(
LocalDate.now(), LocalDate.now(),
new ReservationTime(LocalTime.now().plusHours(1)), new ReservationTimeEntity(null, LocalTime.now().plusHours(1)),
null, null,
new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER)), new MemberEntity(null, "name", "email@email.com", "password", Role.MEMBER)),
Arguments.of( Arguments.of(
LocalDate.now(), LocalDate.now(),
new ReservationTime(LocalTime.now().plusHours(1)), new ReservationTimeEntity(null, LocalTime.now().plusHours(1)),
new ThemeEntity(null, "테마명", "설명", "썸네일URI"), new ThemeEntity(null, "테마명", "설명", "썸네일URI"),
null) null)
); );

View File

@ -1,19 +0,0 @@
package roomescape.reservation.infrastructure.persistence;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import roomescape.common.exception.RoomescapeException;
class ReservationTimeTest {
@Test
@DisplayName("객체 생성 시, null이 존재하면 예외를 발생한다.")
void validateConstructorParameterNull() {
// when & then
Assertions.assertThatThrownBy(() -> new ReservationTime(null))
.isInstanceOf(RoomescapeException.class);
}
}

View File

@ -45,7 +45,7 @@ import roomescape.payment.web.PaymentCancel;
import roomescape.reservation.infrastructure.persistence.Reservation; import roomescape.reservation.infrastructure.persistence.Reservation;
import roomescape.reservation.infrastructure.persistence.ReservationRepository; import roomescape.reservation.infrastructure.persistence.ReservationRepository;
import roomescape.reservation.infrastructure.persistence.ReservationStatus; import roomescape.reservation.infrastructure.persistence.ReservationStatus;
import roomescape.reservation.infrastructure.persistence.ReservationTime; import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository; import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.infrastructure.persistence.ThemeEntity;
import roomescape.theme.infrastructure.persistence.ThemeRepository; import roomescape.theme.infrastructure.persistence.ThemeRepository;
@ -86,7 +86,7 @@ public class ReservationControllerTest {
LocalTime time = LocalTime.of(17, 30); LocalTime time = LocalTime.of(17, 30);
LocalDate date = LocalDate.now().plusDays(1L); LocalDate date = LocalDate.now().plusDays(1L);
reservationTimeRepository.save(new ReservationTime(time)); reservationTimeRepository.save(new ReservationTimeEntity(null, time));
themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
Map<String, String> reservationParams = Map.of( Map<String, String> reservationParams = Map.of(
@ -122,7 +122,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 accessTokenCookie = getAccessTokenCookieByLogin("email@email.com", "password"); String accessTokenCookie = getAccessTokenCookieByLogin("email@email.com", "password");
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(17, 30)));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
MemberEntity member1 = memberRepository.save( MemberEntity member1 = memberRepository.save(
new MemberEntity(null, "name1", "email1r@email.com", "password", Role.MEMBER)); new MemberEntity(null, "name1", "email1r@email.com", "password", Role.MEMBER));
@ -151,7 +152,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 accessTokenCookie = getAccessTokenCookieByLogin("email@email.com", "password"); String accessTokenCookie = getAccessTokenCookieByLogin("email@email.com", "password");
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(17, 30)));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
MemberEntity waitingMember = memberRepository.save( MemberEntity waitingMember = memberRepository.save(
new MemberEntity(null, "name1", "email1r@email.com", "password", Role.MEMBER)); new MemberEntity(null, "name1", "email1r@email.com", "password", Role.MEMBER));
@ -178,7 +180,8 @@ public class ReservationControllerTest {
// given // given
String accessTokenCookie = getAdminAccessTokenCookieByLogin("admin@admin.com", "12341234"); String accessTokenCookie = getAdminAccessTokenCookieByLogin("admin@admin.com", "12341234");
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(17, 30)));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일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));
@ -209,7 +212,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 accessTokenCookie = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword()); String accessTokenCookie = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword());
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
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( Reservation reservation = reservationRepository.save(
new Reservation(LocalDate.now(), reservationTime, theme, member, ReservationStatus.CONFIRMED)); new Reservation(LocalDate.now(), reservationTime, theme, member, ReservationStatus.CONFIRMED));
@ -229,7 +233,8 @@ public class ReservationControllerTest {
// given // given
String adminTokenCookie = getAdminAccessTokenCookieByLogin("admin@email.com", "password"); String adminTokenCookie = getAdminAccessTokenCookieByLogin("admin@email.com", "password");
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(17, 30)));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
MemberEntity confirmedMember = memberRepository.save( MemberEntity confirmedMember = memberRepository.save(
new MemberEntity(null, "name1", "email@email.com", "password", Role.MEMBER)); new MemberEntity(null, "name1", "email@email.com", "password", Role.MEMBER));
@ -258,7 +263,8 @@ public class ReservationControllerTest {
new MemberEntity(null, "name", "admin@admin.com", "password", Role.ADMIN)); new MemberEntity(null, "name", "admin@admin.com", "password", Role.ADMIN));
String accessTokenCookie = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword()); String accessTokenCookie = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword());
ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); ReservationTimeEntity reservationTime = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(17, 30)));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
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));
@ -341,9 +347,12 @@ public class ReservationControllerTest {
// given // given
LocalDate date = LocalDate.now().plusDays(1); LocalDate date = LocalDate.now().plusDays(1);
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
ReservationTime time = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); ReservationTimeEntity time = reservationTimeRepository.save(
ReservationTime time1 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(18, 30))); new ReservationTimeEntity(null, LocalTime.of(17, 30)));
ReservationTime time2 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(19, 30))); ReservationTimeEntity time1 = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(18, 30)));
ReservationTimeEntity time2 = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(19, 30)));
MemberEntity member = memberRepository.save( MemberEntity member = memberRepository.save(
new MemberEntity(null, "name", "email@email.com", "password", Role.ADMIN)); new MemberEntity(null, "name", "email@email.com", "password", Role.ADMIN));
@ -371,7 +380,8 @@ public class ReservationControllerTest {
// given // given
LocalDate date = LocalDate.now().plusDays(1); LocalDate date = LocalDate.now().plusDays(1);
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
ReservationTime time = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); ReservationTimeEntity time = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(17, 30)));
String accessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password"); String accessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password");
// when // when
@ -395,7 +405,8 @@ public class ReservationControllerTest {
String accessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password"); String accessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password");
LocalDate date = LocalDate.now().plusDays(1); LocalDate date = LocalDate.now().plusDays(1);
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL"));
ReservationTime time = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); ReservationTimeEntity time = reservationTimeRepository.save(
new ReservationTimeEntity(null, LocalTime.of(17, 30)));
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));
@ -425,7 +436,8 @@ public class ReservationControllerTest {
// given // given
LocalDateTime localDateTime = LocalDateTime.now().minusHours(1L).withNano(0); LocalDateTime localDateTime = LocalDateTime.now().minusHours(1L).withNano(0);
LocalDate date = localDateTime.toLocalDate(); LocalDate date = localDateTime.toLocalDate();
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); ReservationTimeEntity time = reservationTimeRepository.save(
new ReservationTimeEntity(null, localDateTime.toLocalTime()));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일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));
@ -519,7 +531,8 @@ public class ReservationControllerTest {
// given // given
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0); LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
LocalDate date = localDateTime.toLocalDate(); LocalDate date = localDateTime.toLocalDate();
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); ReservationTimeEntity time = reservationTimeRepository.save(
new ReservationTimeEntity(null, localDateTime.toLocalTime()));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일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));
@ -547,7 +560,8 @@ public class ReservationControllerTest {
// given // given
LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L); LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L);
LocalDate date = localDateTime.toLocalDate(); LocalDate date = localDateTime.toLocalDate();
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); ReservationTimeEntity time = reservationTimeRepository.save(
new ReservationTimeEntity(null, localDateTime.toLocalTime()));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일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));
@ -593,7 +607,8 @@ public class ReservationControllerTest {
// given // given
LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0); LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0);
LocalDate date = localDateTime.toLocalDate(); LocalDate date = localDateTime.toLocalDate();
ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); ReservationTimeEntity time = reservationTimeRepository.save(
new ReservationTimeEntity(null, localDateTime.toLocalTime()));
ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일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));

View File

@ -27,7 +27,7 @@ import roomescape.member.infrastructure.persistence.Role;
import roomescape.reservation.infrastructure.persistence.Reservation; import roomescape.reservation.infrastructure.persistence.Reservation;
import roomescape.reservation.infrastructure.persistence.ReservationRepository; import roomescape.reservation.infrastructure.persistence.ReservationRepository;
import roomescape.reservation.infrastructure.persistence.ReservationStatus; import roomescape.reservation.infrastructure.persistence.ReservationStatus;
import roomescape.reservation.infrastructure.persistence.ReservationTime; import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity;
import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository; import roomescape.reservation.infrastructure.persistence.ReservationTimeRepository;
import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.infrastructure.persistence.ThemeEntity;
import roomescape.theme.infrastructure.persistence.ThemeRepository; import roomescape.theme.infrastructure.persistence.ThemeRepository;
@ -221,9 +221,9 @@ public class ReservationTimeControllerTest {
void readReservationByDateAndThemeId() { void readReservationByDateAndThemeId() {
// given // given
LocalDate today = LocalDate.now(); LocalDate today = LocalDate.now();
ReservationTime reservationTime1 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 0))); ReservationTimeEntity reservationTime1 = reservationTimeRepository.save(new ReservationTimeEntity(null, LocalTime.of(17, 0)));
ReservationTime reservationTime2 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); ReservationTimeEntity reservationTime2 = reservationTimeRepository.save(new ReservationTimeEntity(null, LocalTime.of(17, 30)));
ReservationTime reservationTime3 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(18, 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));

View File

@ -3,7 +3,7 @@ package roomescape.theme.util
import jakarta.persistence.EntityManager import jakarta.persistence.EntityManager
import roomescape.member.infrastructure.persistence.MemberEntity import roomescape.member.infrastructure.persistence.MemberEntity
import roomescape.reservation.infrastructure.persistence.ReservationStatus import roomescape.reservation.infrastructure.persistence.ReservationStatus
import roomescape.reservation.infrastructure.persistence.ReservationTime import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity
import roomescape.theme.infrastructure.persistence.ThemeEntity import roomescape.theme.infrastructure.persistence.ThemeEntity
import roomescape.util.MemberFixture import roomescape.util.MemberFixture
import roomescape.util.ReservationFixture import roomescape.util.ReservationFixture
@ -23,7 +23,7 @@ object TestThemeCreateUtil {
val member: MemberEntity = MemberFixture.create().also { entityManager.persist(it) } val member: MemberEntity = MemberFixture.create().also { entityManager.persist(it) }
for (i in 1..reservedCount) { for (i in 1..reservedCount) {
val time: ReservationTime = ReservationTimeFixture.create( val time: ReservationTimeEntity = ReservationTimeFixture.create(
startAt = LocalTime.now().plusMinutes(i.toLong()) startAt = LocalTime.now().plusMinutes(i.toLong())
).also { entityManager.persist(it) } ).also { entityManager.persist(it) }

View File

@ -10,7 +10,7 @@ import roomescape.payment.web.PaymentApprove
import roomescape.payment.web.PaymentCancel import roomescape.payment.web.PaymentCancel
import roomescape.reservation.infrastructure.persistence.Reservation import roomescape.reservation.infrastructure.persistence.Reservation
import roomescape.reservation.infrastructure.persistence.ReservationStatus import roomescape.reservation.infrastructure.persistence.ReservationStatus
import roomescape.reservation.infrastructure.persistence.ReservationTime import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity
import roomescape.theme.infrastructure.persistence.ThemeEntity import roomescape.theme.infrastructure.persistence.ThemeEntity
import java.time.LocalDate import java.time.LocalDate
import java.time.LocalTime import java.time.LocalTime
@ -55,7 +55,7 @@ object ReservationTimeFixture {
fun create( fun create(
id: Long? = null, id: Long? = null,
startAt: LocalTime = LocalTime.now().plusHours(1), startAt: LocalTime = LocalTime.now().plusHours(1),
): ReservationTime = ReservationTime(id, startAt) ): ReservationTimeEntity = ReservationTimeEntity(id, startAt)
} }
object ThemeFixture { object ThemeFixture {
@ -72,7 +72,7 @@ object ReservationFixture {
id: Long? = null, id: Long? = null,
date: LocalDate = LocalDate.now().plusWeeks(1), date: LocalDate = LocalDate.now().plusWeeks(1),
theme: ThemeEntity = ThemeFixture.create(), theme: ThemeEntity = ThemeFixture.create(),
reservationTime: ReservationTime = 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) ): Reservation = Reservation(id, date, reservationTime, theme, member, status)