Skip to content

Commit

Permalink
#31-MessageSender 분리
Browse files Browse the repository at this point in the history
- MessageSender interface 작성
- ConsoleLogMessageSender 작성
- ConsoleLogMessageSenderTest 작성
- 기존 코드 변경
  • Loading branch information
chanwooo committed Nov 10, 2022
1 parent 27ab552 commit 451aa34
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 4 deletions.
16 changes: 16 additions & 0 deletions src/main/java/flab/quing/waiting/ConsoleLogMessageSender.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package flab.quing.waiting;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class ConsoleLogMessageSender implements MessageSender {

@Override
public boolean send(String phoneNumber, String message) {
log.info("phoneNumber = " + phoneNumber);
log.info("message = " + message);
return true;
}
}
7 changes: 7 additions & 0 deletions src/main/java/flab/quing/waiting/MessageSender.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package flab.quing.waiting;

public interface MessageSender {

boolean send(String phoneNumber, String message);

}
9 changes: 5 additions & 4 deletions src/main/java/flab/quing/waiting/QuingServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.text.MessageFormat;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
Expand All @@ -27,6 +28,7 @@ public class QuingServiceImpl implements QuingService {
private final WaitingRepository waitingRepository;
private final UserRepository userRepository;
private final StoreRepository storeRepository;
private final MessageSender messageSender;

@Override
@Transactional
Expand All @@ -36,7 +38,7 @@ public WaitingResponse append(WaitingRequest waitingRequest) {
Waiting waiting = Waiting.of(user, store);

Optional<Waiting> exist = waitingRepository.findByUserIdAndWaitingQueueStatusIs(user.getId(), WaitingQueueStatus.WAITING);
if(exist.isPresent()) {
if (exist.isPresent()) {
throw new DuplicateWaitingException();
}
Waiting save = waitingRepository.save(waiting);
Expand All @@ -61,11 +63,10 @@ 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);
messageSender.send(user.getPhoneNumber(),
MessageFormat.format("{0} 님 {1}", user.getName(), message));
}

@Override
Expand Down
28 changes: 28 additions & 0 deletions src/test/java/flab/quing/waiting/ConsoleLogMessageSenderTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package flab.quing.waiting;

import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.system.CapturedOutput;
import org.springframework.boot.test.system.OutputCaptureExtension;

import static org.junit.jupiter.api.Assertions.*;

@ExtendWith(OutputCaptureExtension.class)
class ConsoleLogMessageSenderTest {

MessageSender messageSender;

@BeforeEach
void beforeEach() {
messageSender = new ConsoleLogMessageSender();
}

@Test
void send(CapturedOutput output) {
messageSender.send("010-0000-0000", "hi test");

Assertions.assertThat(output).contains("test");
}
}
6 changes: 6 additions & 0 deletions src/test/java/flab/quing/waiting/QuingServiceImplTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ class QuingServiceImplTest {
@Mock
WaitingRepository waitingRepository;

@Mock
ConsoleLogMessageSender messageSender;

@BeforeEach
void beforeEach() {
DummyDataMaker.init();
Expand Down Expand Up @@ -147,6 +150,7 @@ void sendMessage(CapturedOutput output) {
Waiting waiting1 = DummyDataMaker.waiting(user1, store);

when(waitingRepository.findById(1L)).thenReturn(Optional.of(waiting1));
when(messageSender.send(any(),any())).thenCallRealMethod();

//when
quingService.sendMessage(1L, "test");
Expand All @@ -163,6 +167,7 @@ void sendEnterMessage(CapturedOutput output) {
Waiting waiting1 = DummyDataMaker.waiting(user1, store);

when(waitingRepository.findById(1L)).thenReturn(Optional.of(waiting1));
when(messageSender.send(any(),any())).thenCallRealMethod();

//when
quingService.sendEnterMessage(1L);
Expand All @@ -180,6 +185,7 @@ void sendRegisterMessage(CapturedOutput output) {
Waiting waiting1 = DummyDataMaker.waiting(user1, store);

when(waitingRepository.findById(1L)).thenReturn(Optional.of(waiting1));
when(messageSender.send(any(),any())).thenCallRealMethod();

//when
quingService.sendRegisterMessage(1L);
Expand Down

0 comments on commit 451aa34

Please sign in to comment.