[#18] 코드 정리 및 일부 컨벤션 통일 #19

Merged
pricelees merged 24 commits from refactor/#18 into main 2025-07-22 09:05:31 +00:00
26 changed files with 131 additions and 127 deletions
Showing only changes of commit 85328021a7 - Show all commits

View File

@ -16,7 +16,7 @@ import roomescape.member.web.toRetrieveResponse
class MemberService( class MemberService(
private val memberRepository: MemberRepository private val memberRepository: MemberRepository
) { ) {
fun findAll(): MemberRetrieveListResponse = MemberRetrieveListResponse( fun findMembers(): MemberRetrieveListResponse = MemberRetrieveListResponse(
memberRepository.findAll() memberRepository.findAll()
.map { it.toRetrieveResponse() } .map { it.toRetrieveResponse() }
.toList() .toList()

View File

@ -20,5 +20,5 @@ interface MemberAPI {
useReturnTypeSchema = true useReturnTypeSchema = true
) )
) )
fun findAll(): ResponseEntity<CommonApiResponse<MemberRetrieveListResponse>> fun findMembers(): ResponseEntity<CommonApiResponse<MemberRetrieveListResponse>>
} }

View File

@ -13,8 +13,8 @@ class MemberController(
) : MemberAPI { ) : MemberAPI {
@GetMapping("/members") @GetMapping("/members")
override fun findAll(): ResponseEntity<CommonApiResponse<MemberRetrieveListResponse>> { override fun findMembers(): ResponseEntity<CommonApiResponse<MemberRetrieveListResponse>> {
val response: MemberRetrieveListResponse = memberService.findAll() val response: MemberRetrieveListResponse = memberService.findMembers()
return ResponseEntity.ok(CommonApiResponse(response)) return ResponseEntity.ok(CommonApiResponse(response))
} }

View File

@ -30,7 +30,7 @@ class TossPaymentClient(
private val tossPaymentClient: RestClient = tossPaymentClientBuilder.build() private val tossPaymentClient: RestClient = tossPaymentClientBuilder.build()
fun confirmPayment(paymentRequest: PaymentApproveRequest): PaymentApproveResponse { fun confirm(paymentRequest: PaymentApproveRequest): PaymentApproveResponse {
logPaymentInfo(paymentRequest) logPaymentInfo(paymentRequest)
return tossPaymentClient.post() return tossPaymentClient.post()
@ -46,7 +46,7 @@ class TossPaymentClient(
?: throw RoomescapeException(ErrorType.PAYMENT_SERVER_ERROR, HttpStatus.INTERNAL_SERVER_ERROR) ?: throw RoomescapeException(ErrorType.PAYMENT_SERVER_ERROR, HttpStatus.INTERNAL_SERVER_ERROR)
} }
fun cancelPayment(cancelRequest: PaymentCancelRequest): PaymentCancelResponse { fun cancel(cancelRequest: PaymentCancelRequest): PaymentCancelResponse {
logPaymentCancelInfo(cancelRequest) logPaymentCancelInfo(cancelRequest)
val param = Map.of<String, String>("cancelReason", cancelRequest.cancelReason) val param = Map.of<String, String>("cancelReason", cancelRequest.cancelReason)

View File

@ -24,7 +24,7 @@ class ReservationService(
) { ) {
@Transactional(readOnly = true) @Transactional(readOnly = true)
fun findAllReservations(): ReservationRetrieveListResponse { fun findReservations(): ReservationRetrieveListResponse {
val spec: Specification<ReservationEntity> = ReservationSearchSpecification() val spec: Specification<ReservationEntity> = ReservationSearchSpecification()
.confirmed() .confirmed()
.build() .build()
@ -46,7 +46,7 @@ class ReservationService(
return reservationRepository.findAll(spec).map { it.toRetrieveResponse() } return reservationRepository.findAll(spec).map { it.toRetrieveResponse() }
} }
fun removeReservationById(reservationId: Long, memberId: Long) { fun deleteReservation(reservationId: Long, memberId: Long) {
validateIsMemberAdmin(memberId) validateIsMemberAdmin(memberId)
reservationRepository.deleteById(reservationId) reservationRepository.deleteById(reservationId)
} }
@ -64,7 +64,7 @@ class ReservationService(
} }
} }
fun addReservationByAdmin(request: AdminReservationCreateRequest): ReservationRetrieveResponse { fun createReservationByAdmin(request: AdminReservationCreateRequest): ReservationRetrieveResponse {
validateIsReservationExist(request.themeId, request.timeId, request.date) validateIsReservationExist(request.themeId, request.timeId, request.date)
return addReservationWithoutPayment( return addReservationWithoutPayment(
@ -76,7 +76,7 @@ class ReservationService(
) )
} }
fun addWaiting(request: WaitingCreateRequest, memberId: Long): ReservationRetrieveResponse { fun createWaiting(request: WaitingCreateRequest, memberId: Long): ReservationRetrieveResponse {
validateMemberAlreadyReserve(request.themeId, request.timeId, request.date, memberId) validateMemberAlreadyReserve(request.themeId, request.timeId, request.date, memberId)
return addReservationWithoutPayment( return addReservationWithoutPayment(
request.themeId, request.themeId,
@ -163,7 +163,7 @@ class ReservationService(
} }
@Transactional(readOnly = true) @Transactional(readOnly = true)
fun findFilteredReservations( fun searchReservations(
themeId: Long?, themeId: Long?,
memberId: Long?, memberId: Long?,
dateFrom: LocalDate?, dateFrom: LocalDate?,
@ -194,11 +194,11 @@ class ReservationService(
} }
@Transactional(readOnly = true) @Transactional(readOnly = true)
fun findMemberReservations(memberId: Long): MyReservationRetrieveListResponse { fun findReservationsByMemberId(memberId: Long): MyReservationRetrieveListResponse {
return MyReservationRetrieveListResponse(reservationRepository.findMyReservations(memberId)) return MyReservationRetrieveListResponse(reservationRepository.findAllById(memberId))
} }
fun approveWaiting(reservationId: Long, memberId: Long) { fun confirmWaiting(reservationId: Long, memberId: Long) {
validateIsMemberAdmin(memberId) validateIsMemberAdmin(memberId)
if (reservationRepository.isExistConfirmedReservation(reservationId)) { if (reservationRepository.isExistConfirmedReservation(reservationId)) {
throw RoomescapeException(ErrorType.RESERVATION_DUPLICATED, HttpStatus.CONFLICT) throw RoomescapeException(ErrorType.RESERVATION_DUPLICATED, HttpStatus.CONFLICT)
@ -206,7 +206,7 @@ class ReservationService(
reservationRepository.updateStatusByReservationId(reservationId, ReservationStatus.CONFIRMED_PAYMENT_REQUIRED) reservationRepository.updateStatusByReservationId(reservationId, ReservationStatus.CONFIRMED_PAYMENT_REQUIRED)
} }
fun cancelWaiting(reservationId: Long, memberId: Long) { fun deleteWaiting(reservationId: Long, memberId: Long) {
reservationRepository.findByIdOrNull(reservationId)?.takeIf { reservationRepository.findByIdOrNull(reservationId)?.takeIf {
it.isWaiting() && it.isSameMember(memberId) it.isWaiting() && it.isSameMember(memberId)
}?.let { }?.let {
@ -214,7 +214,7 @@ class ReservationService(
} ?: throw throwReservationNotFound(reservationId) } ?: throw throwReservationNotFound(reservationId)
} }
fun denyWaiting(reservationId: Long, memberId: Long) { fun rejectWaiting(reservationId: Long, memberId: Long) {
validateIsMemberAdmin(memberId) validateIsMemberAdmin(memberId)
reservationRepository.findByIdOrNull(reservationId)?.takeIf { reservationRepository.findByIdOrNull(reservationId)?.takeIf {
it.isWaiting() it.isWaiting()

View File

@ -17,7 +17,7 @@ class ReservationWithPaymentService(
private val reservationService: ReservationService, private val reservationService: ReservationService,
private val paymentService: PaymentService private val paymentService: PaymentService
) { ) {
fun addReservationWithPayment( fun createReservationAndPayment(
request: ReservationCreateWithPaymentRequest, request: ReservationCreateWithPaymentRequest,
paymentInfo: PaymentApproveResponse, paymentInfo: PaymentApproveResponse,
memberId: Long memberId: Long
@ -28,7 +28,7 @@ class ReservationWithPaymentService(
.reservation .reservation
} }
fun saveCanceledPayment( fun createCanceledPayment(
cancelInfo: PaymentCancelResponse, cancelInfo: PaymentCancelResponse,
approvedAt: OffsetDateTime, approvedAt: OffsetDateTime,
paymentKey: String paymentKey: String
@ -36,12 +36,12 @@ class ReservationWithPaymentService(
paymentService.createCanceledPayment(cancelInfo, approvedAt, paymentKey) paymentService.createCanceledPayment(cancelInfo, approvedAt, paymentKey)
} }
fun removeReservationWithPayment( fun deleteReservationAndPayment(
reservationId: Long, reservationId: Long,
memberId: Long memberId: Long
): PaymentCancelRequest { ): PaymentCancelRequest {
val paymentCancelRequest = paymentService.createCanceledPaymentByReservationId(reservationId) val paymentCancelRequest = paymentService.createCanceledPaymentByReservationId(reservationId)
reservationService.removeReservationById(reservationId, memberId) reservationService.deleteReservation(reservationId, memberId)
return paymentCancelRequest return paymentCancelRequest
} }

View File

@ -28,10 +28,10 @@ class TimeService(
) )
@Transactional(readOnly = true) @Transactional(readOnly = true)
fun findAll(): TimeRetrieveListResponse = timeRepository.findAll().toRetrieveListResponse() fun findTimes(): TimeRetrieveListResponse = timeRepository.findAll().toRetrieveListResponse()
@Transactional @Transactional
fun create(timeCreateRequest: TimeCreateRequest): TimeCreateResponse { fun createTime(timeCreateRequest: TimeCreateRequest): TimeCreateResponse {
val startAt: LocalTime = timeCreateRequest.startAt val startAt: LocalTime = timeCreateRequest.startAt
if (timeRepository.existsByStartAt(startAt)) { if (timeRepository.existsByStartAt(startAt)) {
@ -46,7 +46,7 @@ class TimeService(
} }
@Transactional @Transactional
fun deleteById(id: Long) { fun deleteTime(id: Long) {
val time: TimeEntity = findById(id) val time: TimeEntity = findById(id)
reservationRepository.findByTime(time) reservationRepository.findByTime(time)
.also { .also {
@ -60,7 +60,7 @@ class TimeService(
} }
@Transactional(readOnly = true) @Transactional(readOnly = true)
fun findAllWithAvailability(date: LocalDate, themeId: Long): TimeWithAvailabilityListResponse { fun findTimesWithAvailability(date: LocalDate, themeId: Long): TimeWithAvailabilityListResponse {
val allTimes = timeRepository.findAll() val allTimes = timeRepository.findAll()
val reservations: List<ReservationEntity> = reservationRepository.findByDateAndThemeId(date, themeId) val reservations: List<ReservationEntity> = reservationRepository.findByDateAndThemeId(date, themeId)

View File

@ -26,12 +26,12 @@ interface ReservationAPI {
@Admin @Admin
@Operation(summary = "모든 예약 정보 조회", tags = ["관리자 로그인이 필요한 API"]) @Operation(summary = "모든 예약 정보 조회", tags = ["관리자 로그인이 필요한 API"])
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)) @ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
fun getAllReservations(): ResponseEntity<CommonApiResponse<ReservationRetrieveListResponse>> fun findReservations(): ResponseEntity<CommonApiResponse<ReservationRetrieveListResponse>>
@LoginRequired @LoginRequired
@Operation(summary = "자신의 예약 및 대기 조회", tags = ["로그인이 필요한 API"]) @Operation(summary = "자신의 예약 및 대기 조회", tags = ["로그인이 필요한 API"])
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)) @ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
fun getMemberReservations( fun findReservationsByMemberId(
@MemberId @Parameter(hidden = true) memberId: Long @MemberId @Parameter(hidden = true) memberId: Long
): ResponseEntity<CommonApiResponse<MyReservationRetrieveListResponse>> ): ResponseEntity<CommonApiResponse<MyReservationRetrieveListResponse>>
@ -40,7 +40,7 @@ interface ReservationAPI {
@ApiResponses( @ApiResponses(
ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true) ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)
) )
fun getReservationBySearching( fun searchReservations(
@RequestParam(required = false) themeId: Long?, @RequestParam(required = false) themeId: Long?,
@RequestParam(required = false) memberId: Long?, @RequestParam(required = false) memberId: Long?,
@RequestParam(required = false) dateFrom: LocalDate?, @RequestParam(required = false) dateFrom: LocalDate?,
@ -52,7 +52,7 @@ interface ReservationAPI {
@ApiResponses( @ApiResponses(
ApiResponse(responseCode = "204", description = "성공"), ApiResponse(responseCode = "204", description = "성공"),
) )
fun removeReservation( fun cancelReservationByAdmin(
@MemberId @Parameter(hidden = true) memberId: Long, @MemberId @Parameter(hidden = true) memberId: Long,
@PathVariable("id") reservationId: Long @PathVariable("id") reservationId: Long
): ResponseEntity<CommonApiResponse<Unit>> ): ResponseEntity<CommonApiResponse<Unit>>
@ -67,7 +67,7 @@ interface ReservationAPI {
headers = [Header(name = HttpHeaders.LOCATION, description = "생성된 예약 정보 URL", schema = Schema(example = "/reservations/1"))] headers = [Header(name = HttpHeaders.LOCATION, description = "생성된 예약 정보 URL", schema = Schema(example = "/reservations/1"))]
) )
) )
fun saveReservation( fun createReservationWithPayment(
@Valid @RequestBody reservationCreateWithPaymentRequest: ReservationCreateWithPaymentRequest, @Valid @RequestBody reservationCreateWithPaymentRequest: ReservationCreateWithPaymentRequest,
@MemberId @Parameter(hidden = true) memberId: Long @MemberId @Parameter(hidden = true) memberId: Long
): ResponseEntity<CommonApiResponse<ReservationRetrieveResponse>> ): ResponseEntity<CommonApiResponse<ReservationRetrieveResponse>>
@ -82,14 +82,14 @@ interface ReservationAPI {
headers = [Header(name = HttpHeaders.LOCATION, description = "생성된 예약 정보 URL", schema = Schema(example = "/reservations/1"))], headers = [Header(name = HttpHeaders.LOCATION, description = "생성된 예약 정보 URL", schema = Schema(example = "/reservations/1"))],
) )
) )
fun saveReservationByAdmin( fun createReservationByAdmin(
@Valid @RequestBody adminReservationRequest: AdminReservationCreateRequest, @Valid @RequestBody adminReservationRequest: AdminReservationCreateRequest,
): ResponseEntity<CommonApiResponse<ReservationRetrieveResponse>> ): ResponseEntity<CommonApiResponse<ReservationRetrieveResponse>>
@Admin @Admin
@Operation(summary = "모든 예약 대기 조회", tags = ["관리자 로그인이 필요한 API"]) @Operation(summary = "모든 예약 대기 조회", tags = ["관리자 로그인이 필요한 API"])
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)) @ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
fun getAllWaiting(): ResponseEntity<CommonApiResponse<ReservationRetrieveListResponse>> fun findAllWaiting(): ResponseEntity<CommonApiResponse<ReservationRetrieveListResponse>>
@LoginRequired @LoginRequired
@Operation(summary = "예약 대기 신청", tags = ["로그인이 필요한 API"]) @Operation(summary = "예약 대기 신청", tags = ["로그인이 필요한 API"])
@ -101,7 +101,7 @@ interface ReservationAPI {
headers = [Header(name = HttpHeaders.LOCATION, description = "생성된 예약 정보 URL", schema = Schema(example = "/reservations/1"))] headers = [Header(name = HttpHeaders.LOCATION, description = "생성된 예약 정보 URL", schema = Schema(example = "/reservations/1"))]
) )
) )
fun saveWaiting( fun createWaiting(
@Valid @RequestBody waitingCreateRequest: WaitingCreateRequest, @Valid @RequestBody waitingCreateRequest: WaitingCreateRequest,
@MemberId @Parameter(hidden = true) memberId: Long, @MemberId @Parameter(hidden = true) memberId: Long,
): ResponseEntity<CommonApiResponse<ReservationRetrieveResponse>> ): ResponseEntity<CommonApiResponse<ReservationRetrieveResponse>>
@ -111,7 +111,7 @@ interface ReservationAPI {
@ApiResponses( @ApiResponses(
ApiResponse(responseCode = "204", description = "성공"), ApiResponse(responseCode = "204", description = "성공"),
) )
fun deleteWaiting( fun cancelWaitingByMember(
@MemberId @Parameter(hidden = true) memberId: Long, @MemberId @Parameter(hidden = true) memberId: Long,
@PathVariable("id") @Parameter(description = "예약 ID") reservationId: Long @PathVariable("id") @Parameter(description = "예약 ID") reservationId: Long
): ResponseEntity<CommonApiResponse<Unit>> ): ResponseEntity<CommonApiResponse<Unit>>
@ -121,7 +121,7 @@ interface ReservationAPI {
@ApiResponses( @ApiResponses(
ApiResponse(responseCode = "200", description = "성공"), ApiResponse(responseCode = "200", description = "성공"),
) )
fun approveWaiting( fun confirmWaiting(
@MemberId @Parameter(hidden = true) memberId: Long, @MemberId @Parameter(hidden = true) memberId: Long,
@PathVariable("id") @Parameter(description = "예약 ID") reservationId: Long @PathVariable("id") @Parameter(description = "예약 ID") reservationId: Long
): ResponseEntity<CommonApiResponse<Unit>> ): ResponseEntity<CommonApiResponse<Unit>>
@ -131,7 +131,7 @@ interface ReservationAPI {
@ApiResponses( @ApiResponses(
ApiResponse(responseCode = "204", description = "대기 중인 예약 거절 성공"), ApiResponse(responseCode = "204", description = "대기 중인 예약 거절 성공"),
) )
fun denyWaiting( fun rejectWaiting(
@MemberId @Parameter(hidden = true) memberId: Long, @MemberId @Parameter(hidden = true) memberId: Long,
@PathVariable("id") @Parameter(description = "예약 ID") reservationId: Long @PathVariable("id") @Parameter(description = "예약 ID") reservationId: Long
): ResponseEntity<CommonApiResponse<Unit>> ): ResponseEntity<CommonApiResponse<Unit>>

View File

@ -24,26 +24,26 @@ interface TimeAPI {
@Admin @Admin
@Operation(summary = "모든 시간 조회", tags = ["관리자 로그인이 필요한 API"]) @Operation(summary = "모든 시간 조회", tags = ["관리자 로그인이 필요한 API"])
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)) @ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
fun findAll(): ResponseEntity<CommonApiResponse<TimeRetrieveListResponse>> fun findTimes(): ResponseEntity<CommonApiResponse<TimeRetrieveListResponse>>
@Admin @Admin
@Operation(summary = "시간 추가", tags = ["관리자 로그인이 필요한 API"]) @Operation(summary = "시간 추가", tags = ["관리자 로그인이 필요한 API"])
@ApiResponses(ApiResponse(responseCode = "201", description = "성공", useReturnTypeSchema = true)) @ApiResponses(ApiResponse(responseCode = "201", description = "성공", useReturnTypeSchema = true))
fun create( fun createTime(
@Valid @RequestBody timeCreateRequest: TimeCreateRequest, @Valid @RequestBody timeCreateRequest: TimeCreateRequest,
): ResponseEntity<CommonApiResponse<TimeCreateResponse>> ): ResponseEntity<CommonApiResponse<TimeCreateResponse>>
@Admin @Admin
@Operation(summary = "시간 삭제", tags = ["관리자 로그인이 필요한 API"]) @Operation(summary = "시간 삭제", tags = ["관리자 로그인이 필요한 API"])
@ApiResponses(ApiResponse(responseCode = "204", description = "성공", useReturnTypeSchema = true)) @ApiResponses(ApiResponse(responseCode = "204", description = "성공", useReturnTypeSchema = true))
fun deleteById( fun deleteTime(
@PathVariable id: Long @PathVariable id: Long
): ResponseEntity<CommonApiResponse<Unit>> ): ResponseEntity<CommonApiResponse<Unit>>
@LoginRequired @LoginRequired
@Operation(summary = "예약 가능 여부를 포함한 모든 시간 조회", tags = ["로그인이 필요한 API"]) @Operation(summary = "예약 가능 여부를 포함한 모든 시간 조회", tags = ["로그인이 필요한 API"])
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)) @ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
fun findAllWithAvailability( fun findTimesWithAvailability(
@RequestParam date: LocalDate, @RequestParam date: LocalDate,
@RequestParam themeId: Long @RequestParam themeId: Long
): ResponseEntity<CommonApiResponse<TimeWithAvailabilityListResponse>> ): ResponseEntity<CommonApiResponse<TimeWithAvailabilityListResponse>>

View File

@ -58,5 +58,5 @@ interface ReservationRepository
ON p.reservation = r ON p.reservation = r
WHERE r.member.id = :memberId WHERE r.member.id = :memberId
""") """)
fun findMyReservations(memberId: Long): List<MyReservationRetrieveResponse> fun findAllById(memberId: Long): List<MyReservationRetrieveResponse>
} }

View File

@ -24,46 +24,50 @@ class ReservationController(
private val paymentClient: TossPaymentClient private val paymentClient: TossPaymentClient
) : ReservationAPI { ) : ReservationAPI {
@GetMapping("/reservations") @GetMapping("/reservations")
override fun getAllReservations(): ResponseEntity<CommonApiResponse<ReservationRetrieveListResponse>> { override fun findReservations(): ResponseEntity<CommonApiResponse<ReservationRetrieveListResponse>> {
val response: ReservationRetrieveListResponse = reservationService.findAllReservations() val response: ReservationRetrieveListResponse = reservationService.findReservations()
return ResponseEntity.ok(CommonApiResponse(response)) return ResponseEntity.ok(CommonApiResponse(response))
} }
@GetMapping("/reservations-mine") @GetMapping("/reservations-mine")
override fun getMemberReservations( override fun findReservationsByMemberId(
@MemberId @Parameter(hidden = true) memberId: Long @MemberId @Parameter(hidden = true) memberId: Long
): ResponseEntity<CommonApiResponse<MyReservationRetrieveListResponse>> { ): ResponseEntity<CommonApiResponse<MyReservationRetrieveListResponse>> {
val response: MyReservationRetrieveListResponse = reservationService.findMemberReservations(memberId) val response: MyReservationRetrieveListResponse = reservationService.findReservationsByMemberId(memberId)
return ResponseEntity.ok(CommonApiResponse(response)) return ResponseEntity.ok(CommonApiResponse(response))
} }
@GetMapping("/reservations/search") @GetMapping("/reservations/search")
override fun getReservationBySearching( override fun searchReservations(
@RequestParam(required = false) themeId: Long?, @RequestParam(required = false) themeId: Long?,
@RequestParam(required = false) memberId: Long?, @RequestParam(required = false) memberId: Long?,
@RequestParam(required = false) dateFrom: LocalDate?, @RequestParam(required = false) dateFrom: LocalDate?,
@RequestParam(required = false) dateTo: LocalDate? @RequestParam(required = false) dateTo: LocalDate?
): ResponseEntity<CommonApiResponse<ReservationRetrieveListResponse>> { ): ResponseEntity<CommonApiResponse<ReservationRetrieveListResponse>> {
val response: ReservationRetrieveListResponse = reservationService.findFilteredReservations(themeId, memberId, dateFrom, dateTo) val response: ReservationRetrieveListResponse = reservationService.searchReservations(
themeId,
memberId,
dateFrom,
dateTo
)
return ResponseEntity.ok(CommonApiResponse(response)) return ResponseEntity.ok(CommonApiResponse(response))
} }
@DeleteMapping("/reservations/{id}") @DeleteMapping("/reservations/{id}")
override fun removeReservation( override fun cancelReservationByAdmin(
@MemberId @Parameter(hidden = true) memberId: Long, @MemberId @Parameter(hidden = true) memberId: Long,
@PathVariable("id") reservationId: Long @PathVariable("id") reservationId: Long
): ResponseEntity<CommonApiResponse<Unit>> { ): ResponseEntity<CommonApiResponse<Unit>> {
if (reservationWithPaymentService.isNotPaidReservation(reservationId)) { if (reservationWithPaymentService.isNotPaidReservation(reservationId)) {
reservationService.removeReservationById(reservationId, memberId) reservationService.deleteReservation(reservationId, memberId)
return ResponseEntity.noContent().build() return ResponseEntity.noContent().build()
} }
val paymentCancelRequest = reservationWithPaymentService.removeReservationWithPayment( val paymentCancelRequest = reservationWithPaymentService.deleteReservationAndPayment(reservationId, memberId)
reservationId, memberId) val paymentCancelResponse = paymentClient.cancel(paymentCancelRequest)
val paymentCancelResponse = paymentClient.cancelPayment(paymentCancelRequest)
reservationWithPaymentService.updateCanceledTime(paymentCancelRequest.paymentKey, reservationWithPaymentService.updateCanceledTime(paymentCancelRequest.paymentKey,
paymentCancelResponse.canceledAt) paymentCancelResponse.canceledAt)
@ -71,15 +75,15 @@ class ReservationController(
} }
@PostMapping("/reservations") @PostMapping("/reservations")
override fun saveReservation( override fun createReservationWithPayment(
@Valid @RequestBody reservationCreateWithPaymentRequest: ReservationCreateWithPaymentRequest, @Valid @RequestBody reservationCreateWithPaymentRequest: ReservationCreateWithPaymentRequest,
@MemberId @Parameter(hidden = true) memberId: Long @MemberId @Parameter(hidden = true) memberId: Long
): ResponseEntity<CommonApiResponse<ReservationRetrieveResponse>> { ): ResponseEntity<CommonApiResponse<ReservationRetrieveResponse>> {
val paymentRequest: PaymentApproveRequest = reservationCreateWithPaymentRequest.toPaymentApproveRequest() val paymentRequest: PaymentApproveRequest = reservationCreateWithPaymentRequest.toPaymentApproveRequest()
val paymentResponse: PaymentApproveResponse = paymentClient.confirmPayment(paymentRequest) val paymentResponse: PaymentApproveResponse = paymentClient.confirm(paymentRequest)
try { try {
val reservationRetrieveResponse: ReservationRetrieveResponse = reservationWithPaymentService.addReservationWithPayment( val reservationRetrieveResponse: ReservationRetrieveResponse = reservationWithPaymentService.createReservationAndPayment(
reservationCreateWithPaymentRequest, reservationCreateWithPaymentRequest,
paymentResponse, paymentResponse,
memberId memberId
@ -89,37 +93,37 @@ class ReservationController(
} catch (e: RoomescapeException) { } catch (e: RoomescapeException) {
val cancelRequest = PaymentCancelRequest(paymentRequest.paymentKey, val cancelRequest = PaymentCancelRequest(paymentRequest.paymentKey,
paymentRequest.amount, e.message!!) paymentRequest.amount, e.message!!)
val paymentCancelResponse = paymentClient.cancelPayment(cancelRequest) val paymentCancelResponse = paymentClient.cancel(cancelRequest)
reservationWithPaymentService.saveCanceledPayment(paymentCancelResponse, paymentResponse.approvedAt, reservationWithPaymentService.createCanceledPayment(paymentCancelResponse, paymentResponse.approvedAt,
paymentRequest.paymentKey) paymentRequest.paymentKey)
throw e throw e
} }
} }
@PostMapping("/reservations/admin") @PostMapping("/reservations/admin")
override fun saveReservationByAdmin( override fun createReservationByAdmin(
@Valid @RequestBody adminReservationRequest: AdminReservationCreateRequest @Valid @RequestBody adminReservationRequest: AdminReservationCreateRequest
): ResponseEntity<CommonApiResponse<ReservationRetrieveResponse>> { ): ResponseEntity<CommonApiResponse<ReservationRetrieveResponse>> {
val response: ReservationRetrieveResponse = val response: ReservationRetrieveResponse =
reservationService.addReservationByAdmin(adminReservationRequest) reservationService.createReservationByAdmin(adminReservationRequest)
return ResponseEntity.created(URI.create("/reservations/${response.id}")) return ResponseEntity.created(URI.create("/reservations/${response.id}"))
.body(CommonApiResponse(response)) .body(CommonApiResponse(response))
} }
@GetMapping("/reservations/waiting") @GetMapping("/reservations/waiting")
override fun getAllWaiting(): ResponseEntity<CommonApiResponse<ReservationRetrieveListResponse>> { override fun findAllWaiting(): ResponseEntity<CommonApiResponse<ReservationRetrieveListResponse>> {
val response: ReservationRetrieveListResponse = reservationService.findAllWaiting() val response: ReservationRetrieveListResponse = reservationService.findAllWaiting()
return ResponseEntity.ok(CommonApiResponse(response)) return ResponseEntity.ok(CommonApiResponse(response))
} }
@PostMapping("/reservations/waiting") @PostMapping("/reservations/waiting")
override fun saveWaiting( override fun createWaiting(
@Valid @RequestBody waitingCreateRequest: WaitingCreateRequest, @Valid @RequestBody waitingCreateRequest: WaitingCreateRequest,
@MemberId @Parameter(hidden = true) memberId: Long, @MemberId @Parameter(hidden = true) memberId: Long,
): ResponseEntity<CommonApiResponse<ReservationRetrieveResponse>> { ): ResponseEntity<CommonApiResponse<ReservationRetrieveResponse>> {
val response: ReservationRetrieveResponse = reservationService.addWaiting( val response: ReservationRetrieveResponse = reservationService.createWaiting(
waitingCreateRequest, waitingCreateRequest,
memberId memberId
) )
@ -129,31 +133,31 @@ class ReservationController(
} }
@DeleteMapping("/reservations/waiting/{id}") @DeleteMapping("/reservations/waiting/{id}")
override fun deleteWaiting( override fun cancelWaitingByMember(
@MemberId @Parameter(hidden = true) memberId: Long, @MemberId @Parameter(hidden = true) memberId: Long,
@PathVariable("id") reservationId: Long @PathVariable("id") reservationId: Long
): ResponseEntity<CommonApiResponse<Unit>> { ): ResponseEntity<CommonApiResponse<Unit>> {
reservationService.cancelWaiting(reservationId, memberId) reservationService.deleteWaiting(reservationId, memberId)
return ResponseEntity.noContent().build() return ResponseEntity.noContent().build()
} }
@PostMapping("/reservations/waiting/{id}/approve") @PostMapping("/reservations/waiting/{id}/confirm")
override fun approveWaiting( override fun confirmWaiting(
@MemberId @Parameter(hidden = true) memberId: Long, @MemberId @Parameter(hidden = true) memberId: Long,
@PathVariable("id") reservationId: Long @PathVariable("id") reservationId: Long
): ResponseEntity<CommonApiResponse<Unit>> { ): ResponseEntity<CommonApiResponse<Unit>> {
reservationService.approveWaiting(reservationId, memberId) reservationService.confirmWaiting(reservationId, memberId)
return ResponseEntity.ok().build() return ResponseEntity.ok().build()
} }
@PostMapping("/reservations/waiting/{id}/deny") @PostMapping("/reservations/waiting/{id}/reject")
override fun denyWaiting( override fun rejectWaiting(
@MemberId @Parameter(hidden = true) memberId: Long, @MemberId @Parameter(hidden = true) memberId: Long,
@PathVariable("id") reservationId: Long @PathVariable("id") reservationId: Long
): ResponseEntity<CommonApiResponse<Unit>> { ): ResponseEntity<CommonApiResponse<Unit>> {
reservationService.denyWaiting(reservationId, memberId) reservationService.rejectWaiting(reservationId, memberId)
return ResponseEntity.noContent().build() return ResponseEntity.noContent().build()
} }

View File

@ -15,17 +15,17 @@ class TimeController(
) : TimeAPI { ) : TimeAPI {
@GetMapping("/times") @GetMapping("/times")
override fun findAll(): ResponseEntity<CommonApiResponse<TimeRetrieveListResponse>> { override fun findTimes(): ResponseEntity<CommonApiResponse<TimeRetrieveListResponse>> {
val response: TimeRetrieveListResponse = timeService.findAll() val response: TimeRetrieveListResponse = timeService.findTimes()
return ResponseEntity.ok(CommonApiResponse(response)) return ResponseEntity.ok(CommonApiResponse(response))
} }
@PostMapping("/times") @PostMapping("/times")
override fun create( override fun createTime(
@Valid @RequestBody timeCreateRequest: TimeCreateRequest, @Valid @RequestBody timeCreateRequest: TimeCreateRequest,
): ResponseEntity<CommonApiResponse<TimeCreateResponse>> { ): ResponseEntity<CommonApiResponse<TimeCreateResponse>> {
val response: TimeCreateResponse = timeService.create(timeCreateRequest) val response: TimeCreateResponse = timeService.createTime(timeCreateRequest)
return ResponseEntity return ResponseEntity
.created(URI.create("/times/${response.id}")) .created(URI.create("/times/${response.id}"))
@ -33,18 +33,18 @@ class TimeController(
} }
@DeleteMapping("/times/{id}") @DeleteMapping("/times/{id}")
override fun deleteById(@PathVariable id: Long): ResponseEntity<CommonApiResponse<Unit>> { override fun deleteTime(@PathVariable id: Long): ResponseEntity<CommonApiResponse<Unit>> {
timeService.deleteById(id) timeService.deleteTime(id)
return ResponseEntity.noContent().build() return ResponseEntity.noContent().build()
} }
@GetMapping("/times/filter") @GetMapping("/times/search")
override fun findAllWithAvailability( override fun findTimesWithAvailability(
@RequestParam date: LocalDate, @RequestParam date: LocalDate,
@RequestParam themeId: Long @RequestParam themeId: Long
): ResponseEntity<CommonApiResponse<TimeWithAvailabilityListResponse>> { ): ResponseEntity<CommonApiResponse<TimeWithAvailabilityListResponse>> {
val response: TimeWithAvailabilityListResponse = timeService.findAllWithAvailability(date, themeId) val response: TimeWithAvailabilityListResponse = timeService.findTimesWithAvailability(date, themeId)
return ResponseEntity.ok(CommonApiResponse(response)) return ResponseEntity.ok(CommonApiResponse(response))
} }

View File

@ -27,7 +27,7 @@ class ThemeService(
) )
@Transactional(readOnly = true) @Transactional(readOnly = true)
fun findAll(): ThemesResponse = themeRepository.findAll() fun findThemes(): ThemesResponse = themeRepository.findAll()
.toResponse() .toResponse()
@Transactional(readOnly = true) @Transactional(readOnly = true)
@ -41,7 +41,7 @@ class ThemeService(
} }
@Transactional @Transactional
fun create(request: ThemeRequest): ThemeResponse { fun createTheme(request: ThemeRequest): ThemeResponse {
if (themeRepository.existsByName(request.name)) { if (themeRepository.existsByName(request.name)) {
throw RoomescapeException( throw RoomescapeException(
ErrorType.THEME_DUPLICATED, ErrorType.THEME_DUPLICATED,
@ -60,7 +60,7 @@ class ThemeService(
} }
@Transactional @Transactional
fun deleteById(id: Long) { fun deleteTheme(id: Long) {
if (themeRepository.isReservedTheme(id)) { if (themeRepository.isReservedTheme(id)) {
throw RoomescapeException( throw RoomescapeException(
ErrorType.THEME_IS_USED_CONFLICT, ErrorType.THEME_IS_USED_CONFLICT,

View File

@ -23,7 +23,7 @@ interface ThemeAPI {
@LoginRequired @LoginRequired
@Operation(summary = "모든 테마 조회", description = "모든 테마를 조회합니다.", tags = ["로그인이 필요한 API"]) @Operation(summary = "모든 테마 조회", description = "모든 테마를 조회합니다.", tags = ["로그인이 필요한 API"])
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)) @ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
fun findAll(): ResponseEntity<CommonApiResponse<ThemesResponse>> fun findThemes(): ResponseEntity<CommonApiResponse<ThemesResponse>>
@Operation(summary = "가장 많이 예약된 테마 조회") @Operation(summary = "가장 많이 예약된 테마 조회")
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)) @ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
@ -36,7 +36,7 @@ interface ThemeAPI {
@ApiResponses( @ApiResponses(
ApiResponse(responseCode = "201", description = "성공", useReturnTypeSchema = true), ApiResponse(responseCode = "201", description = "성공", useReturnTypeSchema = true),
) )
fun create( fun createTheme(
@Valid @RequestBody request: ThemeRequest, @Valid @RequestBody request: ThemeRequest,
): ResponseEntity<CommonApiResponse<ThemeResponse>> ): ResponseEntity<CommonApiResponse<ThemeResponse>>
@ -45,7 +45,7 @@ interface ThemeAPI {
@ApiResponses( @ApiResponses(
ApiResponse(responseCode = "204", description = "성공", useReturnTypeSchema = true), ApiResponse(responseCode = "204", description = "성공", useReturnTypeSchema = true),
) )
fun deleteById( fun deleteTheme(
@PathVariable id: Long @PathVariable id: Long
): ResponseEntity<CommonApiResponse<Unit>> ): ResponseEntity<CommonApiResponse<Unit>>
} }

View File

@ -15,8 +15,8 @@ class ThemeController(
) : ThemeAPI { ) : ThemeAPI {
@GetMapping("/themes") @GetMapping("/themes")
override fun findAll(): ResponseEntity<CommonApiResponse<ThemesResponse>> { override fun findThemes(): ResponseEntity<CommonApiResponse<ThemesResponse>> {
val response: ThemesResponse = themeService.findAll() val response: ThemesResponse = themeService.findThemes()
return ResponseEntity.ok(CommonApiResponse(response)) return ResponseEntity.ok(CommonApiResponse(response))
} }
@ -31,20 +31,20 @@ class ThemeController(
} }
@PostMapping("/themes") @PostMapping("/themes")
override fun create( override fun createTheme(
@RequestBody @Valid request: ThemeRequest @RequestBody @Valid request: ThemeRequest
): ResponseEntity<CommonApiResponse<ThemeResponse>> { ): ResponseEntity<CommonApiResponse<ThemeResponse>> {
val themeResponse: ThemeResponse = themeService.create(request) val themeResponse: ThemeResponse = themeService.createTheme(request)
return ResponseEntity.created(URI.create("/themes/${themeResponse.id}")) return ResponseEntity.created(URI.create("/themes/${themeResponse.id}"))
.body(CommonApiResponse(themeResponse)) .body(CommonApiResponse(themeResponse))
} }
@DeleteMapping("/themes/{id}") @DeleteMapping("/themes/{id}")
override fun deleteById( override fun deleteTheme(
@PathVariable id: Long @PathVariable id: Long
): ResponseEntity<CommonApiResponse<Unit>> { ): ResponseEntity<CommonApiResponse<Unit>> {
themeService.deleteById(id) themeService.deleteTheme(id)
return ResponseEntity.noContent().build() return ResponseEntity.noContent().build()
} }

View File

@ -97,7 +97,7 @@ function checkDateAndTheme() {
function fetchAvailableTimes(date, themeId) { function fetchAvailableTimes(date, themeId) {
fetch(`/times/filter?date=${date}&themeId=${themeId}`, { // 예약 가능 시간 조회 API endpoint fetch(`/times/search?date=${date}&themeId=${themeId}`, { // 예약 가능 시간 조회 API endpoint
method: 'GET', method: 'GET',
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',

View File

@ -38,7 +38,7 @@ function approve(event) {
const row = event.target.closest('tr'); const row = event.target.closest('tr');
const id = row.cells[0].textContent; const id = row.cells[0].textContent;
const endpoint = `/reservations/waiting/${id}/approve` const endpoint = `/reservations/waiting/${id}/confirm`
return fetch(endpoint, { return fetch(endpoint, {
method: 'POST' method: 'POST'
}).then(response => { }).then(response => {
@ -51,7 +51,7 @@ function deny(event) {
const row = event.target.closest('tr'); const row = event.target.closest('tr');
const id = row.cells[0].textContent; const id = row.cells[0].textContent;
const endpoint = `/reservations/waiting/${id}/deny` const endpoint = `/reservations/waiting/${id}/reject`
return fetch(endpoint, { return fetch(endpoint, {
method: 'POST' method: 'POST'
}).then(response => { }).then(response => {

View File

@ -47,7 +47,7 @@ class TossPaymentClientTest(
// when // when
val paymentRequest = SampleTossPaymentConst.paymentRequest val paymentRequest = SampleTossPaymentConst.paymentRequest
val paymentResponse: PaymentApproveResponse = client.confirmPayment(paymentRequest) val paymentResponse: PaymentApproveResponse = client.confirm(paymentRequest)
assertSoftly(paymentResponse) { assertSoftly(paymentResponse) {
this.paymentKey shouldBe paymentRequest.paymentKey this.paymentKey shouldBe paymentRequest.paymentKey
@ -69,7 +69,7 @@ class TossPaymentClientTest(
// then // then
val exception = shouldThrow<RoomescapeException> { val exception = shouldThrow<RoomescapeException> {
client.confirmPayment(paymentRequest) client.confirm(paymentRequest)
} }
assertSoftly(exception) { assertSoftly(exception) {
@ -102,7 +102,7 @@ class TossPaymentClientTest(
// when // when
val cancelRequest: PaymentCancelRequest = SampleTossPaymentConst.cancelRequest val cancelRequest: PaymentCancelRequest = SampleTossPaymentConst.cancelRequest
val cancelResponse: PaymentCancelResponse = client.cancelPayment(cancelRequest) val cancelResponse: PaymentCancelResponse = client.cancel(cancelRequest)
assertSoftly(cancelResponse) { assertSoftly(cancelResponse) {
this.cancelStatus shouldBe "DONE" this.cancelStatus shouldBe "DONE"
@ -124,7 +124,7 @@ class TossPaymentClientTest(
// then // then
val exception = shouldThrow<RoomescapeException> { val exception = shouldThrow<RoomescapeException> {
client.cancelPayment(cancelRequest) client.cancel(cancelRequest)
} }
assertSoftly(exception) { assertSoftly(exception) {

View File

@ -113,7 +113,7 @@ class ReservationServiceTest : FunSpec({
themeId = reservationRequest.themeId, themeId = reservationRequest.themeId,
timeId = reservationRequest.timeId timeId = reservationRequest.timeId
) )
reservationService.addWaiting(waitingRequest, 1L) reservationService.createWaiting(waitingRequest, 1L)
}.also { }.also {
it.errorType shouldBe ErrorType.HAS_RESERVATION_OR_WAITING it.errorType shouldBe ErrorType.HAS_RESERVATION_OR_WAITING
} }
@ -126,7 +126,7 @@ class ReservationServiceTest : FunSpec({
val endAt = startFrom.minusDays(1) val endAt = startFrom.minusDays(1)
shouldThrow<RoomescapeException> { shouldThrow<RoomescapeException> {
reservationService.findFilteredReservations( reservationService.searchReservations(
null, null,
null, null,
startFrom, startFrom,
@ -147,7 +147,7 @@ class ReservationServiceTest : FunSpec({
} returns member } returns member
shouldThrow<RoomescapeException> { shouldThrow<RoomescapeException> {
reservationService.approveWaiting(1L, member.id!!) reservationService.confirmWaiting(1L, member.id!!)
}.also { }.also {
it.errorType shouldBe ErrorType.PERMISSION_DOES_NOT_EXIST it.errorType shouldBe ErrorType.PERMISSION_DOES_NOT_EXIST
} }
@ -166,7 +166,7 @@ class ReservationServiceTest : FunSpec({
} returns true } returns true
shouldThrow<RoomescapeException> { shouldThrow<RoomescapeException> {
reservationService.approveWaiting(reservationId, member.id!!) reservationService.confirmWaiting(reservationId, member.id!!)
}.also { }.also {
it.errorType shouldBe ErrorType.RESERVATION_DUPLICATED it.errorType shouldBe ErrorType.RESERVATION_DUPLICATED
} }

View File

@ -55,7 +55,7 @@ class ReservationWithPaymentServiceTest : FunSpec({
paymentService.createPayment(paymentApproveResponse, reservationEntity) paymentService.createPayment(paymentApproveResponse, reservationEntity)
} returns paymentEntity.toCreateResponse() } returns paymentEntity.toCreateResponse()
val result: ReservationRetrieveResponse = reservationWithPaymentService.addReservationWithPayment( val result: ReservationRetrieveResponse = reservationWithPaymentService.createReservationAndPayment(
request = reservationCreateWithPaymentRequest, request = reservationCreateWithPaymentRequest,
paymentInfo = paymentApproveResponse, paymentInfo = paymentApproveResponse,
memberId = memberId memberId = memberId
@ -85,10 +85,10 @@ class ReservationWithPaymentServiceTest : FunSpec({
} returns paymentCancelRequest } returns paymentCancelRequest
every { every {
reservationService.removeReservationById(reservationEntity.id!!, reservationEntity.member.id!!) reservationService.deleteReservation(reservationEntity.id!!, reservationEntity.member.id!!)
} just Runs } just Runs
val result: PaymentCancelRequest = reservationWithPaymentService.removeReservationWithPayment( val result: PaymentCancelRequest = reservationWithPaymentService.deleteReservationAndPayment(
reservationId = reservationEntity.id!!, reservationId = reservationEntity.id!!,
memberId = reservationEntity.member.id!! memberId = reservationEntity.member.id!!
) )

View File

@ -46,7 +46,7 @@ class TimeServiceTest : FunSpec({
every { timeRepository.existsByStartAt(request.startAt) } returns true every { timeRepository.existsByStartAt(request.startAt) } returns true
shouldThrow<RoomescapeException> { shouldThrow<RoomescapeException> {
timeService.create(request) timeService.createTime(request)
}.apply { }.apply {
errorType shouldBe ErrorType.TIME_DUPLICATED errorType shouldBe ErrorType.TIME_DUPLICATED
httpStatus shouldBe HttpStatus.CONFLICT httpStatus shouldBe HttpStatus.CONFLICT
@ -61,7 +61,7 @@ class TimeServiceTest : FunSpec({
every { timeRepository.findByIdOrNull(id) } returns null every { timeRepository.findByIdOrNull(id) } returns null
shouldThrow<RoomescapeException> { shouldThrow<RoomescapeException> {
timeService.deleteById(id) timeService.deleteTime(id)
}.apply { }.apply {
errorType shouldBe ErrorType.TIME_NOT_FOUND errorType shouldBe ErrorType.TIME_NOT_FOUND
httpStatus shouldBe HttpStatus.BAD_REQUEST httpStatus shouldBe HttpStatus.BAD_REQUEST
@ -77,7 +77,7 @@ class TimeServiceTest : FunSpec({
every { reservationRepository.findByTime(time) } returns listOf(mockk()) every { reservationRepository.findByTime(time) } returns listOf(mockk())
shouldThrow<RoomescapeException> { shouldThrow<RoomescapeException> {
timeService.deleteById(id) timeService.deleteTime(id)
}.apply { }.apply {
errorType shouldBe ErrorType.TIME_IS_USED_CONFLICT errorType shouldBe ErrorType.TIME_IS_USED_CONFLICT
httpStatus shouldBe HttpStatus.CONFLICT httpStatus shouldBe HttpStatus.CONFLICT

View File

@ -168,7 +168,7 @@ class ReservationRepositoryTest(
entityManager.clear() entityManager.clear()
} }
val result: List<MyReservationRetrieveResponse> = reservationRepository.findMyReservations(reservation.member.id!!) val result: List<MyReservationRetrieveResponse> = reservationRepository.findAllById(reservation.member.id!!)
result shouldHaveSize 1 result shouldHaveSize 1
assertSoftly(result.first()) { assertSoftly(result.first()) {
@ -179,7 +179,7 @@ class ReservationRepositoryTest(
} }
test("결제 정보가 없다면 paymentKey와 amount는 null로 반환한다.") { test("결제 정보가 없다면 paymentKey와 amount는 null로 반환한다.") {
val result: List<MyReservationRetrieveResponse> = reservationRepository.findMyReservations(reservation.member.id!!) val result: List<MyReservationRetrieveResponse> = reservationRepository.findAllById(reservation.member.id!!)
result shouldHaveSize 1 result shouldHaveSize 1
assertSoftly(result.first()) { assertSoftly(result.first()) {

View File

@ -70,7 +70,7 @@ class ReservationControllerTest(
) )
every { every {
paymentClient.confirmPayment(any()) paymentClient.confirm(any())
} returns paymentApproveResponse } returns paymentApproveResponse
Given { Given {
@ -94,7 +94,7 @@ class ReservationControllerTest(
) )
every { every {
paymentClient.confirmPayment(any()) paymentClient.confirm(any())
} throws paymentException } throws paymentException
Given { Given {
@ -118,7 +118,7 @@ class ReservationControllerTest(
) )
every { every {
paymentClient.confirmPayment(any()) paymentClient.confirm(any())
} returns paymentApproveResponse } returns paymentApproveResponse
// 예약 저장 과정에서 테마가 없는 예외 // 예약 저장 과정에서 테마가 없는 예외
@ -126,7 +126,7 @@ class ReservationControllerTest(
val expectedException = RoomescapeException(ErrorType.THEME_NOT_FOUND, HttpStatus.BAD_REQUEST) val expectedException = RoomescapeException(ErrorType.THEME_NOT_FOUND, HttpStatus.BAD_REQUEST)
every { every {
paymentClient.cancelPayment(any()) paymentClient.cancel(any())
} returns PaymentFixture.createCancelResponse() } returns PaymentFixture.createCancelResponse()
val canceledPaymentSizeBeforeApiCall: Long = entityManager.createQuery( val canceledPaymentSizeBeforeApiCall: Long = entityManager.createQuery(
@ -367,7 +367,7 @@ class ReservationControllerTest(
} }
every { every {
paymentClient.cancelPayment(any()) paymentClient.cancel(any())
} returns PaymentFixture.createCancelResponse() } returns PaymentFixture.createCancelResponse()
val canceledPaymentSizeBeforeApiCall: Long = entityManager.createQuery( val canceledPaymentSizeBeforeApiCall: Long = entityManager.createQuery(
@ -561,14 +561,14 @@ class ReservationControllerTest(
} }
} }
context("POST /reservations/waiting/{id}/approve") { context("POST /reservations/waiting/{id}/confirm") {
test("관리자만 승인할 수 있다.") { test("관리자만 승인할 수 있다.") {
login(MemberFixture.create(role = Role.MEMBER)) login(MemberFixture.create(role = Role.MEMBER))
Given { Given {
port(port) port(port)
}.When { }.When {
post("/reservations/waiting/1/approve") post("/reservations/waiting/1/confirm")
}.Then { }.Then {
statusCode(302) statusCode(302)
header(HttpHeaders.LOCATION, containsString("/login")) header(HttpHeaders.LOCATION, containsString("/login"))
@ -585,7 +585,7 @@ class ReservationControllerTest(
Given { Given {
port(port) port(port)
}.When { }.When {
post("/reservations/waiting/${reservation.id!!}/approve") post("/reservations/waiting/${reservation.id!!}/confirm")
}.Then { }.Then {
statusCode(200) statusCode(200)
} }
@ -601,14 +601,14 @@ class ReservationControllerTest(
} }
} }
context("POST /reservations/waiting/{id}/deny") { context("POST /reservations/waiting/{id}/reject") {
test("관리자만 거절할 수 있다.") { test("관리자만 거절할 수 있다.") {
login(MemberFixture.create(role = Role.MEMBER)) login(MemberFixture.create(role = Role.MEMBER))
Given { Given {
port(port) port(port)
}.When { }.When {
post("/reservations/waiting/1/deny") post("/reservations/waiting/1/reject")
}.Then { }.Then {
statusCode(302) statusCode(302)
header(HttpHeaders.LOCATION, containsString("/login")) header(HttpHeaders.LOCATION, containsString("/login"))
@ -625,7 +625,7 @@ class ReservationControllerTest(
Given { Given {
port(port) port(port)
}.When { }.When {
post("/reservations/waiting/${reservation.id!!}/deny") post("/reservations/waiting/${reservation.id!!}/reject")
}.Then { }.Then {
statusCode(204) statusCode(204)
} }

View File

@ -112,7 +112,7 @@ class TimeControllerTest(
Then("정상 응답") { Then("정상 응답") {
every { every {
timeService.create(request) timeService.createTime(request)
} returns TimeCreateResponse(id = 1, startAt = time) } returns TimeCreateResponse(id = 1, startAt = time)
runPostTest( runPostTest(
@ -174,7 +174,7 @@ class TimeControllerTest(
Then("정상 응답") { Then("정상 응답") {
every { every {
timeService.deleteById(1L) timeService.deleteTime(1L)
} returns Unit } returns Unit
runDeleteTest( runDeleteTest(
@ -272,7 +272,7 @@ class TimeControllerTest(
val response = runGetTest( val response = runGetTest(
mockMvc = mockMvc, mockMvc = mockMvc,
endpoint = "/times/filter?date=$date&themeId=$themeId", endpoint = "/times/search?date=$date&themeId=$themeId",
) { ) {
status { isOk() } status { isOk() }
content { content {

View File

@ -51,7 +51,7 @@ class ThemeServiceTest : FunSpec({
themeRepository.findAll() themeRepository.findAll()
} returns themes } returns themes
assertSoftly(themeService.findAll()) { assertSoftly(themeService.findThemes()) {
this.themes.size shouldBe themes.size this.themes.size shouldBe themes.size
this.themes[0].name shouldBe "t1" this.themes[0].name shouldBe "t1"
this.themes[1].name shouldBe "t2" this.themes[1].name shouldBe "t2"
@ -68,7 +68,7 @@ class ThemeServiceTest : FunSpec({
} returns true } returns true
val exception = shouldThrow<RoomescapeException> { val exception = shouldThrow<RoomescapeException> {
themeService.create(ThemeRequest( themeService.createTheme(ThemeRequest(
name = name, name = name,
description = "Description", description = "Description",
thumbnail = "http://example.com/thumbnail.jpg" thumbnail = "http://example.com/thumbnail.jpg"
@ -91,7 +91,7 @@ class ThemeServiceTest : FunSpec({
} returns true } returns true
val exception = shouldThrow<RoomescapeException> { val exception = shouldThrow<RoomescapeException> {
themeService.deleteById(themeId) themeService.deleteTheme(themeId)
} }
assertSoftly(exception) { assertSoftly(exception) {

View File

@ -195,7 +195,7 @@ class ThemeControllerTest(mockMvc: MockMvc) : RoomescapeApiTest() {
) )
every { every {
themeService.create(request) themeService.createTheme(request)
} returns ThemeResponse( } returns ThemeResponse(
id = theme.id!!, id = theme.id!!,
name = theme.name, name = theme.name,