diff --git a/src/main/java/roomescape/reservation/domain/Reservation.java b/src/main/java/roomescape/reservation/domain/Reservation.java index 0cb0b972..6509596f 100644 --- a/src/main/java/roomescape/reservation/domain/Reservation.java +++ b/src/main/java/roomescape/reservation/domain/Reservation.java @@ -18,7 +18,7 @@ import jakarta.persistence.ManyToOne; import roomescape.common.exception.ErrorType; import roomescape.common.exception.RoomescapeException; import roomescape.member.infrastructure.persistence.Member; -import roomescape.theme.infrastructure.persistence.Theme; +import roomescape.theme.infrastructure.persistence.ThemeEntity; @Entity public class Reservation { @@ -35,7 +35,7 @@ public class Reservation { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "theme_id", nullable = false) - private Theme theme; + private ThemeEntity theme; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id", nullable = false) @@ -50,7 +50,7 @@ public class Reservation { public Reservation( LocalDate date, ReservationTime reservationTime, - Theme theme, + ThemeEntity theme, Member member, ReservationStatus status ) { @@ -61,7 +61,7 @@ public class Reservation { Long id, LocalDate date, ReservationTime reservationTime, - Theme theme, + ThemeEntity theme, Member member, ReservationStatus status ) { @@ -74,7 +74,7 @@ public class Reservation { this.reservationStatus = status; } - private void validateIsNull(LocalDate date, ReservationTime reservationTime, Theme theme, Member member, + private void validateIsNull(LocalDate date, ReservationTime reservationTime, ThemeEntity theme, Member 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), @@ -98,7 +98,7 @@ public class Reservation { return reservationTime; } - public Theme getTheme() { + public ThemeEntity getTheme() { return theme; } diff --git a/src/main/java/roomescape/reservation/service/ReservationService.java b/src/main/java/roomescape/reservation/service/ReservationService.java index 17e228a0..0a3098ac 100644 --- a/src/main/java/roomescape/reservation/service/ReservationService.java +++ b/src/main/java/roomescape/reservation/service/ReservationService.java @@ -24,7 +24,7 @@ import roomescape.reservation.dto.request.WaitingRequest; import roomescape.reservation.dto.response.MyReservationsResponse; import roomescape.reservation.dto.response.ReservationResponse; import roomescape.reservation.dto.response.ReservationsResponse; -import roomescape.theme.infrastructure.persistence.Theme; +import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.business.ThemeService; @Service @@ -146,7 +146,7 @@ public class ReservationService { private Reservation getReservationForSave(Long timeId, Long themeId, LocalDate date, Long memberId, ReservationStatus status) { ReservationTime time = reservationTimeService.findTimeById(timeId); - Theme theme = themeService.findThemeById(themeId); + ThemeEntity theme = themeService.findThemeById(themeId); Member member = memberService.findById(memberId); validateDateAndTime(date, time); diff --git a/src/main/java/roomescape/theme/business/ThemeService.java b/src/main/java/roomescape/theme/business/ThemeService.java index 0b46b3dc..e900752d 100644 --- a/src/main/java/roomescape/theme/business/ThemeService.java +++ b/src/main/java/roomescape/theme/business/ThemeService.java @@ -9,7 +9,7 @@ import org.springframework.transaction.annotation.Transactional; import roomescape.common.exception.ErrorType; import roomescape.common.exception.RoomescapeException; -import roomescape.theme.infrastructure.persistence.Theme; +import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.infrastructure.persistence.ThemeRepository; import roomescape.theme.web.ThemeRequest; import roomescape.theme.web.ThemeResponse; @@ -26,7 +26,7 @@ public class ThemeService { } @Transactional(readOnly = true) - public Theme findThemeById(Long id) { + public ThemeEntity findThemeById(Long id) { return themeRepository.findById(id) .orElseThrow(() -> new RoomescapeException(ErrorType.THEME_NOT_FOUND, String.format("[themeId: %d]", id), HttpStatus.BAD_REQUEST)); @@ -59,7 +59,7 @@ public class ThemeService { public ThemeResponse addTheme(ThemeRequest request) { validateIsSameThemeNameExist(request.name()); - Theme theme = themeRepository.save(new Theme(request.name(), request.description(), request.thumbnail())); + ThemeEntity theme = themeRepository.save(new ThemeEntity(request.name(), request.description(), request.thumbnail())); return ThemeResponse.from(theme); } diff --git a/src/main/java/roomescape/theme/infrastructure/persistence/ThemeEntity.kt b/src/main/java/roomescape/theme/infrastructure/persistence/ThemeEntity.kt index 9f5f64c8..6d8e3d79 100644 --- a/src/main/java/roomescape/theme/infrastructure/persistence/ThemeEntity.kt +++ b/src/main/java/roomescape/theme/infrastructure/persistence/ThemeEntity.kt @@ -1,65 +1,15 @@ -package roomescape.theme.infrastructure.persistence; +package roomescape.theme.infrastructure.persistence -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; +import jakarta.persistence.* @Entity -public class Theme { +@Table(name = "theme") +class ThemeEntity( + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long? = null, - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - private String name; - - private String description; - - private String thumbnail; - - protected Theme() { - } - - public Theme(String name, String description, String thumbnail) { - this(null, name, description, thumbnail); - } - - public Theme( - Long id, - String name, - String description, - String thumbnail - ) { - this.id = id; - this.name = name; - this.description = description; - this.thumbnail = thumbnail; - } - - public Long getId() { - return id; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } - - public String getThumbnail() { - return thumbnail; - } - - @Override - public String toString() { - return "Theme{" + - "id=" + id + - ", name=" + name + - ", description=" + description + - ", thumbnail=" + thumbnail + - '}'; - } -} + var name: String, + var description: String, + var thumbnail: String +) \ No newline at end of file diff --git a/src/main/java/roomescape/theme/infrastructure/persistence/ThemeRepository.java b/src/main/java/roomescape/theme/infrastructure/persistence/ThemeRepository.java index c149a67d..0a48af56 100644 --- a/src/main/java/roomescape/theme/infrastructure/persistence/ThemeRepository.java +++ b/src/main/java/roomescape/theme/infrastructure/persistence/ThemeRepository.java @@ -6,18 +6,18 @@ import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; -public interface ThemeRepository extends JpaRepository { +public interface ThemeRepository extends JpaRepository { @Query(value = """ SELECT t - FROM Theme t + FROM ThemeEntity t RIGHT JOIN Reservation 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 LIMIT :limit """) - List findTopNThemeBetweenStartDateAndEndDate(LocalDate startDate, LocalDate endDate, int limit); + List findTopNThemeBetweenStartDateAndEndDate(LocalDate startDate, LocalDate endDate, int limit); boolean existsByName(String name); diff --git a/src/main/java/roomescape/theme/web/ThemeDTO.kt b/src/main/java/roomescape/theme/web/ThemeDTO.kt index 7f9a4ad8..27c4ea61 100644 --- a/src/main/java/roomescape/theme/web/ThemeDTO.kt +++ b/src/main/java/roomescape/theme/web/ThemeDTO.kt @@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema import jakarta.validation.constraints.NotBlank import jakarta.validation.constraints.Size import org.hibernate.validator.constraints.URL -import roomescape.theme.infrastructure.persistence.Theme +import roomescape.theme.infrastructure.persistence.ThemeEntity @Schema(name = "테마 저장 요청", description = "테마 정보를 저장할 때 사용합니다.") @JvmRecord @@ -42,14 +42,14 @@ data class ThemeResponse( ) { companion object { @JvmStatic - fun from(theme: Theme): ThemeResponse { - return ThemeResponse(theme.id, theme.name, theme.description, theme.thumbnail) + fun from(themeEntity: ThemeEntity): ThemeResponse { + return ThemeResponse(themeEntity.id!!, themeEntity.name, themeEntity.description, themeEntity.thumbnail) } } } -fun Theme.toResponse(): ThemeResponse = ThemeResponse( - id = this.id, +fun ThemeEntity.toResponse(): ThemeResponse = ThemeResponse( + id = this.id!!, name = this.name, description = this.description, thumbnail = this.thumbnail @@ -62,3 +62,7 @@ data class ThemesResponse( @field:Schema(description = "모든 테마 목록") val themes: List ) + +fun List.toResponse(): ThemesResponse = ThemesResponse( + themes = this.map { it.toResponse()} +) diff --git a/src/test/java/roomescape/payment/business/PaymentServiceTest.java b/src/test/java/roomescape/payment/business/PaymentServiceTest.java index 9bb7c79b..57f057a8 100644 --- a/src/test/java/roomescape/payment/business/PaymentServiceTest.java +++ b/src/test/java/roomescape/payment/business/PaymentServiceTest.java @@ -27,7 +27,7 @@ import roomescape.reservation.domain.ReservationStatus; import roomescape.reservation.domain.ReservationTime; import roomescape.reservation.domain.repository.ReservationRepository; import roomescape.reservation.domain.repository.ReservationTimeRepository; -import roomescape.theme.infrastructure.persistence.Theme; +import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.infrastructure.persistence.ThemeRepository; @SpringBootTest @@ -57,7 +57,7 @@ class PaymentServiceTest { LocalDate date = localDateTime.toLocalDate(); ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); Member member = memberRepository.save(new Member(null, "member", "email@email.com", "password", Role.MEMBER)); - Theme theme = themeRepository.save(new Theme("name", "desc", "thumbnail")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail")); Reservation reservation = reservationRepository.save(new Reservation(date, time, theme, member, ReservationStatus.CONFIRMED)); @@ -79,7 +79,7 @@ class PaymentServiceTest { LocalDate date = localDateTime.toLocalDate(); ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); Member member = memberRepository.save(new Member(null, "member", "email@email.com", "password", Role.MEMBER)); - Theme theme = themeRepository.save(new Theme("name", "desc", "thumbnail")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail")); Reservation reservation = reservationRepository.save(new Reservation(date, time, theme, member, ReservationStatus.CONFIRMED)); @@ -116,7 +116,7 @@ class PaymentServiceTest { LocalDate date = localDateTime.toLocalDate(); ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); Member member = memberRepository.save(new Member(null, "member", "email@email.com", "password", Role.MEMBER)); - Theme theme = themeRepository.save(new Theme("name", "desc", "thumbnail")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail")); Reservation reservation = reservationRepository.save(new Reservation(date, time, theme, member, ReservationStatus.CONFIRMED)); diff --git a/src/test/java/roomescape/reservation/controller/ReservationControllerTest.java b/src/test/java/roomescape/reservation/controller/ReservationControllerTest.java index 5956e6bb..5a888a55 100644 --- a/src/test/java/roomescape/reservation/controller/ReservationControllerTest.java +++ b/src/test/java/roomescape/reservation/controller/ReservationControllerTest.java @@ -49,7 +49,7 @@ import roomescape.reservation.domain.repository.ReservationTimeRepository; import roomescape.reservation.dto.request.AdminReservationRequest; import roomescape.reservation.dto.request.ReservationRequest; import roomescape.reservation.dto.request.WaitingRequest; -import roomescape.theme.infrastructure.persistence.Theme; +import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.infrastructure.persistence.ThemeRepository; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -89,7 +89,7 @@ public class ReservationControllerTest { LocalDate date = LocalDate.now().plusDays(1L); reservationTimeRepository.save(new ReservationTime(time)); - themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Map reservationParams = Map.of( "date", date.toString(), @@ -124,7 +124,7 @@ public class ReservationControllerTest { String accessTokenCookie = getAccessTokenCookieByLogin("email@email.com", "password"); ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member member1 = memberRepository.save(new Member(null, "name1", "email1r@email.com", "password", Role.MEMBER)); // when @@ -152,7 +152,7 @@ public class ReservationControllerTest { String accessTokenCookie = getAccessTokenCookieByLogin("email@email.com", "password"); ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member waitingMember = memberRepository.save( new Member(null, "name1", "email1r@email.com", "password", Role.MEMBER)); @@ -179,7 +179,7 @@ public class ReservationControllerTest { String accessTokenCookie = getAdminAccessTokenCookieByLogin("admin@admin.com", "12341234"); ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); // when @@ -208,7 +208,7 @@ public class ReservationControllerTest { String accessTokenCookie = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword()); ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Reservation reservation = reservationRepository.save( new Reservation(LocalDate.now(), reservationTime, theme, member, ReservationStatus.CONFIRMED)); @@ -228,7 +228,7 @@ public class ReservationControllerTest { String adminTokenCookie = getAdminAccessTokenCookieByLogin("admin@email.com", "password"); ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member confirmedMember = memberRepository.save( new Member(null, "name1", "email@email.com", "password", Role.MEMBER)); Member waitingMember = memberRepository.save( @@ -256,7 +256,7 @@ public class ReservationControllerTest { String accessTokenCookie = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword()); ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member anotherMember = memberRepository.save( new Member(null, "name", "email@email.com", "password", Role.MEMBER)); @@ -337,7 +337,7 @@ public class ReservationControllerTest { void getAllReservations(String requestURI, String responseFieldName, int expectedSize) { // given LocalDate date = LocalDate.now().plusDays(1); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ReservationTime time = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); ReservationTime time1 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(18, 30))); ReservationTime time2 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(19, 30))); @@ -366,7 +366,7 @@ public class ReservationControllerTest { void removeNotPaidReservation() { // given LocalDate date = LocalDate.now().plusDays(1); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ReservationTime time = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); String accessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password"); @@ -390,7 +390,7 @@ public class ReservationControllerTest { // given String accessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password"); LocalDate date = LocalDate.now().plusDays(1); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); ReservationTime time = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); @@ -421,7 +421,7 @@ public class ReservationControllerTest { LocalDateTime localDateTime = LocalDateTime.now().minusHours(1L).withNano(0); LocalDate date = localDateTime.toLocalDate(); ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); String accessToken = getAccessTokenCookieByLogin(member.getEmail(), member.getPassword()); @@ -514,7 +514,7 @@ public class ReservationControllerTest { LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0); LocalDate date = localDateTime.toLocalDate(); ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); Member member1 = memberRepository.save(new Member(null, "name1", "email1@email.com", "password", Role.MEMBER)); @@ -540,7 +540,7 @@ public class ReservationControllerTest { LocalDateTime localDateTime = LocalDateTime.now().plusHours(1L); LocalDate date = localDateTime.toLocalDate(); ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); String accessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password"); @@ -585,7 +585,7 @@ public class ReservationControllerTest { LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0); LocalDate date = localDateTime.toLocalDate(); ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); String adminAccessToken = getAdminAccessTokenCookieByLogin("admin@email.com", "password"); diff --git a/src/test/java/roomescape/reservation/controller/ReservationTimeControllerTest.java b/src/test/java/roomescape/reservation/controller/ReservationTimeControllerTest.java index 8a480148..baaa53a3 100644 --- a/src/test/java/roomescape/reservation/controller/ReservationTimeControllerTest.java +++ b/src/test/java/roomescape/reservation/controller/ReservationTimeControllerTest.java @@ -29,7 +29,7 @@ import roomescape.reservation.domain.ReservationStatus; import roomescape.reservation.domain.ReservationTime; import roomescape.reservation.domain.repository.ReservationRepository; import roomescape.reservation.domain.repository.ReservationTimeRepository; -import roomescape.theme.infrastructure.persistence.Theme; +import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.infrastructure.persistence.ThemeRepository; @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) @@ -224,7 +224,7 @@ public class ReservationTimeControllerTest { ReservationTime reservationTime1 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 0))); ReservationTime reservationTime2 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(17, 30))); ReservationTime reservationTime3 = reservationTimeRepository.save(new ReservationTime(LocalTime.of(18, 30))); - Theme theme = themeRepository.save(new Theme("테마명1", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명1", "설명", "썸네일URL")); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); reservationRepository.save( diff --git a/src/test/java/roomescape/reservation/domain/ReservationTest.java b/src/test/java/roomescape/reservation/domain/ReservationTest.java index a8518ce1..6f19375d 100644 --- a/src/test/java/roomescape/reservation/domain/ReservationTest.java +++ b/src/test/java/roomescape/reservation/domain/ReservationTest.java @@ -13,14 +13,14 @@ import org.junit.jupiter.params.provider.MethodSource; import roomescape.member.infrastructure.persistence.Member; import roomescape.member.infrastructure.persistence.Role; import roomescape.common.exception.RoomescapeException; -import roomescape.theme.infrastructure.persistence.Theme; +import roomescape.theme.infrastructure.persistence.ThemeEntity; public class ReservationTest { @ParameterizedTest @MethodSource("validateConstructorParameterBlankSource") @DisplayName("객체 생성 시, null 또는 공백이 존재하면 예외를 발생한다.") - void validateConstructorParameterBlank(LocalDate date, ReservationTime reservationTime, Theme theme, + void validateConstructorParameterBlank(LocalDate date, ReservationTime reservationTime, ThemeEntity theme, Member member) { // when & then @@ -33,12 +33,12 @@ public class ReservationTest { return Stream.of( Arguments.of(null, new ReservationTime(LocalTime.now().plusHours(1)), - new Theme("테마명", "설명", "썸네일URI"), + new ThemeEntity(null, "테마명", "설명", "썸네일URI"), new Member(null, "name", "email@email.com", "password", Role.MEMBER)), Arguments.of( LocalDate.now(), null, - new Theme("테마명", "설명", "썸네일URI"), + new ThemeEntity(null, "테마명", "설명", "썸네일URI"), new Member(null, "name", "email@email.com", "password", Role.MEMBER)), Arguments.of( LocalDate.now(), @@ -48,7 +48,7 @@ public class ReservationTest { Arguments.of( LocalDate.now(), new ReservationTime(LocalTime.now().plusHours(1)), - new Theme("테마명", "설명", "썸네일URI"), + new ThemeEntity(null, "테마명", "설명", "썸네일URI"), null) ); } diff --git a/src/test/java/roomescape/reservation/domain/repository/ReservationSearchSpecificationTest.java b/src/test/java/roomescape/reservation/domain/repository/ReservationSearchSpecificationTest.java index f8969539..56f33293 100644 --- a/src/test/java/roomescape/reservation/domain/repository/ReservationSearchSpecificationTest.java +++ b/src/test/java/roomescape/reservation/domain/repository/ReservationSearchSpecificationTest.java @@ -19,7 +19,7 @@ import roomescape.member.infrastructure.persistence.Role; import roomescape.reservation.domain.Reservation; import roomescape.reservation.domain.ReservationStatus; import roomescape.reservation.domain.ReservationTime; -import roomescape.theme.infrastructure.persistence.Theme; +import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.infrastructure.persistence.ThemeRepository; @DataJpaTest @@ -52,7 +52,7 @@ class ReservationSearchSpecificationTest { LocalDateTime dateTime = LocalDateTime.now(); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); ReservationTime time = timeRepository.save(new ReservationTime(dateTime.toLocalTime())); - Theme theme = themeRepository.save(new Theme("name", "description", "thumbnail")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "description", "thumbnail")); reservation1 = reservationRepository.save( new Reservation(dateTime.toLocalDate(), time, theme, member, ReservationStatus.CONFIRMED)); diff --git a/src/test/java/roomescape/reservation/service/ReservationServiceTest.java b/src/test/java/roomescape/reservation/service/ReservationServiceTest.java index 8860d216..b85aa741 100644 --- a/src/test/java/roomescape/reservation/service/ReservationServiceTest.java +++ b/src/test/java/roomescape/reservation/service/ReservationServiceTest.java @@ -27,7 +27,7 @@ import roomescape.reservation.dto.request.ReservationRequest; import roomescape.reservation.dto.request.WaitingRequest; import roomescape.reservation.dto.response.ReservationResponse; import roomescape.common.exception.RoomescapeException; -import roomescape.theme.infrastructure.persistence.Theme; +import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.infrastructure.persistence.ThemeRepository; import roomescape.theme.business.ThemeService; @@ -52,7 +52,7 @@ class ReservationServiceTest { void reservationAlreadyExistFail() { // given ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30))); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member member1 = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); Member member2 = memberRepository.save(new Member(null, "name2", "email2@email.com", "password", Role.MEMBER)); LocalDate date = LocalDate.now().plusDays(1L); @@ -74,7 +74,7 @@ class ReservationServiceTest { void requestWaitWhenAlreadyReserveFail() { // given ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30))); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); LocalDate date = LocalDate.now().plusDays(1L); @@ -94,7 +94,7 @@ class ReservationServiceTest { void requestWaitTwiceFail() { // given ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30))); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); Member member1 = memberRepository.save(new Member(null, "name1", "email1@email.com", "password", Role.MEMBER)); LocalDate date = LocalDate.now().plusDays(1L); @@ -118,7 +118,7 @@ class ReservationServiceTest { void beforeDateReservationFail() { // given ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30))); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); LocalDate beforeDate = LocalDate.now().minusDays(1L); @@ -135,7 +135,7 @@ class ReservationServiceTest { // given LocalDateTime beforeTime = LocalDateTime.now().minusHours(1L).withNano(0); ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(beforeTime.toLocalTime())); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); // when & then @@ -151,7 +151,7 @@ class ReservationServiceTest { // given LocalDateTime beforeTime = LocalDateTime.now().minusDays(1L).withNano(0); ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(beforeTime.toLocalTime())); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Long NotExistMemberId = 1L; // when & then @@ -179,7 +179,7 @@ class ReservationServiceTest { void confirmWaitingWhenReservationExist() { // given ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30))); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member admin = memberRepository.save(new Member(null, "admin", "admin@email.com", "password", Role.ADMIN)); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); Member member1 = memberRepository.save(new Member(null, "name1", "email1@email.com", "password", Role.MEMBER)); @@ -202,7 +202,7 @@ class ReservationServiceTest { void approveWaiting() { // given ReservationTime reservationTime = reservationTimeRepository.save(new ReservationTime(LocalTime.of(12, 30))); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member admin = memberRepository.save(new Member(null, "admin", "admin@email.com", "password", Role.ADMIN)); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); diff --git a/src/test/java/roomescape/reservation/service/ReservationTimeServiceTest.java b/src/test/java/roomescape/reservation/service/ReservationTimeServiceTest.java index 7d41288b..473f5698 100644 --- a/src/test/java/roomescape/reservation/service/ReservationTimeServiceTest.java +++ b/src/test/java/roomescape/reservation/service/ReservationTimeServiceTest.java @@ -23,7 +23,7 @@ import roomescape.reservation.domain.repository.ReservationRepository; import roomescape.reservation.domain.repository.ReservationTimeRepository; import roomescape.reservation.dto.request.ReservationTimeRequest; import roomescape.common.exception.RoomescapeException; -import roomescape.theme.infrastructure.persistence.Theme; +import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.infrastructure.persistence.ThemeRepository; @SpringBootTest @@ -74,7 +74,7 @@ class ReservationTimeServiceTest { LocalDateTime localDateTime = LocalDateTime.now().plusDays(1L).withNano(0); ReservationTime reservationTime = reservationTimeRepository.save( new ReservationTime(localDateTime.toLocalTime())); - Theme theme = themeRepository.save(new Theme("테마명", "설명", "썸네일URL")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "테마명", "설명", "썸네일URL")); Member member = memberRepository.save(new Member(null, "name", "email@email.com", "password", Role.MEMBER)); // when diff --git a/src/test/java/roomescape/reservation/service/ReservationWithPaymentServiceTest.java b/src/test/java/roomescape/reservation/service/ReservationWithPaymentServiceTest.java index 509182da..4a7e5cdc 100644 --- a/src/test/java/roomescape/reservation/service/ReservationWithPaymentServiceTest.java +++ b/src/test/java/roomescape/reservation/service/ReservationWithPaymentServiceTest.java @@ -28,7 +28,7 @@ import roomescape.reservation.domain.repository.ReservationRepository; import roomescape.reservation.domain.repository.ReservationTimeRepository; import roomescape.reservation.dto.request.ReservationRequest; import roomescape.reservation.dto.response.ReservationResponse; -import roomescape.theme.infrastructure.persistence.Theme; +import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.infrastructure.persistence.ThemeRepository; @SpringBootTest @@ -60,7 +60,7 @@ class ReservationWithPaymentServiceTest { LocalDate date = localDateTime.toLocalDate(); ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); Member member = memberRepository.save(new Member(null, "member", "email@email.com", "password", Role.MEMBER)); - Theme theme = themeRepository.save(new Theme("name", "desc", "thumbnail")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail")); ReservationRequest reservationRequest = new ReservationRequest(date, time.getId(), theme.getId(), "payment-key", "order-id", 10000L, "NORMAL"); @@ -96,7 +96,7 @@ class ReservationWithPaymentServiceTest { LocalDate date = localDateTime.toLocalDate(); ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); Member member = memberRepository.save(new Member(null, "member", "admin@email.com", "password", Role.ADMIN)); - Theme theme = themeRepository.save(new Theme("name", "desc", "thumbnail")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail")); ReservationRequest reservationRequest = new ReservationRequest(date, time.getId(), theme.getId(), "payment-key", "order-id", 10000L, "NORMAL"); @@ -124,7 +124,7 @@ class ReservationWithPaymentServiceTest { LocalDate date = localDateTime.toLocalDate(); ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); Member member = memberRepository.save(new Member(null, "member", "admin@email.com", "password", Role.ADMIN)); - Theme theme = themeRepository.save(new Theme("name", "desc", "thumbnail")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail")); Reservation saved = reservationRepository.save( new Reservation(date, time, theme, member, ReservationStatus.CONFIRMED_PAYMENT_REQUIRED)); @@ -146,7 +146,7 @@ class ReservationWithPaymentServiceTest { LocalDate date = localDateTime.toLocalDate(); ReservationTime time = reservationTimeRepository.save(new ReservationTime(localDateTime.toLocalTime())); Member member = memberRepository.save(new Member(null, "member", "admin@email.com", "password", Role.ADMIN)); - Theme theme = themeRepository.save(new Theme("name", "desc", "thumbnail")); + ThemeEntity theme = themeRepository.save(new ThemeEntity(null, "name", "desc", "thumbnail")); ReservationRequest reservationRequest = new ReservationRequest(date, time.getId(), theme.getId(), "payment-key", "order-id", 10000L, "NORMAL"); diff --git a/src/test/java/roomescape/theme/business/ThemeServiceTest.java b/src/test/java/roomescape/theme/business/ThemeServiceTest.java index 5e42d70c..3df47809 100644 --- a/src/test/java/roomescape/theme/business/ThemeServiceTest.java +++ b/src/test/java/roomescape/theme/business/ThemeServiceTest.java @@ -23,7 +23,7 @@ import roomescape.reservation.dto.response.ReservationTimeResponse; import roomescape.reservation.service.ReservationService; import roomescape.reservation.service.ReservationTimeService; import roomescape.common.exception.RoomescapeException; -import roomescape.theme.infrastructure.persistence.Theme; +import roomescape.theme.infrastructure.persistence.ThemeEntity; import roomescape.theme.infrastructure.persistence.ThemeRepository; import roomescape.theme.web.ThemeRequest; import roomescape.theme.web.ThemeResponse; @@ -53,10 +53,10 @@ class ThemeServiceTest { @DisplayName("테마를 조회한다.") void findThemeById() { // given - Theme theme = themeRepository.save(new Theme("name", "description", "thumbnail")); + ThemeEntity theme = themeRepository.save(new ThemeEntity("name", "description", "thumbnail")); // when - Theme foundTheme = themeService.findThemeById(theme.getId()); + ThemeEntity foundTheme = themeService.findThemeById(theme.getId()); // then assertThat(foundTheme).isEqualTo(theme); @@ -66,7 +66,7 @@ class ThemeServiceTest { @DisplayName("존재하지 않는 ID로 테마를 조회하면 예외가 발생한다.") void findThemeByNotExistId() { // given - Theme theme = themeRepository.save(new Theme("name", "description", "thumbnail")); + ThemeEntity theme = themeRepository.save(new ThemeEntity("name", "description", "thumbnail")); // when Long notExistId = theme.getId() + 1; @@ -80,8 +80,8 @@ class ThemeServiceTest { @DisplayName("모든 테마를 조회한다.") void findAllThemes() { // given - Theme theme = themeRepository.save(new Theme("name", "description", "thumbnail")); - Theme theme1 = themeRepository.save(new Theme("name1", "description1", "thumbnail1")); + ThemeEntity theme = themeRepository.save(new ThemeEntity("name", "description", "thumbnail")); + ThemeEntity theme1 = themeRepository.save(new ThemeEntity("name1", "description1", "thumbnail1")); // when ThemesResponse found = themeService.findAllThemes(); @@ -111,7 +111,7 @@ class ThemeServiceTest { ThemeResponse themeResponse = themeService.addTheme(new ThemeRequest("name", "description", "thumbnail")); // when - Theme found = themeRepository.findById(themeResponse.id()).orElse(null); + ThemeEntity found = themeRepository.findById(themeResponse.id()).orElse(null); // then assertThat(found).isNotNull(); @@ -135,7 +135,7 @@ class ThemeServiceTest { @DisplayName("테마를 삭제한다.") void removeThemeById() { // given - Theme theme = themeRepository.save(new Theme("name", "description", "thumbnail")); + ThemeEntity theme = themeRepository.save(new ThemeEntity("name", "description", "thumbnail")); // when themeService.removeThemeById(theme.getId()); @@ -151,7 +151,7 @@ class ThemeServiceTest { LocalDateTime dateTime = LocalDateTime.now().plusDays(1); ReservationTimeResponse time = reservationTimeService.addTime( new ReservationTimeRequest(dateTime.toLocalTime())); - Theme theme = themeRepository.save(new Theme("name", "description", "thumbnail")); + ThemeEntity theme = themeRepository.save(new ThemeEntity("name", "description", "thumbnail")); Member member = memberRepository.save(new Member(null, "member", "password", "name", Role.MEMBER)); reservationService.addReservation( new ReservationRequest(dateTime.toLocalDate(), time.id(), theme.getId(), "paymentKey", "orderId", 1000L, diff --git a/src/test/java/roomescape/theme/util/TestThemeCreateUtil.kt b/src/test/java/roomescape/theme/util/TestThemeCreateUtil.kt index daebd118..4111939a 100644 --- a/src/test/java/roomescape/theme/util/TestThemeCreateUtil.kt +++ b/src/test/java/roomescape/theme/util/TestThemeCreateUtil.kt @@ -4,7 +4,7 @@ import jakarta.persistence.EntityManager import roomescape.member.infrastructure.persistence.Member import roomescape.reservation.domain.ReservationStatus import roomescape.reservation.domain.ReservationTime -import roomescape.theme.infrastructure.persistence.Theme +import roomescape.theme.infrastructure.persistence.ThemeEntity import roomescape.util.MemberFixture import roomescape.util.ReservationFixture import roomescape.util.ReservationTimeFixture @@ -18,8 +18,8 @@ object TestThemeCreateUtil { name: String, reservedCount: Int, date: LocalDate, - ): Long { - val theme: Theme = ThemeFixture.create(name = name).also { entityManager.persist(it) } + ): ThemeEntity { + val themeEntity: ThemeEntity = ThemeFixture.create(name = name).also { entityManager.persist(it) } val member: Member = MemberFixture.create().also { entityManager.persist(it) } for (i in 1..reservedCount) { @@ -29,7 +29,7 @@ object TestThemeCreateUtil { ReservationFixture.create( date = date, - theme = theme, + themeEntity = themeEntity, member = member, reservationTime = time, status = ReservationStatus.CONFIRMED @@ -39,6 +39,6 @@ object TestThemeCreateUtil { entityManager.flush() entityManager.clear() - return theme.id + return themeEntity } } diff --git a/src/test/java/roomescape/util/Fixtures.kt b/src/test/java/roomescape/util/Fixtures.kt index bf9bd32d..5236ef28 100644 --- a/src/test/java/roomescape/util/Fixtures.kt +++ b/src/test/java/roomescape/util/Fixtures.kt @@ -11,7 +11,7 @@ import roomescape.payment.web.PaymentCancel import roomescape.reservation.domain.Reservation import roomescape.reservation.domain.ReservationStatus import roomescape.reservation.domain.ReservationTime -import roomescape.theme.infrastructure.persistence.Theme +import roomescape.theme.infrastructure.persistence.ThemeEntity import java.time.LocalDate import java.time.LocalTime import java.time.OffsetDateTime @@ -62,18 +62,18 @@ object ThemeFixture { name: String = "Default Theme", description: String = "Default Description", thumbnail: String = "https://example.com/default-thumbnail.jpg" - ): Theme = Theme(id, name, description, thumbnail) + ): ThemeEntity = ThemeEntity(id, name, description, thumbnail) } object ReservationFixture { fun create( id: Long? = null, date: LocalDate = LocalDate.now().plusWeeks(1), - theme: Theme = ThemeFixture.create(), + themeEntity: ThemeEntity = ThemeFixture.create(), reservationTime: ReservationTime = ReservationTimeFixture.create(), member: Member = MemberFixture.create(), status: ReservationStatus = ReservationStatus.CONFIRMED_PAYMENT_REQUIRED - ): Reservation = Reservation(id, date, reservationTime, theme, member, status) + ): Reservation = Reservation(id, date, reservationTime, themeEntity, member, status) } object JwtFixture {