diff --git a/build.gradle b/build.gradle index 93ba809..fac1689 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,12 @@ dependencies { developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' + + testCompileOnly 'org.projectlombok:lombok' + testAnnotationProcessor 'org.projectlombok:lombok' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + } tasks.named('test') { diff --git a/src/main/java/flab/quing/waiting/QuingService.java b/src/main/java/flab/quing/waiting/QuingService.java index 736fe16..9bb893a 100644 --- a/src/main/java/flab/quing/waiting/QuingService.java +++ b/src/main/java/flab/quing/waiting/QuingService.java @@ -17,8 +17,10 @@ public interface QuingService { void sendEnterMessage(long waitingId); + void sendRegisterMessage(long waitingId); + WaitingResponse doneWaiting(long waitingId); - void cancelWaiting(long waitingId); + WaitingResponse cancelWaiting(long waitingId); } diff --git a/src/main/java/flab/quing/waiting/QuingServiceImpl.java b/src/main/java/flab/quing/waiting/QuingServiceImpl.java index 454c3e6..9d787a6 100644 --- a/src/main/java/flab/quing/waiting/QuingServiceImpl.java +++ b/src/main/java/flab/quing/waiting/QuingServiceImpl.java @@ -11,6 +11,7 @@ import flab.quing.waiting.exception.DuplicateWaitingException; import flab.quing.waiting.exception.NoSuchWaitingException; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,6 +19,7 @@ import java.util.Optional; import java.util.stream.Collectors; +@Slf4j @RequiredArgsConstructor @Service public class QuingServiceImpl implements QuingService { @@ -50,6 +52,7 @@ public List getList(long storeId) { } @Override + @Transactional public int countForward(long waitingId) { Waiting waiting = waitingRepository.findById(waitingId).orElseThrow(NoSuchWaitingException::new); List list = getList(waiting.getStore().getId()); @@ -58,12 +61,21 @@ public int countForward(long waitingId) { @Override public void sendMessage(long waitingId, String message) { - + //ncloud sms + Waiting waiting = waitingRepository.findById(waitingId).orElseThrow(NoSuchWaitingException::new); + User user = waiting.getUser(); + System.out.println("phoneNumber = " + user.getPhoneNumber()); + System.out.println("message = " + user.getName()+"님 "+message); } @Override public void sendEnterMessage(long waitingId) { + sendMessage(waitingId, "입장해주세요!"); + } + @Override + public void sendRegisterMessage(long waitingId) { + sendMessage(waitingId, "등록되었습니다."); } @Override @@ -76,8 +88,9 @@ public WaitingResponse doneWaiting(long waitingId) { @Override @Transactional - public void cancelWaiting(long waitingId) { + public WaitingResponse cancelWaiting(long waitingId) { Waiting waiting = waitingRepository.findById(waitingId).orElseThrow(NoSuchWaitingException::new); waiting.cancel(); + return waiting.toResponse(); } } diff --git a/src/test/java/flab/quing/review/ReviewRepositoryTest.java b/src/test/java/flab/quing/review/ReviewRepositoryTest.java index e61d27e..16c51a1 100644 --- a/src/test/java/flab/quing/review/ReviewRepositoryTest.java +++ b/src/test/java/flab/quing/review/ReviewRepositoryTest.java @@ -2,8 +2,12 @@ import flab.quing.DummyDataMaker; import flab.quing.store.Store; +import flab.quing.store.StoreRepository; import flab.quing.user.User; +import flab.quing.user.UserRepository; import flab.quing.waiting.Waiting; +import flab.quing.waiting.WaitingRepository; +import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -12,22 +16,29 @@ import static org.assertj.core.api.Assertions.assertThat; +@Slf4j @DataJpaTest class ReviewRepositoryTest { @Autowired ReviewRepository reviewRepository; + @Autowired + UserRepository userRepository; - @Test - void findByWaitingOrderByIdDesc() { + @Autowired + StoreRepository storeRepository; + + @Autowired + WaitingRepository waitingRepository; + @Test + void findTopByWaitingIdOrderByIdDesc() { User user = DummyDataMaker.user(); Store store = DummyDataMaker.store(); Waiting waiting = DummyDataMaker.waiting(user, store); - Review review1 = DummyDataMaker.review(user, waiting, "review1"); - reviewRepository.save(review1); + Review review1 = reviewRepository.save(DummyDataMaker.review(user, waiting, "review1")); Review result1 = reviewRepository.findTopByWaitingIdOrderByIdDesc(waiting.getId()).get(); assertThat(result1.getMessage()).isEqualTo("review1"); @@ -42,30 +53,38 @@ void findByWaitingOrderByIdDesc() { } @Test - void findAllByWaitingStoreAndDeletedIsFalse() { + void findAllByWaitingStoreIdAndDeletedIsFalse() { + //given User user1 = DummyDataMaker.user(); User user2 = DummyDataMaker.user(); + userRepository.saveAll(List.of(user1, user2)); Store store = DummyDataMaker.store(); + storeRepository.save(store); Waiting waiting1 = DummyDataMaker.waiting(user1, store); Waiting waiting2 = DummyDataMaker.waiting(user2, store); + waitingRepository.saveAll(List.of(waiting1, waiting2)); - Review review1 = DummyDataMaker.review(user1, waiting1, "review1"); - Review review2 = DummyDataMaker.review(user1, waiting2, "review2"); + Review review1 = reviewRepository.save(DummyDataMaker.review(user1, waiting1, "review1")); + log.info("review1 = " + review1); - Review result1 = reviewRepository.save(review1); - Review result2 = reviewRepository.save(review2); - result2.hide(); - Review review3 = DummyDataMaker.review(user1, waiting2, "review3"); - Review result3 = reviewRepository.save(review3); + Review review2 = reviewRepository.save(DummyDataMaker.review(user2, waiting2, "review2")); + log.info("review2 = " + review2.getDeleted_at()); - List storeReviews = reviewRepository.findAllByWaitingStoreIdAndDeletedIsFalse(store.getId()); - List allByWaitingStoreIdAndDeletedIsFalse = reviewRepository.findAllByWaitingStoreIdAndDeletedIsFalse(store.getId()); - System.out.println("allByWaitingStoreIdAndDeletedIsFalse = " + allByWaitingStoreIdAndDeletedIsFalse); + review2.hide(); + log.info("review2 = " + review2.getDeleted_at()); + + Review review3 = reviewRepository.save(DummyDataMaker.review(user2, waiting2, "review3")); + log.info("review3 = " + review3); - storeReviews.stream().forEach(System.out::println); + storeRepository.findAll().forEach(o-> log.info(o.getId().toString()+" "+o)); + + //when + List storeReviews = reviewRepository.findAllByWaitingStoreIdAndDeletedIsFalse(store.getId()); + log.info("allByWaitingStoreIdAndDeletedIsFalse = " + storeReviews); + //then assertThat(storeReviews.size()).isEqualTo(2); assertThat(storeReviews.get(0).getMessage()).isEqualTo("review1"); assertThat(storeReviews.get(1).getMessage()).isEqualTo("review3"); diff --git a/src/test/java/flab/quing/waiting/QuingServiceImplTest.java b/src/test/java/flab/quing/waiting/QuingServiceImplTest.java index 7cd2d46..fa3c602 100644 --- a/src/test/java/flab/quing/waiting/QuingServiceImplTest.java +++ b/src/test/java/flab/quing/waiting/QuingServiceImplTest.java @@ -8,11 +8,15 @@ import flab.quing.waiting.dto.WaitingRequest; import flab.quing.waiting.dto.WaitingResponse; import flab.quing.waiting.exception.DuplicateWaitingException; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.boot.test.system.CapturedOutput; +import org.springframework.boot.test.system.OutputCaptureExtension; import java.util.List; import java.util.Optional; @@ -23,7 +27,9 @@ import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.when; +@Slf4j @ExtendWith(MockitoExtension.class) +@ExtendWith(OutputCaptureExtension.class) class QuingServiceImplTest { @InjectMocks @@ -38,9 +44,14 @@ class QuingServiceImplTest { @Mock WaitingRepository waitingRepository; + @BeforeEach + void beforeEach() { + DummyDataMaker.init(); + } + @Test void append() { - + //given User user = DummyDataMaker.user(); Store store = DummyDataMaker.store(); WaitingRequest waitingRequest = WaitingRequest.builder() @@ -54,14 +65,17 @@ void append() { when(waitingRepository.findByUserIdAndWaitingQueueStatusIs(anyLong(), any())).thenReturn(Optional.empty()); when(waitingRepository.save(any())).thenReturn(waiting); + //when WaitingResponse waitingResponse = quingService.append(waitingRequest); - System.out.println("waitingResponse = " + waitingResponse); + log.debug("waitingResponse = " + waitingResponse); + //then assertThat(waitingResponse.getId()).isEqualTo(1); } @Test - void append_exist_throw_exception() { + void appendExistThrowDuplicateException() { + //given User user = DummyDataMaker.user(); Store store = DummyDataMaker.store(); WaitingRequest waitingRequest = WaitingRequest.builder() @@ -74,14 +88,16 @@ void append_exist_throw_exception() { when(storeRepository.findById(anyLong())).thenReturn(Optional.of(store)); when(waitingRepository.findByUserIdAndWaitingQueueStatusIs(anyLong(), any())).thenReturn(Optional.of(waiting)); + //when + //then assertThatThrownBy(() -> { quingService.append(waitingRequest); }).isInstanceOf(DuplicateWaitingException.class); - } @Test void getList() { + //given User user1 = DummyDataMaker.user(); User user2 = DummyDataMaker.user(); User user3 = DummyDataMaker.user(); @@ -93,15 +109,17 @@ void getList() { when(waitingRepository.findAllByStoreIdAndWaitingQueueStatusIs(anyLong(),any(WaitingQueueStatus.class))) .thenReturn(List.of(waiting1,waiting2,waiting3)); + //when List result = quingService.getList(1L); + //then assertThat(result.size()).isEqualTo(3); assertThat(result.get(1)).isEqualTo(waiting2.toResponse()); - } @Test void countForward() { + //given User user1 = DummyDataMaker.user(); User user2 = DummyDataMaker.user(); User user3 = DummyDataMaker.user(); @@ -114,28 +132,93 @@ void countForward() { when(waitingRepository.findAllByStoreIdAndWaitingQueueStatusIs(anyLong(),any(WaitingQueueStatus.class))) .thenReturn(List.of(waiting1,waiting2,waiting3)); + //when int index = quingService.countForward(3L); + //then assertThat(index).isEqualTo(2); } @Test - void sendMessage() { + void sendMessage(CapturedOutput output) { + //given + User user1 = DummyDataMaker.user(); + Store store = DummyDataMaker.store(); + Waiting waiting1 = DummyDataMaker.waiting(user1, store); + + when(waitingRepository.findById(1L)).thenReturn(Optional.of(waiting1)); + + //when quingService.sendMessage(1L, "test"); + + //then + assertThat(output).contains("test"); } @Test - void sendEnterMessage() { + void sendEnterMessage(CapturedOutput output) { + //given + User user1 = DummyDataMaker.user(); + Store store = DummyDataMaker.store(); + Waiting waiting1 = DummyDataMaker.waiting(user1, store); + + when(waitingRepository.findById(1L)).thenReturn(Optional.of(waiting1)); + + //when quingService.sendEnterMessage(1L); + + //then + assertThat(output).contains("입장"); + + } + + @Test + void sendRegisterMessage(CapturedOutput output) { + //given + User user1 = DummyDataMaker.user(); + Store store = DummyDataMaker.store(); + Waiting waiting1 = DummyDataMaker.waiting(user1, store); + + when(waitingRepository.findById(1L)).thenReturn(Optional.of(waiting1)); + + //when + quingService.sendRegisterMessage(1L); + + //then + assertThat(output).contains("등록"); } @Test void doneWaiting() { - quingService.doneWaiting(1L); + //given + User user1 = DummyDataMaker.user(); + Store store = DummyDataMaker.store(); + Waiting waiting1 = DummyDataMaker.waiting(user1, store); + + when(waitingRepository.findById(anyLong())).thenReturn(Optional.ofNullable(waiting1)); + + //when + WaitingResponse waitingResponse = quingService.doneWaiting(1L); + log.debug("waitingResponse = " + waitingResponse); + + //then + assertThat(waitingResponse.getWaitingQueueStatus()).isEqualTo(WaitingQueueStatus.DONE); } @Test void cancelWaiting() { - quingService.cancelWaiting(1L); + //given + User user1 = DummyDataMaker.user(); + Store store = DummyDataMaker.store(); + Waiting waiting1 = DummyDataMaker.waiting(user1, store); + + when(waitingRepository.findById(anyLong())).thenReturn(Optional.ofNullable(waiting1)); + + //when + WaitingResponse waitingResponse = quingService.cancelWaiting(1L); + log.debug("waitingResponse = " + waitingResponse); + + //then + assertThat(waitingResponse.getWaitingQueueStatus()).isEqualTo(WaitingQueueStatus.CANCELED); } } \ No newline at end of file diff --git a/src/test/java/flab/quing/waiting/QuingServiceIntegrationTest.java b/src/test/java/flab/quing/waiting/QuingServiceIntegrationTest.java index db6c018..c5e3c90 100644 --- a/src/test/java/flab/quing/waiting/QuingServiceIntegrationTest.java +++ b/src/test/java/flab/quing/waiting/QuingServiceIntegrationTest.java @@ -7,6 +7,7 @@ import flab.quing.user.UserRepository; import flab.quing.waiting.dto.WaitingRequest; import flab.quing.waiting.dto.WaitingResponse; +import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -15,6 +16,7 @@ import static org.assertj.core.api.Assertions.assertThat; +@Slf4j @SpringBootTest class QuingServiceIntegrationTest { @@ -30,7 +32,6 @@ class QuingServiceIntegrationTest { @Test void append() { - User user = userRepository.save(DummyDataMaker.user()); Store store = storeRepository.save(DummyDataMaker.store()); @@ -42,31 +43,23 @@ void append() { WaitingResponse waitingResponse = quingService.append(waitingRequest); List list = quingService.getList(store.getId()); -// System.out.println("list = " + list); - list.forEach(System.out::println); + list.forEach(o -> log.info("o = " + o)); assertThat(list.size()).isEqualTo(1); assertThat(list.get(0).getUserName()).isEqualTo(user.getName()); - - } - @Test - void getList() { - } @Test void countForward() { - Store store = DummyDataMaker.store(); - - User user1 = DummyDataMaker.user(); - User user2 = DummyDataMaker.user(); - User user3 = DummyDataMaker.user(); - User user4 = DummyDataMaker.user(); - - storeRepository.save(store); - userRepository.saveAll(List.of(user1,user2,user3,user4)); + Store store = storeRepository.save(DummyDataMaker.store()); + log.info("storeRepository = " + storeRepository.findAll()); + User user1 = userRepository.save(DummyDataMaker.user()); + User user2 = userRepository.save(DummyDataMaker.user()); + User user3 = userRepository.save(DummyDataMaker.user()); + User user4 = userRepository.save(DummyDataMaker.user()); + log.info("userRepository = " + userRepository.findAll()); WaitingRequest waitingRequest1 = WaitingRequest.builder() .storeId(store.getId()) @@ -78,8 +71,6 @@ void countForward() { .userId(user2.getId()) .build(); - - WaitingRequest waitingRequest3 = WaitingRequest.builder() .storeId(store.getId()) .userId(user3.getId()) @@ -90,36 +81,25 @@ void countForward() { .userId(user4.getId()) .build(); - quingService.append(waitingRequest1); + log.info("storeRepository.findAll() = " + storeRepository.findAll()); + log.info("waitingRequest1 = " + waitingRequest1); + log.info("waitingRequest2 = " + waitingRequest2); + log.info("waitingRequest3 = " + waitingRequest3); + log.info("waitingRequest4 = " + waitingRequest4); + + WaitingResponse waitingResponse1 = quingService.append(waitingRequest1); WaitingResponse waitingResponse2 = quingService.append(waitingRequest2); - quingService.append(waitingRequest3); + WaitingResponse waitingResponse3 = quingService.append(waitingRequest3); WaitingResponse waitingResponse4 = quingService.append(waitingRequest4); WaitingResponse doneWaiting = quingService.doneWaiting(waitingResponse2.getId()); - System.out.println("doneWaiting = " + doneWaiting); + log.info("doneWaiting = " + doneWaiting); int forward = quingService.countForward(waitingResponse4.getId()); List list = quingService.getList(store.getId()); - list.forEach(System.out::println); + list.forEach(o -> log.info("o = " + o)); assertThat(forward).isEqualTo(2); - - } - - @Test - void sendMessage() { - } - - @Test - void sendEnterMessage() { - } - - @Test - void doneWaiting() { - } - - @Test - void cancelWaiting() { } } \ No newline at end of file