Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/feature-#21' into feature-#21
Browse files Browse the repository at this point in the history
  • Loading branch information
chanwooo committed Nov 10, 2022
2 parents a022360 + 368ffca commit b46d7bc
Show file tree
Hide file tree
Showing 6 changed files with 170 additions and 68 deletions.
5 changes: 5 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,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') {
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/flab/quing/waiting/QuingService.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);

}
17 changes: 15 additions & 2 deletions src/main/java/flab/quing/waiting/QuingServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,15 @@
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;

import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

@Slf4j
@RequiredArgsConstructor
@Service
public class QuingServiceImpl implements QuingService {
Expand Down Expand Up @@ -50,6 +52,7 @@ public List<WaitingResponse> getList(long storeId) {
}

@Override
@Transactional
public int countForward(long waitingId) {
Waiting waiting = waitingRepository.findById(waitingId).orElseThrow(NoSuchWaitingException::new);
List<WaitingResponse> list = getList(waiting.getStore().getId());
Expand All @@ -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
Expand All @@ -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();
}
}
51 changes: 35 additions & 16 deletions src/test/java/flab/quing/review/ReviewRepositoryTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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");
Expand All @@ -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<Review> storeReviews = reviewRepository.findAllByWaitingStoreIdAndDeletedIsFalse(store.getId());
List<Review> 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<Review> 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");
Expand Down
101 changes: 92 additions & 9 deletions src/test/java/flab/quing/waiting/QuingServiceImplTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand All @@ -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()
Expand All @@ -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()
Expand All @@ -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();
Expand All @@ -93,15 +109,17 @@ void getList() {
when(waitingRepository.findAllByStoreIdAndWaitingQueueStatusIs(anyLong(),any(WaitingQueueStatus.class)))
.thenReturn(List.of(waiting1,waiting2,waiting3));

//when
List<WaitingResponse> 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();
Expand All @@ -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);
}
}
Loading

0 comments on commit b46d7bc

Please sign in to comment.