generated from pricelees/issue-pr-template
[#18] 코드 정리 및 일부 컨벤션 통일 #19
@ -5,11 +5,9 @@ import io.github.oshai.kotlinlogging.KotlinLogging
|
||||
import org.springframework.http.HttpStatus
|
||||
import org.springframework.http.ResponseEntity
|
||||
import org.springframework.http.converter.HttpMessageNotReadableException
|
||||
import org.springframework.web.HttpRequestMethodNotSupportedException
|
||||
import org.springframework.web.bind.MethodArgumentNotValidException
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler
|
||||
import org.springframework.web.bind.annotation.RestControllerAdvice
|
||||
import org.springframework.web.client.ResourceAccessException
|
||||
import roomescape.common.dto.response.CommonErrorResponse
|
||||
|
||||
@RestControllerAdvice
|
||||
@ -54,7 +54,6 @@ class PaymentService(
|
||||
canceledAt = cancelInfo.canceledAt
|
||||
).also { canceledPaymentRepository.save(it) }
|
||||
|
||||
|
||||
@Transactional
|
||||
fun createCanceledPaymentByReservationId(reservationId: Long): PaymentCancelRequest {
|
||||
val paymentKey: String = paymentRepository.findPaymentKeyByReservationId(reservationId)
|
||||
@ -98,7 +98,6 @@ class ReservationService(
|
||||
reservationRepository.save(it)
|
||||
}.toRetrieveResponse()
|
||||
|
||||
|
||||
private fun validateMemberAlreadyReserve(themeId: Long?, timeId: Long?, date: LocalDate?, memberId: Long?) {
|
||||
val spec: Specification<ReservationEntity> = ReservationSearchSpecification()
|
||||
.sameMemberId(memberId)
|
||||
@ -49,7 +49,6 @@ class ReservationWithPaymentService(
|
||||
@Transactional(readOnly = true)
|
||||
fun isNotPaidReservation(reservationId: Long): Boolean = !paymentService.isReservationPaid(reservationId)
|
||||
|
||||
|
||||
fun updateCanceledTime(
|
||||
paymentKey: String,
|
||||
canceledAt: OffsetDateTime
|
||||
@ -27,7 +27,6 @@ class TimeService(
|
||||
HttpStatus.BAD_REQUEST
|
||||
)
|
||||
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
fun findAll(): TimeRetrieveListResponse = timeRepository.findAll().toRetrieveListResponse()
|
||||
|
||||
@ -12,10 +12,10 @@ import org.springframework.web.bind.annotation.RequestParam
|
||||
import roomescape.auth.web.support.Admin
|
||||
import roomescape.auth.web.support.LoginRequired
|
||||
import roomescape.common.dto.response.CommonApiResponse
|
||||
import roomescape.reservation.web.TimeWithAvailabilityListResponse
|
||||
import roomescape.reservation.web.TimeCreateRequest
|
||||
import roomescape.reservation.web.TimeCreateResponse
|
||||
import roomescape.reservation.web.TimeRetrieveListResponse
|
||||
import roomescape.reservation.web.TimeWithAvailabilityListResponse
|
||||
import java.time.LocalDate
|
||||
|
||||
@Tag(name = "4. 예약 시간 API", description = "예약 시간을 조회 / 추가 / 삭제할 때 사용합니다.")
|
||||
@ -1,7 +1,6 @@
|
||||
package roomescape.reservation.infrastructure.persistence
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore
|
||||
import io.swagger.v3.oas.annotations.media.Schema
|
||||
import jakarta.persistence.*
|
||||
import roomescape.member.infrastructure.persistence.MemberEntity
|
||||
import roomescape.theme.infrastructure.persistence.ThemeEntity
|
||||
@ -8,8 +8,8 @@ import roomescape.auth.web.support.MemberId
|
||||
import roomescape.common.dto.response.CommonApiResponse
|
||||
import roomescape.common.exception.RoomescapeException
|
||||
import roomescape.payment.infrastructure.client.PaymentApproveRequest
|
||||
import roomescape.payment.infrastructure.client.TossPaymentClient
|
||||
import roomescape.payment.infrastructure.client.PaymentApproveResponse
|
||||
import roomescape.payment.infrastructure.client.TossPaymentClient
|
||||
import roomescape.payment.web.PaymentCancelRequest
|
||||
import roomescape.reservation.business.ReservationService
|
||||
import roomescape.reservation.business.ReservationWithPaymentService
|
||||
@ -30,7 +30,6 @@ class ThemeService(
|
||||
fun findAll(): ThemesResponse = themeRepository.findAll()
|
||||
.toResponse()
|
||||
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
fun findMostReservedThemes(count: Int): ThemesResponse {
|
||||
val today = LocalDate.now()
|
||||
@ -46,7 +46,6 @@ fun ThemeEntity.toResponse(): ThemeResponse = ThemeResponse(
|
||||
thumbnail = this.thumbnail
|
||||
)
|
||||
|
||||
|
||||
@Schema(name = "테마 목록 조회 응답", description = "모든 테마 목록 조회 응답시 사용됩니다.")
|
||||
data class ThemesResponse(
|
||||
@field:Schema(description = "모든 테마 목록")
|
||||
@ -17,7 +17,6 @@ import roomescape.member.infrastructure.persistence.MemberRepository
|
||||
import roomescape.util.JwtFixture
|
||||
import roomescape.util.MemberFixture
|
||||
|
||||
|
||||
class AuthServiceTest : BehaviorSpec({
|
||||
val memberRepository: MemberRepository = mockk()
|
||||
val memberService: MemberService = MemberService(memberRepository)
|
||||
@ -1,6 +1,5 @@
|
||||
package roomescape.payment.infrastructure.client
|
||||
|
||||
import roomescape.payment.infrastructure.client.PaymentApproveRequest
|
||||
import roomescape.payment.web.PaymentCancelRequest
|
||||
import kotlin.math.roundToLong
|
||||
|
||||
@ -12,8 +12,8 @@ import roomescape.reservation.web.MyReservationRetrieveResponse
|
||||
import roomescape.theme.infrastructure.persistence.ThemeEntity
|
||||
import roomescape.util.PaymentFixture
|
||||
import roomescape.util.ReservationFixture
|
||||
import roomescape.util.TimeFixture
|
||||
import roomescape.util.ThemeFixture
|
||||
import roomescape.util.TimeFixture
|
||||
|
||||
@DataJpaTest
|
||||
class ReservationRepositoryTest(
|
||||
@ -10,8 +10,8 @@ import roomescape.member.infrastructure.persistence.MemberEntity
|
||||
import roomescape.theme.infrastructure.persistence.ThemeEntity
|
||||
import roomescape.util.MemberFixture
|
||||
import roomescape.util.ReservationFixture
|
||||
import roomescape.util.TimeFixture
|
||||
import roomescape.util.ThemeFixture
|
||||
import roomescape.util.TimeFixture
|
||||
import java.time.LocalDate
|
||||
|
||||
@DataJpaTest
|
||||
@ -18,9 +18,9 @@ import roomescape.reservation.infrastructure.persistence.ReservationRepository
|
||||
import roomescape.reservation.infrastructure.persistence.TimeEntity
|
||||
import roomescape.reservation.infrastructure.persistence.TimeRepository
|
||||
import roomescape.util.ReservationFixture
|
||||
import roomescape.util.TimeFixture
|
||||
import roomescape.util.RoomescapeApiTest
|
||||
import roomescape.util.ThemeFixture
|
||||
import roomescape.util.TimeFixture
|
||||
import java.time.LocalDate
|
||||
import java.time.LocalTime
|
||||
|
||||
@ -7,8 +7,8 @@ import roomescape.reservation.infrastructure.persistence.TimeEntity
|
||||
import roomescape.theme.infrastructure.persistence.ThemeEntity
|
||||
import roomescape.util.MemberFixture
|
||||
import roomescape.util.ReservationFixture
|
||||
import roomescape.util.TimeFixture
|
||||
import roomescape.util.ThemeFixture
|
||||
import roomescape.util.TimeFixture
|
||||
import java.time.LocalDate
|
||||
import java.time.LocalTime
|
||||
|
||||
@ -9,22 +9,15 @@ import org.hamcrest.Matchers.equalTo
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import org.springframework.boot.test.web.server.LocalServerPort
|
||||
import org.springframework.transaction.support.TransactionTemplate
|
||||
import roomescape.theme.business.ThemeService
|
||||
import roomescape.theme.util.TestThemeCreateUtil
|
||||
import roomescape.util.CleanerMode
|
||||
import roomescape.util.DatabaseCleanerExtension
|
||||
import java.time.LocalDate
|
||||
import kotlin.random.Random
|
||||
|
||||
/**
|
||||
* GET /themes/most-reserved-last-week API 테스트
|
||||
* 상세 테스트는 Repository 테스트에서 진행
|
||||
* 날짜 범위, 예약 수만 검증
|
||||
*/
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
class MostReservedThemeAPITest(
|
||||
class MostReservedThemeApiTest(
|
||||
@LocalServerPort val port: Int,
|
||||
val themeService: ThemeService,
|
||||
val transactionTemplate: TransactionTemplate,
|
||||
val entityManager: EntityManager,
|
||||
) : FunSpec({
|
||||
@ -53,59 +46,55 @@ class MostReservedThemeAPITest(
|
||||
}
|
||||
}
|
||||
|
||||
context("가장 많이 예약된 테마를 조회할 때, ") {
|
||||
context("지난 주 가장 많이 예약된 테마 API") {
|
||||
val endpoint = "/themes/most-reserved-last-week"
|
||||
test("갯수를 입력하지 않으면 10개를 반환한다.") {
|
||||
|
||||
test("count 파라미터가 없으면 10개를 반환한다") {
|
||||
Given {
|
||||
port(port)
|
||||
} When {
|
||||
get(endpoint)
|
||||
} Then {
|
||||
log().all()
|
||||
statusCode(200)
|
||||
body("data.themes.size()", equalTo(10))
|
||||
}
|
||||
}
|
||||
|
||||
test("입력된 갯수가 조회된 갯수보다 크면 조회된 갯수만큼 반환한다.") {
|
||||
test("조회된 테마가 count보다 적으면 조회된 만큼 반환한다") {
|
||||
val count = 15
|
||||
Given {
|
||||
port(port)
|
||||
} When {
|
||||
param("count", count)
|
||||
get("/themes/most-reserved-last-week")
|
||||
} When {
|
||||
get(endpoint)
|
||||
} Then {
|
||||
log().all()
|
||||
statusCode(200)
|
||||
body("data.themes.size()", equalTo(10))
|
||||
}
|
||||
}
|
||||
|
||||
test("입력된 갯수가 조회된 갯수보다 작으면 입력된 갯수만큼 반환한다.") {
|
||||
test("조회된 테마가 count보다 많으면 count만큼 반환한다") {
|
||||
val count = 5
|
||||
Given {
|
||||
port(port)
|
||||
} When {
|
||||
param("count", count)
|
||||
get("/themes/most-reserved-last-week")
|
||||
} When {
|
||||
get(endpoint)
|
||||
} Then {
|
||||
log().all()
|
||||
statusCode(200)
|
||||
body("data.themes.size()", equalTo(count))
|
||||
}
|
||||
}
|
||||
|
||||
test("7일 전 부터 1일 전 까지 예약된 테마를 대상으로 한다.") {
|
||||
// 현재 저장된 데이터는 지난 7일간 예약된 테마 10개와 8일 전 예약된 테마 1개
|
||||
// 8일 전 예약된 테마는 제외되어야 하므로, 10개가 조회되어야 한다.
|
||||
test("지난 7일 동안의 예약만 집계한다") {
|
||||
// 8일 전에 예약된 테마는 집계에서 제외되어야 한다.
|
||||
val count = 11
|
||||
Given {
|
||||
port(port)
|
||||
} When {
|
||||
param("count", count)
|
||||
get("/themes/most-reserved-last-week")
|
||||
} When {
|
||||
get(endpoint)
|
||||
} Then {
|
||||
log().all()
|
||||
statusCode(200)
|
||||
body("data.themes.size()", equalTo(10))
|
||||
}
|
||||
@ -4,10 +4,10 @@ import roomescape.auth.infrastructure.jwt.JwtHandler
|
||||
import roomescape.auth.web.LoginRequest
|
||||
import roomescape.member.infrastructure.persistence.MemberEntity
|
||||
import roomescape.member.infrastructure.persistence.Role
|
||||
import roomescape.payment.infrastructure.persistence.CanceledPaymentEntity
|
||||
import roomescape.payment.infrastructure.persistence.PaymentEntity
|
||||
import roomescape.payment.infrastructure.client.PaymentApproveRequest
|
||||
import roomescape.payment.infrastructure.client.PaymentApproveResponse
|
||||
import roomescape.payment.infrastructure.persistence.CanceledPaymentEntity
|
||||
import roomescape.payment.infrastructure.persistence.PaymentEntity
|
||||
import roomescape.payment.web.PaymentCancelRequest
|
||||
import roomescape.payment.web.PaymentCancelResponse
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationEntity
|
||||
Loading…
x
Reference in New Issue
Block a user