11package br .com .helpdev .controller ;
22
3- import static org .junit .jupiter .api .Assertions .*;
3+ import static org .assertj .core .api .Assertions .assertThat ;
4+ import static org .mockito .ArgumentMatchers .any ;
5+ import static org .mockito .Mockito .never ;
6+ import static org .mockito .Mockito .verify ;
7+ import static org .mockito .Mockito .when ;
48
9+ import br .com .helpdev .controller .dto .MessageCreateDto ;
10+ import br .com .helpdev .controller .dto .MessageResponseDto ;
11+ import br .com .helpdev .controller .dto .RecipientDto ;
12+ import br .com .helpdev .controller .mapper .ControllerMessageMapper ;
13+ import br .com .helpdev .domain .Message ;
14+ import br .com .helpdev .domain .Recipient ;
15+ import br .com .helpdev .domain .exception .NotificationException ;
16+ import br .com .helpdev .domain .vo .MessageBody ;
17+ import br .com .helpdev .domain .vo .MessageId ;
18+ import br .com .helpdev .domain .vo .Phone ;
19+ import br .com .helpdev .usecase .DeleteRequestNotification ;
20+ import br .com .helpdev .usecase .FindRequestNotification ;
21+ import br .com .helpdev .usecase .PushRequestNotification ;
22+ import java .util .Collections ;
23+ import org .junit .jupiter .api .Test ;
24+ import org .junit .jupiter .api .extension .ExtendWith ;
25+ import org .mockito .InjectMocks ;
26+ import org .mockito .Mock ;
27+ import org .mockito .Spy ;
28+ import org .mockito .junit .jupiter .MockitoExtension ;
29+
30+ @ ExtendWith (MockitoExtension .class )
531class MessageControllerTest {
632
7- }
33+ public static final RecipientDto RECIPIENT_DTO = RecipientDto .builder ()
34+ .name ("jorge" )
35+ .phoneNumber ("123" )
36+ .build ();
37+ public static final Recipient RECIPIENT = Recipient .builder ()
38+ .name ("jorge" )
39+ .phone (Phone .newNumber ("123" ))
40+ .build ();
41+
42+ @ InjectMocks
43+ private MessageController messageController ;
44+ @ Mock
45+ private FindRequestNotification findRequestNotification ;
46+ @ Mock
47+ private PushRequestNotification pushRequestNotification ;
48+ @ Mock
49+ private DeleteRequestNotification deleteRequestNotification ;
50+ @ Spy
51+ private final ControllerMessageMapper mapper = new ControllerMessageMapper ();
52+
53+ @ Test
54+ public void whenDeleteTheReturn204 () throws NotificationException {
55+ var id = 1L ;
56+ var messageId = MessageId .from (id );
57+ var response = messageController .delete (id );
58+ assertThat (response .getStatus ()).isEqualTo (204 );
59+ verify (deleteRequestNotification ).delete (messageId );
60+ verify (mapper , never ()).toDomain (any ());
61+ verify (mapper , never ()).toDto (any ());
62+ }
63+
64+ @ Test
65+ public void whenFindByIdTheReturn200 () throws NotificationException {
66+ var id = 2L ;
67+ var messageId = MessageId .from (id );
68+ when (findRequestNotification .find (messageId )).thenReturn (Message .builder ()
69+ .recipient (RECIPIENT )
70+ .id (messageId )
71+ .body (MessageBody .from ("body" ))
72+ .build ());
73+ var response = messageController .find (id );
74+ assertThat (response .getEntity ()).isEqualTo (MessageResponseDto .builder ()
75+ .id (id )
76+ .recipient (RECIPIENT_DTO )
77+ .body ("body" )
78+ .chats (Collections .emptyList ())
79+ .build ());
80+ assertThat (response .getStatus ()).isEqualTo (200 );
81+ verify (findRequestNotification ).find (messageId );
82+ verify (mapper , never ()).toDomain (any ());
83+ verify (mapper ).toDto (any ());
84+ }
85+
86+ @ Test
87+ public void whenCreateTheReturn201 () throws NotificationException {
88+ var id = 4L ;
89+ var messageId = MessageId .from (id );
90+ var body = "Olá" ;
91+ var messageBody = MessageBody .from (body );
92+ when (pushRequestNotification .push (any ())).thenReturn (Message .builder ()
93+ .recipient (RECIPIENT )
94+ .id (messageId )
95+ .body (messageBody )
96+ .build ());
97+ var response = messageController .create (MessageCreateDto .builder ()
98+ .body (body )
99+ .recipient (RECIPIENT_DTO )
100+ .build ());
101+ assertThat (response .getEntity ()).isEqualTo (MessageResponseDto .builder ()
102+ .id (id ).recipient (RECIPIENT_DTO )
103+ .body (body )
104+ .chats (Collections .emptyList ())
105+ .build ());
106+ assertThat (response .getStatus ()).isEqualTo (201 );
107+ verify (pushRequestNotification ).push (any ());
108+ verify (mapper ).toDomain (any ());
109+ verify (mapper ).toDto (any ());
110+ }
111+
112+ }
0 commit comments