diff --git a/src/docs/asciidoc/api/album/waiting.adoc b/src/docs/asciidoc/api/album/waiting.adoc deleted file mode 100644 index 7b3afde4..00000000 --- a/src/docs/asciidoc/api/album/waiting.adoc +++ /dev/null @@ -1,12 +0,0 @@ -[[waiting-create]] -=== 웨이팅 등록 - -==== HTTP Request - -include::{snippets}/waiting-create/http-request.adoc[] -include::{snippets}/waiting-create/request-fields.adoc[] - -==== HTTP Response - -include::{snippets}/waiting-create/http-response.adoc[] -include::{snippets}/waiting-create/response-fields.adoc[] \ No newline at end of file diff --git a/src/docs/asciidoc/api/waiting/waiting.adoc b/src/docs/asciidoc/api/waiting/waiting.adoc new file mode 100644 index 00000000..309f4425 --- /dev/null +++ b/src/docs/asciidoc/api/waiting/waiting.adoc @@ -0,0 +1,12 @@ +[[waiting-create]] +=== 웨이팅 등록 + +==== HTTP Request + +include::{snippets}/member-waiting-controller-docs-test/create-waiting/http-request.adoc[] +include::{snippets}/member-waiting-controller-docs-test/create-waiting/request-fields.adoc[] + +==== HTTP Response + +include::{snippets}/member-waiting-controller-docs-test/create-waiting/http-response.adoc[] +include::{snippets}/member-waiting-controller-docs-test/create-waiting/response-fields.adoc[] \ No newline at end of file diff --git a/src/docs/asciidoc/index.adoc b/src/docs/asciidoc/index.adoc index 160506fc..63a41be5 100644 --- a/src/docs/asciidoc/index.adoc +++ b/src/docs/asciidoc/index.adoc @@ -12,4 +12,4 @@ endif::[] [[CatchTable-API]] == Waiting API -include::api/album/waiting.adoc[] \ No newline at end of file +include::api/waiting/waiting.adoc[] \ No newline at end of file diff --git a/src/main/java/com/prgrms/catchtable/waiting/controller/MemberWaitingController.java b/src/main/java/com/prgrms/catchtable/waiting/controller/MemberWaitingController.java index 7e757e41..4f844d04 100644 --- a/src/main/java/com/prgrms/catchtable/waiting/controller/MemberWaitingController.java +++ b/src/main/java/com/prgrms/catchtable/waiting/controller/MemberWaitingController.java @@ -1,5 +1,7 @@ package com.prgrms.catchtable.waiting.controller; +import com.prgrms.catchtable.common.login.LogIn; +import com.prgrms.catchtable.member.domain.Member; import com.prgrms.catchtable.waiting.dto.request.CreateWaitingRequest; import com.prgrms.catchtable.waiting.dto.response.MemberWaitingHistoryListResponse; import com.prgrms.catchtable.waiting.dto.response.MemberWaitingResponse; @@ -23,41 +25,41 @@ public class MemberWaitingController { private final MemberWaitingService memberWaitingService; - @PostMapping("/{shopId}/{memberId}") + @PostMapping("/{shopId}") public ResponseEntity createWaiting(@PathVariable("shopId") Long shopId, - @PathVariable("memberId") Long memberId, + @LogIn Member member, @Valid @RequestBody CreateWaitingRequest request) { - MemberWaitingResponse response = memberWaitingService.createWaiting(shopId, memberId, + MemberWaitingResponse response = memberWaitingService.createWaiting(shopId, member, request); return ResponseEntity.ok(response); } - @PatchMapping("/{memberId}") + @PatchMapping public ResponseEntity postponeWaiting( - @PathVariable("memberId") Long memberId) { - MemberWaitingResponse response = memberWaitingService.postponeWaiting(memberId); + @LogIn Member member) { + MemberWaitingResponse response = memberWaitingService.postponeWaiting(member); return ResponseEntity.ok(response); } - @DeleteMapping("/{memberId}") + @DeleteMapping public ResponseEntity cancelWaiting( - @PathVariable("memberId") Long memberId) { - MemberWaitingResponse response = memberWaitingService.cancelWaiting(memberId); + @LogIn Member member) { + MemberWaitingResponse response = memberWaitingService.cancelWaiting(member); return ResponseEntity.ok(response); } - @GetMapping("/{memberId}") + @GetMapping public ResponseEntity getWaiting( - @PathVariable("memberId") Long memberId) { - MemberWaitingResponse response = memberWaitingService.getWaiting(memberId); + @LogIn Member member) { + MemberWaitingResponse response = memberWaitingService.getWaiting(member); return ResponseEntity.ok(response); } - @GetMapping("/all/{memberId}") + @GetMapping("/all") public ResponseEntity getMemberWaitingHistory( - @PathVariable("memberId") Long memberId) { + @LogIn Member member) { MemberWaitingHistoryListResponse response = memberWaitingService.getMemberWaitingHistory( - memberId); + member); return ResponseEntity.ok(response); } } diff --git a/src/main/java/com/prgrms/catchtable/waiting/controller/OwnerWaitingController.java b/src/main/java/com/prgrms/catchtable/waiting/controller/OwnerWaitingController.java index ee3fbfec..24d90864 100644 --- a/src/main/java/com/prgrms/catchtable/waiting/controller/OwnerWaitingController.java +++ b/src/main/java/com/prgrms/catchtable/waiting/controller/OwnerWaitingController.java @@ -1,5 +1,7 @@ package com.prgrms.catchtable.waiting.controller; +import com.prgrms.catchtable.common.login.LogIn; +import com.prgrms.catchtable.owner.domain.Owner; import com.prgrms.catchtable.waiting.dto.response.OwnerWaitingListResponse; import com.prgrms.catchtable.waiting.dto.response.OwnerWaitingResponse; import com.prgrms.catchtable.waiting.service.OwnerWaitingService; @@ -7,7 +9,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PatchMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -18,17 +19,17 @@ public class OwnerWaitingController { private final OwnerWaitingService ownerWaitingService; - @GetMapping("/{ownerId}") + @GetMapping public ResponseEntity getOwnerAllWaiting( - @PathVariable("ownerId") Long ownerId) { - OwnerWaitingListResponse response = ownerWaitingService.getOwnerAllWaiting(ownerId); + @LogIn Owner owner) { + OwnerWaitingListResponse response = ownerWaitingService.getOwnerAllWaiting(owner); return ResponseEntity.ok(response); } - @PatchMapping("/{ownerId}") + @PatchMapping public ResponseEntity entryWaiting( - @PathVariable("ownerId") Long ownerId) { - OwnerWaitingResponse response = ownerWaitingService.entryWaiting(ownerId); + @LogIn Owner owner) { + OwnerWaitingResponse response = ownerWaitingService.entryWaiting(owner); return ResponseEntity.ok(response); } } diff --git a/src/main/java/com/prgrms/catchtable/waiting/domain/Waiting.java b/src/main/java/com/prgrms/catchtable/waiting/domain/Waiting.java index e6e4fe70..69a96e14 100644 --- a/src/main/java/com/prgrms/catchtable/waiting/domain/Waiting.java +++ b/src/main/java/com/prgrms/catchtable/waiting/domain/Waiting.java @@ -68,7 +68,7 @@ public Waiting(int waitingNumber, int peopleCount, Member member, Shop shop) { } public void decreasePostponeRemainingCount() { - if (remainingPostponeCount <= 0) { + if (remainingPostponeCount == 0) { throw new BadRequestCustomException(POSTPONE_REMAINING_CNT_0); } remainingPostponeCount--; diff --git a/src/main/java/com/prgrms/catchtable/waiting/dto/WaitingMapper.java b/src/main/java/com/prgrms/catchtable/waiting/dto/WaitingMapper.java index 5620f06d..b241f5bb 100644 --- a/src/main/java/com/prgrms/catchtable/waiting/dto/WaitingMapper.java +++ b/src/main/java/com/prgrms/catchtable/waiting/dto/WaitingMapper.java @@ -11,8 +11,8 @@ import com.prgrms.catchtable.waiting.dto.response.MemberWaitingResponse; import com.prgrms.catchtable.waiting.dto.response.OwnerWaitingListResponse; import com.prgrms.catchtable.waiting.dto.response.OwnerWaitingResponse; -import java.util.ArrayList; import java.util.List; +import java.util.concurrent.atomic.AtomicLong; import lombok.NoArgsConstructor; @NoArgsConstructor(access = PRIVATE) @@ -55,11 +55,9 @@ public static MemberWaitingHistoryResponse toMemberWaitingHistoryResponse(Waitin public static MemberWaitingHistoryListResponse toMemberWaitingListResponse( List waitings) { - List list = new ArrayList<>(); - for (Waiting waiting : waitings) { - list.add(toMemberWaitingHistoryResponse(waiting)); - } - return new MemberWaitingHistoryListResponse(list); + return new MemberWaitingHistoryListResponse(waitings.stream() + .map(WaitingMapper::toMemberWaitingHistoryResponse) + .toList()); } public static OwnerWaitingResponse toOwnerWaitingResponse(Waiting waiting, Long rank) { @@ -72,11 +70,11 @@ public static OwnerWaitingResponse toOwnerWaitingResponse(Waiting waiting, Long } public static OwnerWaitingListResponse toOwnerWaitingListResponse(List waitings) { - long rank = 1L; - List list = new ArrayList<>(); - for (Waiting waiting : waitings) { - list.add(toOwnerWaitingResponse(waiting, rank++)); - } - return new OwnerWaitingListResponse(list); + AtomicLong rank = new AtomicLong(1); + return new OwnerWaitingListResponse( + waitings.stream() + .map(waiting -> toOwnerWaitingResponse(waiting, rank.getAndIncrement())) + .toList() + ); } } diff --git a/src/main/java/com/prgrms/catchtable/waiting/repository/WaitingRepository.java b/src/main/java/com/prgrms/catchtable/waiting/repository/WaitingRepository.java index db1c814b..e1d72c76 100644 --- a/src/main/java/com/prgrms/catchtable/waiting/repository/WaitingRepository.java +++ b/src/main/java/com/prgrms/catchtable/waiting/repository/WaitingRepository.java @@ -8,8 +8,10 @@ import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import org.springframework.transaction.annotation.Transactional; public interface WaitingRepository extends JpaRepository { @@ -29,4 +31,10 @@ Optional findByMemberAndStatusWithShop(@Param("member") Member member, + "join fetch w.shop " + "join fetch w.member where w.member = :member") List findWaitingWithMember(@Param("member") Member member); + + @Transactional + @Modifying(clearAutomatically = true) + @Query("update Waiting w set w.status = :newStatus where w.status = :currentStatus") + void updateWaitingStatus(@Param("newStatus") WaitingStatus newStatus, + @Param("currentStatus") WaitingStatus currentStatus); } diff --git a/src/main/java/com/prgrms/catchtable/waiting/schedular/WaitingScheduler.java b/src/main/java/com/prgrms/catchtable/waiting/schedular/WaitingScheduler.java new file mode 100644 index 00000000..ba4ccc51 --- /dev/null +++ b/src/main/java/com/prgrms/catchtable/waiting/schedular/WaitingScheduler.java @@ -0,0 +1,37 @@ +package com.prgrms.catchtable.waiting.schedular; + +import static com.prgrms.catchtable.waiting.domain.WaitingStatus.CANCELED; +import static com.prgrms.catchtable.waiting.domain.WaitingStatus.PROGRESS; + +import com.prgrms.catchtable.waiting.repository.WaitingRepository; +import java.util.Set; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +@EnableScheduling +@RequiredArgsConstructor +public class WaitingScheduler { + + private final StringRedisTemplate redisTemplate; + + private final WaitingRepository waitingRepository; + + //매일 자정 레디스 데이터 비우기 + @Scheduled(cron = "0 0 0 * * *", zone = "Asia/Seoul") + public void clearRedis() { + Set keys = redisTemplate.keys("s*"); + redisTemplate.delete(keys); + } + + //매일 자정 대기 상태 바꾸기 + @Scheduled(cron = "0 0 0 * * *", zone = "Asia/Seoul") + public void changeProgressStatus() { + waitingRepository.updateWaitingStatus(CANCELED, PROGRESS); + } +} diff --git a/src/main/java/com/prgrms/catchtable/waiting/service/MemberWaitingService.java b/src/main/java/com/prgrms/catchtable/waiting/service/MemberWaitingService.java index b740f60b..c7286637 100644 --- a/src/main/java/com/prgrms/catchtable/waiting/service/MemberWaitingService.java +++ b/src/main/java/com/prgrms/catchtable/waiting/service/MemberWaitingService.java @@ -1,7 +1,6 @@ package com.prgrms.catchtable.waiting.service; import static com.prgrms.catchtable.common.exception.ErrorCode.EXISTING_MEMBER_WAITING; -import static com.prgrms.catchtable.common.exception.ErrorCode.NOT_EXIST_MEMBER; import static com.prgrms.catchtable.common.exception.ErrorCode.NOT_EXIST_PROGRESS_WAITING; import static com.prgrms.catchtable.common.exception.ErrorCode.NOT_EXIST_SHOP; import static com.prgrms.catchtable.waiting.domain.WaitingStatus.PROGRESS; @@ -12,7 +11,6 @@ import com.prgrms.catchtable.common.exception.custom.BadRequestCustomException; import com.prgrms.catchtable.common.exception.custom.NotFoundCustomException; import com.prgrms.catchtable.member.domain.Member; -import com.prgrms.catchtable.member.repository.MemberRepository; import com.prgrms.catchtable.shop.domain.Shop; import com.prgrms.catchtable.shop.repository.ShopRepository; import com.prgrms.catchtable.waiting.domain.Waiting; @@ -38,14 +36,12 @@ public class MemberWaitingService { private final LocalDateTime END_DATE_TIME = LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59)); private final WaitingRepository waitingRepository; - private final MemberRepository memberRepository; private final ShopRepository shopRepository; private final WaitingLineRepository waitingLineRepository; - public MemberWaitingResponse createWaiting(Long shopId, Long memberId, + public MemberWaitingResponse createWaiting(Long shopId, Member member, CreateWaitingRequest request) { // 연관 엔티티 조회 - Member member = getMemberEntity(memberId); Shop shop = getShopEntity(shopId); // 기존 waiting이 있는지 검증 @@ -66,8 +62,7 @@ public MemberWaitingResponse createWaiting(Long shopId, Long memberId, } @Transactional - public MemberWaitingResponse postponeWaiting(Long memberId) { - Member member = getMemberEntity(memberId); + public MemberWaitingResponse postponeWaiting(Member member) { Waiting waiting = getWaitingEntityInProgress(member); Shop shop = waiting.getShop(); @@ -80,8 +75,7 @@ public MemberWaitingResponse postponeWaiting(Long memberId) { } @Transactional - public MemberWaitingResponse cancelWaiting(Long memberId) { - Member member = getMemberEntity(memberId); + public MemberWaitingResponse cancelWaiting(Member member) { Waiting waiting = getWaitingEntityInProgress(member); Shop shop = waiting.getShop(); @@ -92,8 +86,7 @@ public MemberWaitingResponse cancelWaiting(Long memberId) { } @Transactional(readOnly = true) - public MemberWaitingResponse getWaiting(Long memberId) { - Member member = getMemberEntity(memberId); + public MemberWaitingResponse getWaiting(Member member) { Waiting waiting = getWaitingEntityInProgress(member); Shop shop = waiting.getShop(); @@ -103,8 +96,7 @@ public MemberWaitingResponse getWaiting(Long memberId) { } @Transactional(readOnly = true) - public MemberWaitingHistoryListResponse getMemberWaitingHistory(Long memberId) { - Member member = getMemberEntity(memberId); + public MemberWaitingHistoryListResponse getMemberWaitingHistory(Member member) { List waitings = waitingRepository.findWaitingWithMember(member); return toMemberWaitingListResponse(waitings); } @@ -116,12 +108,6 @@ private void validateIfMemberWaitingExists(Member member) { } } - public Member getMemberEntity(Long memberId) { - return memberRepository.findById(memberId).orElseThrow( - () -> new NotFoundCustomException(NOT_EXIST_MEMBER) - ); - } - public Shop getShopEntity(Long shopId) { Shop shop = shopRepository.findById(shopId).orElseThrow( () -> new NotFoundCustomException(NOT_EXIST_SHOP) diff --git a/src/main/java/com/prgrms/catchtable/waiting/service/OwnerWaitingService.java b/src/main/java/com/prgrms/catchtable/waiting/service/OwnerWaitingService.java index 39bfff51..4c739adf 100644 --- a/src/main/java/com/prgrms/catchtable/waiting/service/OwnerWaitingService.java +++ b/src/main/java/com/prgrms/catchtable/waiting/service/OwnerWaitingService.java @@ -1,14 +1,11 @@ package com.prgrms.catchtable.waiting.service; -import static com.prgrms.catchtable.common.exception.ErrorCode.NOT_EXIST_OWNER; import static com.prgrms.catchtable.common.exception.ErrorCode.WAITING_DOES_NOT_EXIST; import static com.prgrms.catchtable.waiting.dto.WaitingMapper.toOwnerWaitingListResponse; import static com.prgrms.catchtable.waiting.dto.WaitingMapper.toOwnerWaitingResponse; -import com.prgrms.catchtable.common.exception.custom.BadRequestCustomException; import com.prgrms.catchtable.common.exception.custom.NotFoundCustomException; import com.prgrms.catchtable.owner.domain.Owner; -import com.prgrms.catchtable.owner.repository.OwnerRepository; import com.prgrms.catchtable.waiting.domain.Waiting; import com.prgrms.catchtable.waiting.dto.response.OwnerWaitingListResponse; import com.prgrms.catchtable.waiting.dto.response.OwnerWaitingResponse; @@ -25,12 +22,9 @@ public class OwnerWaitingService { private final WaitingRepository waitingRepository; private final WaitingLineRepository waitingLineRepository; - private final OwnerRepository ownerRepository; @Transactional(readOnly = true) - public OwnerWaitingListResponse getOwnerAllWaiting(Long ownerId) { - Owner owner = ownerRepository.findById(ownerId) - .orElseThrow(() -> new BadRequestCustomException(NOT_EXIST_OWNER)); + public OwnerWaitingListResponse getOwnerAllWaiting(Owner owner) { List waitingIds = waitingLineRepository.getShopWaitingIdsInOrder( owner.getShop().getId()); List waitings = waitingRepository.findByIds(waitingIds); @@ -38,9 +32,7 @@ public OwnerWaitingListResponse getOwnerAllWaiting(Long ownerId) { } @Transactional - public OwnerWaitingResponse entryWaiting(Long ownerId) { - Owner owner = ownerRepository.findById(ownerId) - .orElseThrow(() -> new BadRequestCustomException(NOT_EXIST_OWNER)); + public OwnerWaitingResponse entryWaiting(Owner owner) { Long enteredWaitingId = waitingLineRepository.entry(owner.getShop().getId()); Waiting waiting = waitingRepository.findById(enteredWaitingId) .orElseThrow(() -> new NotFoundCustomException(WAITING_DOES_NOT_EXIST)); diff --git a/src/test/java/com/prgrms/catchtable/common/restdocs/RestDocsConfig.java b/src/test/java/com/prgrms/catchtable/common/restdocs/RestDocsConfig.java new file mode 100644 index 00000000..4d8bec07 --- /dev/null +++ b/src/test/java/com/prgrms/catchtable/common/restdocs/RestDocsConfig.java @@ -0,0 +1,20 @@ +package com.prgrms.catchtable.common.restdocs; + +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation; +import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; +import org.springframework.restdocs.operation.preprocess.Preprocessors; + +@TestConfiguration +public class RestDocsConfig { + + @Bean + public RestDocumentationResultHandler write() { + return MockMvcRestDocumentation.document( + "{class-name}/{method-name}", + Preprocessors.preprocessRequest(Preprocessors.prettyPrint()), + Preprocessors.preprocessResponse(Preprocessors.prettyPrint()) + ); + } +} \ No newline at end of file diff --git a/src/test/java/com/prgrms/catchtable/common/restdocs/RestDocsSupport.java b/src/test/java/com/prgrms/catchtable/common/restdocs/RestDocsSupport.java index 381b6db1..8b4ec69c 100644 --- a/src/test/java/com/prgrms/catchtable/common/restdocs/RestDocsSupport.java +++ b/src/test/java/com/prgrms/catchtable/common/restdocs/RestDocsSupport.java @@ -1,28 +1,71 @@ package com.prgrms.catchtable.common.restdocs; -import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration; +import static com.prgrms.catchtable.common.Role.MEMBER; import com.fasterxml.jackson.databind.ObjectMapper; +import com.prgrms.catchtable.jwt.provider.JwtTokenProvider; +import com.prgrms.catchtable.jwt.token.Token; +import com.prgrms.catchtable.member.domain.Member; +import jakarta.servlet.ServletException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import org.springframework.http.HttpHeaders; +import org.springframework.mock.web.MockFilterConfig; import org.springframework.restdocs.RestDocumentationContextProvider; import org.springframework.restdocs.RestDocumentationExtension; +import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation; +import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; +import org.springframework.security.config.BeanIds; import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.filter.CharacterEncodingFilter; +import org.springframework.web.filter.DelegatingFilterProxy; @ExtendWith(RestDocumentationExtension.class) +@Import(RestDocsConfig.class) +@SpringBootTest public abstract class RestDocsSupport { protected MockMvc mockMvc; - protected ObjectMapper objectMapper = new ObjectMapper(); + @Autowired + protected ObjectMapper objectMapper; + @Autowired + protected RestDocumentationResultHandler restDocs; + protected HttpHeaders httpHeaders = new HttpHeaders(); + + @Autowired + protected JwtTokenProvider jwtTokenProvider; @BeforeEach - void setUp(RestDocumentationContextProvider provider) { - this.mockMvc = MockMvcBuilders.standaloneSetup(initController()) - .apply(documentationConfiguration(provider)) + void setUp(final WebApplicationContext context, + final RestDocumentationContextProvider provider) throws ServletException { + DelegatingFilterProxy delegateProxyFilter = new DelegatingFilterProxy(); + delegateProxyFilter.init( + new MockFilterConfig(context.getServletContext(), + BeanIds.SPRING_SECURITY_FILTER_CHAIN)); + + this.mockMvc = MockMvcBuilders.webAppContextSetup(context) + .apply( + MockMvcRestDocumentation.documentationConfiguration(provider)) // rest docs 설정 주입 + .alwaysDo(restDocs) + .alwaysDo(MockMvcResultHandlers.print()) + .addFilters( + new CharacterEncodingFilter("UTF-8", true), + delegateProxyFilter + ) .build(); } - protected abstract Object initController(); + public HttpHeaders getHttpHeaders(Member member) { + Token token = jwtTokenProvider.createToken(member.getEmail(), MEMBER); + httpHeaders.add("AccessToken", token.getAccessToken()); + httpHeaders.add("RefreshToken", token.getRefreshToken()); + return httpHeaders; + } } diff --git a/src/test/java/com/prgrms/catchtable/waiting/controller/MemberWaitingControllerDocsTest.java b/src/test/java/com/prgrms/catchtable/waiting/controller/MemberWaitingControllerDocsTest.java index 6b7a0360..c807c8b2 100644 --- a/src/test/java/com/prgrms/catchtable/waiting/controller/MemberWaitingControllerDocsTest.java +++ b/src/test/java/com/prgrms/catchtable/waiting/controller/MemberWaitingControllerDocsTest.java @@ -1,12 +1,7 @@ package com.prgrms.catchtable.waiting.controller; import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.mock; import static org.springframework.http.MediaType.APPLICATION_JSON; -import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; -import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessRequest; -import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse; -import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint; import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; import static org.springframework.restdocs.payload.PayloadDocumentation.requestFields; import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; @@ -14,22 +9,27 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import com.prgrms.catchtable.common.restdocs.RestDocsSupport; +import com.prgrms.catchtable.member.MemberFixture; +import com.prgrms.catchtable.member.domain.Member; +import com.prgrms.catchtable.member.repository.MemberRepository; import com.prgrms.catchtable.waiting.dto.request.CreateWaitingRequest; import com.prgrms.catchtable.waiting.dto.response.MemberWaitingResponse; import com.prgrms.catchtable.waiting.service.MemberWaitingService; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.restdocs.payload.JsonFieldType; -import org.springframework.test.web.servlet.result.MockMvcResultHandlers; +import org.springframework.transaction.annotation.Transactional; +@Transactional class MemberWaitingControllerDocsTest extends RestDocsSupport { - private final MemberWaitingService memberWaitingService = mock(MemberWaitingService.class); + @MockBean + private MemberWaitingService memberWaitingService; + @Autowired + private MemberRepository memberRepository; - @Override - protected Object initController() { - return new MemberWaitingController(memberWaitingService); - } @DisplayName("웨이팅 생성 API") @Test @@ -47,17 +47,16 @@ void createWaiting() throws Exception { .remainingPostponeCount(2) .status("진행 중") .build(); + Member member = MemberFixture.member("test@naver.com"); + memberRepository.save(member); + given(memberWaitingService.createWaiting(1L, member, request)).willReturn(response); - given(memberWaitingService.createWaiting(1L, 1L, request)).willReturn(response); - - mockMvc.perform(post("/waitings/{shopId}/{memberId}", 1, 1) + mockMvc.perform(post("/waitings/{shopId}", 1) .contentType(APPLICATION_JSON) - .content(objectMapper.writeValueAsString(request))) + .content(objectMapper.writeValueAsString(request)) + .headers(getHttpHeaders(member))) .andExpect(status().isOk()) - .andDo(MockMvcResultHandlers.print()) - .andDo(document("waiting-create", - preprocessRequest(prettyPrint()), - preprocessResponse(prettyPrint()), + .andDo(restDocs.document( requestFields( fieldWithPath("peopleCount").type(JsonFieldType.NUMBER) .description("인원수") diff --git a/src/test/java/com/prgrms/catchtable/waiting/controller/MemberWaitingControllerTest.java b/src/test/java/com/prgrms/catchtable/waiting/controller/MemberWaitingControllerTest.java index d1bf241b..ad85ee1e 100644 --- a/src/test/java/com/prgrms/catchtable/waiting/controller/MemberWaitingControllerTest.java +++ b/src/test/java/com/prgrms/catchtable/waiting/controller/MemberWaitingControllerTest.java @@ -1,5 +1,6 @@ package com.prgrms.catchtable.waiting.controller; +import static com.prgrms.catchtable.common.Role.MEMBER; import static com.prgrms.catchtable.waiting.domain.WaitingStatus.CANCELED; import static com.prgrms.catchtable.waiting.domain.WaitingStatus.COMPLETED; import static com.prgrms.catchtable.waiting.domain.WaitingStatus.PROGRESS; @@ -16,6 +17,7 @@ import com.prgrms.catchtable.common.base.BaseIntegrationTest; import com.prgrms.catchtable.common.exception.custom.NotFoundCustomException; +import com.prgrms.catchtable.jwt.token.Token; import com.prgrms.catchtable.member.MemberFixture; import com.prgrms.catchtable.member.domain.Member; import com.prgrms.catchtable.member.repository.MemberRepository; @@ -35,6 +37,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.http.HttpHeaders; import org.springframework.test.util.ReflectionTestUtils; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; @@ -112,9 +115,10 @@ void createWaiting() throws Exception { .peopleCount(2).build(); // when, then - mockMvc.perform(post("/waitings/{shopId}/{memberId}", shop.getId(), member4.getId()) + mockMvc.perform(post("/waitings/{shopId}", shop.getId()) .contentType(APPLICATION_JSON) - .content(asJsonString(request))) + .content(asJsonString(request)) + .headers(getHttpHeaders(member4))) .andExpect(status().isOk()) .andExpect(jsonPath("$.shopId").value(shop.getId())) .andExpect(jsonPath("$.shopName").value(shop.getName())) @@ -130,8 +134,9 @@ void createWaiting() throws Exception { @Test void postponeWaiting() throws Exception { //when, then - mockMvc.perform(patch("/waitings/{memberId}", member2.getId()) - .contentType(APPLICATION_JSON)) + mockMvc.perform(patch("/waitings") + .contentType(APPLICATION_JSON) + .headers(getHttpHeaders(member2))) .andExpect(status().isOk()) .andExpect(jsonPath("$.shopId").value(shop.getId())) .andExpect(jsonPath("$.shopName").value(shop.getName())) @@ -144,8 +149,9 @@ void postponeWaiting() throws Exception { @DisplayName("맨 뒤의 멤버가 웨이팅 지연 API 호출 시 예외를 반환한다.") @Test void postponeWaiting_fails() throws Exception { - mockMvc.perform(patch("/waitings/{memberId}", member3.getId()) - .contentType(APPLICATION_JSON)) + mockMvc.perform(patch("/waitings") + .contentType(APPLICATION_JSON) + .headers(getHttpHeaders(member3))) .andExpect(status().isBadRequest()) .andExpect(jsonPath("$.message").value("이미 맨뒤라 웨이팅을 미룰 수 없습니다.")) .andDo(MockMvcResultHandlers.print()); @@ -158,8 +164,9 @@ void postponeWaiting_fails() throws Exception { void postponeWaiting_fails2() throws Exception { ReflectionTestUtils.setField(waiting2, "remainingPostponeCount", 0); waitingRepository.save(waiting2); - mockMvc.perform(patch("/waitings/{memberId}", member2.getId()) - .contentType(APPLICATION_JSON)) + mockMvc.perform(patch("/waitings") + .contentType(APPLICATION_JSON) + .headers(getHttpHeaders(member2))) .andExpect(status().isBadRequest()) .andExpect(jsonPath("$.message").value("이미 두 차례 대기를 미뤘습니다.")) .andDo(MockMvcResultHandlers.print()); @@ -169,8 +176,9 @@ void postponeWaiting_fails2() throws Exception { @Test void cancelWaiting() throws Exception { //when, then - mockMvc.perform(delete("/waitings/{memberId}", member1.getId()) - .contentType(APPLICATION_JSON)) + mockMvc.perform(delete("/waitings") + .contentType(APPLICATION_JSON) + .headers(getHttpHeaders(member1))) .andExpect(status().isOk()) .andExpect(jsonPath("$.shopId").value(shop.getId())) .andExpect(jsonPath("$.shopName").value(shop.getName())) @@ -190,14 +198,15 @@ void cancelWaiting() throws Exception { @Test void getWaiting() throws Exception { //when, then - mockMvc.perform(get("/waitings/{memberId}", member3.getId()) - .contentType(APPLICATION_JSON)) + mockMvc.perform(get("/waitings") + .contentType(APPLICATION_JSON) + .headers(getHttpHeaders(member2))) .andExpect(status().isOk()) .andExpect(jsonPath("$.shopId").value(shop.getId())) .andExpect(jsonPath("$.shopName").value(shop.getName())) - .andExpect(jsonPath("$.rank").value(3L)) - .andExpect(jsonPath("$.waitingNumber").value(waiting3.getWaitingNumber())) - .andExpect(jsonPath("$.peopleCount").value(waiting3.getPeopleCount())) + .andExpect(jsonPath("$.rank").value(2L)) + .andExpect(jsonPath("$.waitingNumber").value(waiting2.getWaitingNumber())) + .andExpect(jsonPath("$.peopleCount").value(waiting2.getPeopleCount())) .andExpect(jsonPath("$.status").value(PROGRESS.getDescription())) .andDo(MockMvcResultHandlers.print()); } @@ -209,8 +218,9 @@ void getMemberWaitingHistory() throws Exception { Waiting canceledWaiting = WaitingFixture.canceledWaiting(member1, shop, 23); Waiting completedWaiting = WaitingFixture.completedWaiting(member1, shop, 233); waitingRepository.saveAll(List.of(canceledWaiting, completedWaiting)); - mockMvc.perform(get("/waitings/all/{memberId}", member1.getId()) - .contentType(APPLICATION_JSON)) + mockMvc.perform(get("/waitings/all") + .contentType(APPLICATION_JSON) + .headers(getHttpHeaders(member1))) .andExpect(status().isOk()) .andExpect(jsonPath("$.memberWaitings", hasSize(3))) .andExpect(jsonPath("$.memberWaitings[0].waitingId").value(waiting1.getId())) @@ -222,4 +232,11 @@ void getMemberWaitingHistory() throws Exception { .andDo(MockMvcResultHandlers.print()) ; } + + private HttpHeaders getHttpHeaders(Member member) { + Token token = jwtTokenProvider.createToken(member.getEmail(), MEMBER); + httpHeaders.add("AccessToken", token.getAccessToken()); + httpHeaders.add("RefreshToken", token.getRefreshToken()); + return httpHeaders; + } } \ No newline at end of file diff --git a/src/test/java/com/prgrms/catchtable/waiting/controller/OwnerWaitingControllerTest.java b/src/test/java/com/prgrms/catchtable/waiting/controller/OwnerWaitingControllerTest.java index 9823aeed..dbb032a0 100644 --- a/src/test/java/com/prgrms/catchtable/waiting/controller/OwnerWaitingControllerTest.java +++ b/src/test/java/com/prgrms/catchtable/waiting/controller/OwnerWaitingControllerTest.java @@ -1,5 +1,6 @@ package com.prgrms.catchtable.waiting.controller; +import static com.prgrms.catchtable.common.Role.OWNER; import static org.assertj.core.api.Assertions.assertThat; import static org.hamcrest.Matchers.hasSize; import static org.springframework.http.MediaType.APPLICATION_JSON; @@ -9,6 +10,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import com.prgrms.catchtable.common.base.BaseIntegrationTest; +import com.prgrms.catchtable.jwt.token.Token; import com.prgrms.catchtable.member.MemberFixture; import com.prgrms.catchtable.member.domain.Member; import com.prgrms.catchtable.member.repository.MemberRepository; @@ -48,7 +50,6 @@ class OwnerWaitingControllerTest extends BaseIntegrationTest { private StringRedisTemplate redisTemplate; private Shop shop; - private Owner owner; private Waiting waiting1, waiting2, waiting3; @@ -62,7 +63,7 @@ void setUp() { shop = ShopFixture.shopWith24(); shopRepository.save(shop); - owner = OwnerFixture.getOwner(shop); + Owner owner = OwnerFixture.getOwner(shop); ownerRepository.save(owner); waiting1 = Waiting.builder() @@ -89,6 +90,10 @@ void setUp() { waitingLineRepository.save(shop.getId(), waiting1.getId()); waitingLineRepository.save(shop.getId(), waiting2.getId()); waitingLineRepository.save(shop.getId(), waiting3.getId()); + + Token token = jwtTokenProvider.createToken(owner.getEmail(), OWNER); + httpHeaders.add("AccessToken", token.getAccessToken()); + httpHeaders.add("RefreshToken", token.getRefreshToken()); } @AfterEach @@ -104,8 +109,9 @@ void clear() { @Test void getWaiting() throws Exception { //when, then - mockMvc.perform(get("/owner/waitings/{ownerId}", owner.getId()) - .contentType(APPLICATION_JSON)) + mockMvc.perform(get("/owner/waitings") + .contentType(APPLICATION_JSON) + .headers(httpHeaders)) .andExpect(status().isOk()) .andExpect(jsonPath("$.shopWaitings", hasSize(3))) .andExpect(jsonPath("$.shopWaitings[0].waitingId").value(waiting1.getId())) @@ -125,8 +131,9 @@ void getWaiting() throws Exception { @Test void entryWaiting() throws Exception { //when, then - mockMvc.perform(patch("/owner/waitings/{ownerId}", owner.getId()) - .contentType(APPLICATION_JSON)) + mockMvc.perform(patch("/owner/waitings") + .contentType(APPLICATION_JSON) + .headers(httpHeaders)) .andExpect(status().isOk()) .andExpect(jsonPath("$.waitingId").value(waiting1.getId())) .andExpect(jsonPath("$.waitingNumber").value(waiting1.getWaitingNumber())) diff --git a/src/test/java/com/prgrms/catchtable/waiting/repository/WaitingRepositoryTest.java b/src/test/java/com/prgrms/catchtable/waiting/repository/WaitingRepositoryTest.java index da4f7f27..be6e0c1d 100644 --- a/src/test/java/com/prgrms/catchtable/waiting/repository/WaitingRepositoryTest.java +++ b/src/test/java/com/prgrms/catchtable/waiting/repository/WaitingRepositoryTest.java @@ -1,7 +1,11 @@ package com.prgrms.catchtable.waiting.repository; +import static com.prgrms.catchtable.waiting.domain.WaitingStatus.CANCELED; +import static com.prgrms.catchtable.waiting.domain.WaitingStatus.COMPLETED; import static com.prgrms.catchtable.waiting.domain.WaitingStatus.PROGRESS; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; +import static org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.Replace.NONE; import com.prgrms.catchtable.member.MemberFixture; import com.prgrms.catchtable.member.domain.Member; @@ -15,18 +19,16 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.util.List; -import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.util.ReflectionTestUtils; -import org.springframework.transaction.annotation.Transactional; - -@SpringBootTest -@Transactional +@DataJpaTest +@AutoConfigureTestDatabase(replace = NONE) class WaitingRepositoryTest { private final LocalDateTime START_DATE_TIME = LocalDateTime.of(LocalDate.now(), @@ -53,13 +55,6 @@ void setUp() { shopRepository.save(shop); } - @AfterEach - void clear() { - memberRepository.deleteAll(); - waitingRepository.deleteAll(); - shopRepository.deleteAll(); - } - @DisplayName("특정 가게의 당일 대기 번호를 조회할 수 있다.") @Test void countByShopAndCreatedAtBetween() { @@ -124,4 +119,32 @@ void findWaitingWithMember() { assertThat(memberAllWaitings).containsExactly(canceledWaiting, completedWaiting, progressWaiting); } + + @DisplayName("벌크 연산으로 진행 중인 대기 상태를 취소 상태로 업데이트 할 수 있다.") + @Test + void updateWaitingStatus() { + //given + Waiting progressWaiting1 = WaitingFixture.progressWaiting(member1, shop, 1); + Waiting progressWaiting2 = WaitingFixture.progressWaiting(member2, shop, 2); + Waiting progressWaiting3 = WaitingFixture.progressWaiting(member3, shop, 3); + Waiting completedWaiting = WaitingFixture.completedWaiting(member3, shop, 4); + + waitingRepository.saveAll( + List.of(progressWaiting1, progressWaiting2, progressWaiting3, completedWaiting)); + //when + waitingRepository.updateWaitingStatus(CANCELED, PROGRESS); + System.out.println("progressWaiting3 = " + progressWaiting3.getStatus()); + Waiting waiting1 = waitingRepository.findById(progressWaiting1.getId()).orElseThrow(); + Waiting waiting2 = waitingRepository.findById(progressWaiting2.getId()).orElseThrow(); + Waiting waiting3 = waitingRepository.findById(progressWaiting3.getId()).orElseThrow(); + Waiting waiting4 = waitingRepository.findById(completedWaiting.getId()).orElseThrow(); + + //then + assertAll( + () -> assertThat(waiting1.getStatus()).isEqualTo(CANCELED), + () -> assertThat(waiting2.getStatus()).isEqualTo(CANCELED), + () -> assertThat(waiting3.getStatus()).isEqualTo(CANCELED), + () -> assertThat(waiting4.getStatus()).isEqualTo(COMPLETED) + ); + } } \ No newline at end of file diff --git a/src/test/java/com/prgrms/catchtable/waiting/schedular/WaitingSchedulerTest.java b/src/test/java/com/prgrms/catchtable/waiting/schedular/WaitingSchedulerTest.java new file mode 100644 index 00000000..5a9c6c44 --- /dev/null +++ b/src/test/java/com/prgrms/catchtable/waiting/schedular/WaitingSchedulerTest.java @@ -0,0 +1,46 @@ +package com.prgrms.catchtable.waiting.schedular; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.prgrms.catchtable.waiting.repository.waitingline.WaitingLineRepository; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.transaction.annotation.Transactional; + +@SpringBootTest +@Transactional +@Disabled +class WaitingSchedulerTest { + + @Autowired + private WaitingLineRepository waitingLineRepository; + + @Autowired + private StringRedisTemplate redisTemplate; + + @AfterEach + void clear() { + redisTemplate.delete("s1"); + } + + @DisplayName("특정 시간 주기로 redis 데이터를 비울 수 있다.") + @Test + void clearRedis() throws InterruptedException { + Long shopId = 1L; + + waitingLineRepository.save(shopId, 1L); + waitingLineRepository.save(shopId, 2L); + waitingLineRepository.save(shopId, 3L); + + assertThat(waitingLineRepository.getWaitingLineSize(shopId)).isEqualTo(3); + + Thread.sleep(60 * 1000); + assertThat(waitingLineRepository.getWaitingLineSize(shopId)).isZero(); + + } +} \ No newline at end of file diff --git a/src/test/java/com/prgrms/catchtable/waiting/service/MemberWaitingServiceTest.java b/src/test/java/com/prgrms/catchtable/waiting/service/MemberWaitingServiceTest.java index 01914252..93f1a1ed 100644 --- a/src/test/java/com/prgrms/catchtable/waiting/service/MemberWaitingServiceTest.java +++ b/src/test/java/com/prgrms/catchtable/waiting/service/MemberWaitingServiceTest.java @@ -11,7 +11,6 @@ import static org.mockito.Mockito.mock; import com.prgrms.catchtable.member.domain.Member; -import com.prgrms.catchtable.member.repository.MemberRepository; import com.prgrms.catchtable.shop.domain.Shop; import com.prgrms.catchtable.shop.repository.ShopRepository; import com.prgrms.catchtable.waiting.domain.Waiting; @@ -37,8 +36,6 @@ class MemberWaitingServiceTest { private WaitingRepository waitingRepository; @Mock private ShopRepository shopRepository; - @Mock - private MemberRepository memberRepository; @Mock private WaitingLineRepository waitingLineRepository; @@ -60,17 +57,17 @@ void createWaiting() { .waitingNumber(1) .peopleCount(2) .build(); + doNothing().when(shop).validateIfShopOpened(any(LocalTime.class)); given(shopRepository.findById(1L)).willReturn(Optional.of(shop)); given(shop.getId()).willReturn(1L); - given(memberRepository.findById(1L)).willReturn(Optional.of(member)); given(waitingRepository.existsByMember(member)).willReturn(false); given(waitingRepository.save(any(Waiting.class))).willReturn(waiting); given(waitingLineRepository.findRank(shop.getId(), waiting.getId())).willReturn(1L); //when - MemberWaitingResponse response = memberWaitingService.createWaiting(1L, 1L, request); + MemberWaitingResponse response = memberWaitingService.createWaiting(1L, member, request); //then assertAll( () -> assertThat(response.peopleCount()).isEqualTo(2), @@ -87,7 +84,6 @@ void postponeWaiting() { Member member = mock(Member.class); Waiting waiting = mock(Waiting.class); - given(memberRepository.findById(1L)).willReturn(Optional.of(member)); given(waitingRepository.findByMemberAndStatusWithShop(member, PROGRESS)).willReturn( Optional.of(waiting)); given(waiting.getShop()).willReturn(shop); @@ -96,7 +92,7 @@ void postponeWaiting() { doNothing().when(waiting).decreasePostponeRemainingCount(); //when - MemberWaitingResponse response = memberWaitingService.postponeWaiting(1L); + MemberWaitingResponse response = memberWaitingService.postponeWaiting(member); //then assertAll( assertThat(response.peopleCount())::isNotNull, @@ -113,7 +109,6 @@ void cancelWaiting() { Member member = mock(Member.class); Waiting waiting = mock(Waiting.class); - given(memberRepository.findById(1L)).willReturn(Optional.of(member)); given(waitingRepository.findByMemberAndStatusWithShop(member, PROGRESS)).willReturn( Optional.of(waiting)); given(waiting.getShop()).willReturn(shop); @@ -121,7 +116,7 @@ void cancelWaiting() { doNothing().when(waiting).changeStatusCanceled(); //when - MemberWaitingResponse response = memberWaitingService.cancelWaiting(1L); + MemberWaitingResponse response = memberWaitingService.cancelWaiting(member); //then assertAll( @@ -139,13 +134,12 @@ void getWaiting() { Member member = mock(Member.class); Waiting waiting = mock(Waiting.class); - given(memberRepository.findById(1L)).willReturn(Optional.of(member)); given(waitingRepository.findByMemberAndStatusWithShop(member, PROGRESS)).willReturn( Optional.of(waiting)); given(waiting.getShop()).willReturn(shop); given(waiting.getStatus()).willReturn(PROGRESS); //when - MemberWaitingResponse response = memberWaitingService.getWaiting(1L); + MemberWaitingResponse response = memberWaitingService.getWaiting(member); //then assertAll( @@ -163,7 +157,6 @@ void getMemberAllWaiting() { Shop shop = mock(Shop.class); Waiting waiting = mock(Waiting.class); - given(memberRepository.findById(1L)).willReturn(Optional.of(member)); given(waitingRepository.findWaitingWithMember(member)).willReturn( List.of(waiting)); given(waiting.getShop()).willReturn(shop); @@ -171,7 +164,7 @@ void getMemberAllWaiting() { //when MemberWaitingHistoryListResponse response = memberWaitingService.getMemberWaitingHistory( - 1L); + member); //then assertAll( diff --git a/src/test/java/com/prgrms/catchtable/waiting/service/OwnerWaitingServiceTest.java b/src/test/java/com/prgrms/catchtable/waiting/service/OwnerWaitingServiceTest.java index 4d7c59ef..1c0a5c0a 100644 --- a/src/test/java/com/prgrms/catchtable/waiting/service/OwnerWaitingServiceTest.java +++ b/src/test/java/com/prgrms/catchtable/waiting/service/OwnerWaitingServiceTest.java @@ -52,7 +52,6 @@ void getOwnerAllWaiting() { Waiting waiting1 = WaitingFixture.progressWaiting(member1, shop, 1); Waiting waiting2 = WaitingFixture.progressWaiting(member2, shop, 2); - given(ownerRepository.findById(1L)).willReturn(Optional.of(owner)); given(owner.getShop()).willReturn(shop); given(shop.getId()).willReturn(1L); given(waitingLineRepository.getShopWaitingIdsInOrder(any(Long.class))).willReturn( @@ -60,7 +59,7 @@ void getOwnerAllWaiting() { given(waitingRepository.findByIds(waitingIds)).willReturn(List.of(waiting1, waiting2)); //when - OwnerWaitingListResponse response = ownerWaitingService.getOwnerAllWaiting(1L); + OwnerWaitingListResponse response = ownerWaitingService.getOwnerAllWaiting(owner); //then assertAll( @@ -85,12 +84,11 @@ void entryWaiting() { Shop shop = mock(Shop.class); Waiting waiting = WaitingFixture.progressWaiting(member, shop, 1); - given(ownerRepository.findById(1L)).willReturn(Optional.of(owner)); given(owner.getShop()).willReturn(shop); given(waitingLineRepository.entry(any(Long.class))).willReturn(1L); given(waitingRepository.findById(1L)).willReturn(Optional.of(waiting)); //when - OwnerWaitingResponse response = ownerWaitingService.entryWaiting(1L); + OwnerWaitingResponse response = ownerWaitingService.entryWaiting(owner); //then assertAll( () -> assertThat(response.waitingId()).isEqualTo(waiting.getId()),