Skip to content
This repository has been archived by the owner on Jan 15, 2024. It is now read-only.

Commit

Permalink
Merge pull request #127 from Mini-Team-6/feature/#126-reservation-paging
Browse files Browse the repository at this point in the history
Feature/#126 reservation paging
  • Loading branch information
laigasus authored Dec 15, 2023
2 parents 8f6f5e6 + c6f409b commit 57f3add
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.HttpStatus;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
Expand All @@ -17,6 +19,7 @@

import java.util.List;

import static org.springframework.data.domain.Sort.Direction.DESC;
import static ybe.mini.travelserver.global.security.Role.HAS_ROLE_USER;

@Slf4j
Expand Down Expand Up @@ -54,11 +57,13 @@ public ResponseDto<ReservationCreateResponse> tryReservationFromCart(
@PreAuthorize(HAS_ROLE_USER)
@GetMapping
public ResponseDto<List<ReservationGetResponse>> getMyReservations(
@AuthenticationPrincipal PrincipalDetails principalDetails
@AuthenticationPrincipal PrincipalDetails principalDetails,
@PageableDefault(size = 3, sort = "id", direction = DESC) Pageable pageable
) {

return new ResponseDto<>(
HttpStatus.OK.value(),
reservationService.getMyReservations(principalDetails.getMemberId())
reservationService.getMyReservations(principalDetails.getMemberId(), pageable)
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,17 @@

@Builder
public record ReservationGetResponse(

Long id,
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm")
LocalDateTime createdAt,
PaymentType paymentType,
List<ReservationRoomGetResponse> reservationRooms
List<ReservationRoomGetResponse> reservationRooms,
Integer totalPage

) implements Serializable {

public static ReservationGetResponse fromEntity(Reservation reservation) {
public static ReservationGetResponse fromEntity(Reservation reservation, Integer totalPage) {
return ReservationGetResponse.builder()
.id(reservation.getId())
.reservationRooms(
Expand All @@ -32,6 +34,7 @@ public static ReservationGetResponse fromEntity(Reservation reservation) {
)
.createdAt(reservation.getCreatedAt())
.paymentType(reservation.getPaymentType())
.totalPage(totalPage)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package ybe.mini.travelserver.domain.reservation.repository;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import ybe.mini.travelserver.domain.reservation.entity.Reservation;

import java.util.List;

public interface ReservationRepository extends JpaRepository<Reservation, Long> {

List<Reservation> findAllByMemberId(Long memberId);
Page<Reservation> findAllByMemberId(Long memberId, Pageable pageable);

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ybe.mini.travelserver.domain.accommodation.entity.Accommodation;
Expand Down Expand Up @@ -94,9 +96,12 @@ public ReservationCreateResponse createReservationAndDeleteCart(
}

@Transactional(readOnly = true)
public List<ReservationGetResponse> getMyReservations(Long memberId) {
return reservationRepository.findAllByMemberId(memberId).stream()
.map(ReservationGetResponse::fromEntity).toList();
public List<ReservationGetResponse> getMyReservations(Long memberId, Pageable pageable) {
Page<Reservation> reservations = reservationRepository.findAllByMemberId(memberId, pageable);
int totalPage = reservations.getTotalPages();

return reservations.stream()
.map(reservation -> ReservationGetResponse.fromEntity(reservation, totalPage)).toList();
}

@Transactional
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import ybe.mini.travelserver.domain.member.dummy.DummyPrincipal;
import ybe.mini.travelserver.domain.reservation.dto.ReservationCreateRequest;
import ybe.mini.travelserver.domain.reservation.dummy.DummyReservationDTO;
Expand Down Expand Up @@ -56,17 +58,18 @@ void tryReservation_success() {
@DisplayName("예약 조회 테스트")
void getMyReservations_success() {
//given
given(reservationService.getMyReservations(any()))
given(reservationService.getMyReservations(any(), any()))
.willReturn(List.of(dummyReservationGetRes()));

//when
var actual = reservationController.getMyReservations(dummyPrincipalDetails());
Pageable pageable = PageRequest.of(0,6);
var actual = reservationController.getMyReservations(dummyPrincipalDetails(), pageable);

//then
var expected = new ResponseDto<>(OK.value(), List.of(dummyReservationGetRes()));
Javers javers = JaversBuilder.javers().build();
assertFalse(javers.compare(actual, expected).hasChanges());
then(reservationService).should().getMyReservations(any());
then(reservationService).should().getMyReservations(any(), any());
}


Expand Down

0 comments on commit 57f3add

Please sign in to comment.