Skip to content

Commit db561d5

Browse files
author
Guilherme Biff Zarelli
committed
Merge remote-tracking branch 'origin/main' into main
2 parents c638f81 + 520847f commit db561d5

File tree

3 files changed

+123
-4
lines changed

3 files changed

+123
-4
lines changed

adapter/output/jpa-mysql-repository/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
<properties>
1616
<maven.compiler.source>11</maven.compiler.source>
1717
<maven.compiler.target>11</maven.compiler.target>
18-
<coverage.line>0</coverage.line>
19-
<coverage.branch>0</coverage.branch>
20-
<mutation.threshold>0</mutation.threshold>
18+
<coverage.line>1</coverage.line>
19+
<coverage.branch>1</coverage.branch>
20+
<mutation.threshold>100</mutation.threshold>
2121
</properties>
2222

2323
<dependencies>

adapter/output/jpa-mysql-repository/src/test/java/br/com/helpdev/output/repository/MessageGatewayTest.java

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,29 @@
11
package br.com.helpdev.output.repository;
22

3+
import static org.assertj.core.api.Assertions.assertThat;
34
import static org.mockito.Mockito.verify;
5+
import static org.mockito.Mockito.verifyNoMoreInteractions;
6+
import static org.mockito.Mockito.when;
47

8+
import br.com.helpdev.domain.Chat;
9+
import br.com.helpdev.domain.CommunicationChannel;
10+
import br.com.helpdev.domain.Message;
11+
import br.com.helpdev.domain.Recipient;
12+
import br.com.helpdev.domain.Status;
13+
import br.com.helpdev.domain.vo.MessageBody;
514
import br.com.helpdev.domain.vo.MessageId;
15+
import br.com.helpdev.domain.vo.Phone;
16+
import br.com.helpdev.output.repository.entity.CommunicationChannelEntity;
17+
import br.com.helpdev.output.repository.entity.MessageEntity;
618
import br.com.helpdev.output.repository.entity.MessageEntityRepository;
19+
import br.com.helpdev.output.repository.entity.RecipientEntity;
720
import br.com.helpdev.output.repository.mapper.MessageMapper;
21+
import java.time.ZonedDateTime;
22+
import java.util.List;
23+
import java.util.Optional;
824
import org.junit.jupiter.api.Test;
925
import org.junit.jupiter.api.extension.ExtendWith;
26+
import org.mockito.ArgumentCaptor;
1027
import org.mockito.InjectMocks;
1128
import org.mockito.Mock;
1229
import org.mockito.Spy;
@@ -15,6 +32,26 @@
1532
@ExtendWith(MockitoExtension.class)
1633
class MessageGatewayTest {
1734

35+
public static final long ID = 25L;
36+
public static final MessageEntity MESSAGE_ENTITY = MessageEntity.builder()
37+
.id(ID)
38+
.channel(CommunicationChannelEntity.EMAIL)
39+
.recipient(RecipientEntity.builder()
40+
.phoneNumber("78924")
41+
.build())
42+
.body("Test").build();
43+
public static final Message MESSAGE = Message.builder()
44+
.id(MessageId.from(ID))
45+
.channel(CommunicationChannel.WHATSAPP)
46+
.recipient(Recipient.builder()
47+
.phone(Phone.from("78924", "1243243"))
48+
.build())
49+
.chats(List.of(Chat.builder()
50+
.status(Status.SENT)
51+
.date(ZonedDateTime.now())
52+
.build()))
53+
.body(MessageBody.from("Hello!")).build();
54+
1855
@InjectMocks
1956
private MessageGateway messageGateway;
2057
@Mock
@@ -26,6 +63,50 @@ class MessageGatewayTest {
2663
void wheDeleteThenCallRepository() {
2764
messageGateway.delete(MessageId.from(25L));
2865
verify(repository).deleteById(25L);
66+
verifyNoMoreInteractions(repository);
67+
}
68+
69+
@Test
70+
void wheFindThenCallRepository() {
71+
when(repository.findById(ID)).thenReturn(Optional.of(MESSAGE_ENTITY));
72+
var result = messageGateway.find(MessageId.from(ID));
73+
assertThat(result).isNotEmpty()
74+
.get()
75+
.satisfies(r -> assertThat(r.getId()).isEqualTo(Optional.of(MessageId.from(ID))));
76+
verify(repository).findById(ID);
77+
verifyNoMoreInteractions(repository);
78+
}
79+
80+
@Test
81+
void wheExistsThenCallRepository() {
82+
when(repository.existsById(ID)).thenReturn(true);
83+
var result = messageGateway.exists(MessageId.from(ID));
84+
assertThat(result).isTrue();
85+
verify(repository).existsById(ID);
86+
verifyNoMoreInteractions(repository);
87+
}
88+
89+
@Test
90+
void wheDoNotExistsThenCallRepository() {
91+
when(repository.existsById(ID)).thenReturn(false);
92+
var result = messageGateway.exists(MessageId.from(ID));
93+
assertThat(result).isFalse();
94+
verify(repository).existsById(ID);
95+
verifyNoMoreInteractions(repository);
96+
}
97+
98+
@Test
99+
void wheCreateThenCallRepository() {
100+
var result = messageGateway.create(MESSAGE);
101+
assertThat(result).isNotNull()
102+
.satisfies(r -> assertThat(r.getId()).isEqualTo(Optional.of(MessageId.from(ID))));
103+
ArgumentCaptor<MessageEntity> captor = ArgumentCaptor.forClass(MessageEntity.class);
104+
verify(repository).save(captor.capture());
105+
verifyNoMoreInteractions(repository);
106+
MessageEntity savedMessage = captor.getValue();
107+
assertThat(savedMessage.getChats()).hasSize(1).first().satisfies(
108+
c -> assertThat(c.getMessage()).isNotNull()
109+
);
29110
}
30111

31112
}

adapter/output/jpa-mysql-repository/src/test/java/br/com/helpdev/output/repository/entity/MessageEntityRepositoryTest.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package br.com.helpdev.output.repository.entity;
22

3+
import static org.assertj.core.api.Assertions.assertThat;
34
import static org.mockito.Mockito.verify;
45
import static org.mockito.Mockito.verifyNoMoreInteractions;
56
import static org.mockito.Mockito.when;
@@ -9,7 +10,6 @@
910
import org.junit.jupiter.api.extension.ExtendWith;
1011
import org.mockito.InjectMocks;
1112
import org.mockito.Mock;
12-
import org.mockito.Mockito;
1313
import org.mockito.junit.jupiter.MockitoExtension;
1414

1515
@ExtendWith(MockitoExtension.class)
@@ -30,4 +30,42 @@ void whenDeleteThenCallEntityManager() {
3030
verifyNoMoreInteractions(entityManager);
3131
}
3232

33+
@Test
34+
void whenExistsThenCallEntityManager() {
35+
var message = MessageEntity.builder().id(3L).build();
36+
when(entityManager.find(MessageEntity.class, 3L)).thenReturn(message);
37+
var result = repository.existsById(3L);
38+
assertThat(result).isTrue();
39+
verify(entityManager).find(MessageEntity.class, 3L);
40+
verifyNoMoreInteractions(entityManager);
41+
}
42+
43+
@Test
44+
void whenDoNotExistsThenCallEntityManager() {
45+
var result = repository.existsById(3L);
46+
assertThat(result).isFalse();
47+
verify(entityManager).find(MessageEntity.class, 3L);
48+
verifyNoMoreInteractions(entityManager);
49+
}
50+
51+
@Test
52+
void whenFindThenCallEntityManager() {
53+
var message = MessageEntity.builder().id(4L).build();
54+
when(entityManager.find(MessageEntity.class, 4L)).thenReturn(message);
55+
var result = repository.findById(4L);
56+
assertThat(result).isNotNull()
57+
.get()
58+
.satisfies(r -> assertThat(r.getId()).isEqualTo(4L));
59+
verify(entityManager).find(MessageEntity.class, 4L);
60+
verifyNoMoreInteractions(entityManager);
61+
}
62+
63+
@Test
64+
void whenCreateThenCallEntityManager() {
65+
var message = MessageEntity.builder().id(4L).build();
66+
repository.save(message);
67+
verify(entityManager).persist(message);
68+
verifyNoMoreInteractions(entityManager);
69+
}
70+
3371
}

0 commit comments

Comments
 (0)