55import static com .github .throyer .common .springboot .utils .Random .password ;
66import static com .github .throyer .common .springboot .utils .Random .randomUser ;
77import static com .github .throyer .common .springboot .utils .TokenUtils .token ;
8- import static org .hamcrest .Matchers .greaterThan ;
9- import static org .hamcrest .Matchers .hasSize ;
108import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .delete ;
119import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .get ;
1210import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .post ;
1311import static org .springframework .test .web .servlet .result .MockMvcResultHandlers .print ;
1412import static org .springframework .test .web .servlet .result .MockMvcResultMatchers .jsonPath ;
1513import static org .springframework .test .web .servlet .result .MockMvcResultMatchers .status ;
1614
15+ import static org .springframework .http .HttpHeaders .AUTHORIZATION ;
16+ import static org .springframework .http .HttpHeaders .CONTENT_TYPE ;
17+ import static org .springframework .http .MediaType .APPLICATION_JSON ;
18+
19+ import static java .lang .String .format ;
20+ import static org .hamcrest .Matchers .*;
21+
1722import java .util .List ;
1823import java .util .Map ;
1924
2934import org .springframework .boot .test .autoconfigure .web .servlet .AutoConfigureMockMvc ;
3035import org .springframework .boot .test .context .SpringBootTest ;
3136import org .springframework .boot .test .context .SpringBootTest .WebEnvironment ;
32- import org .springframework .http .HttpHeaders ;
33- import org .springframework .http .MediaType ;
37+
3438import org .springframework .test .annotation .DirtiesContext ;
3539import org .springframework .test .annotation .DirtiesContext .ClassMode ;
3640import org .springframework .test .web .servlet .MockMvc ;
@@ -75,7 +79,7 @@ public void should_save_a_new_user() throws Exception {
7579
7680 var request = post ("/api/users" )
7781 .content (json )
78- .header (HttpHeaders . CONTENT_TYPE , MediaType . APPLICATION_JSON );
82+ .header (CONTENT_TYPE , APPLICATION_JSON );
7983
8084 api .perform (request )
8185 .andDo (print ())
@@ -95,7 +99,7 @@ public void should_return_400_saving_user_without_required_fields() throws Excep
9599
96100 var request = post ("/api/users" )
97101 .content (payload )
98- .header (HttpHeaders . CONTENT_TYPE , MediaType . APPLICATION_JSON );
102+ .header (CONTENT_TYPE , APPLICATION_JSON );
99103
100104 api .perform (request )
101105 .andDo (print ())
@@ -111,7 +115,7 @@ public void should_list_users() throws Exception {
111115 repository .saveAll (List .of (randomUser (), randomUser (), randomUser (), randomUser ()));
112116
113117 var request = get ("/api/users" )
114- .header (HttpHeaders . AUTHORIZATION , header )
118+ .header (AUTHORIZATION , header )
115119 .queryParam ("page" , "0" )
116120 .queryParam ("size" , "10" );
117121
@@ -120,6 +124,39 @@ public void should_list_users() throws Exception {
120124 .andExpect (jsonPath ("$.content" ).isArray ())
121125 .andExpect (jsonPath ("$.content" , hasSize (greaterThan (3 ))));
122126 }
127+
128+ @ Test
129+ @ DisplayName ("Must not list deleted users." )
130+ public void must_not_list_deleted_users () throws Exception {
131+
132+ var user = repository .save (randomUser ());
133+ var id = user .getId ();
134+ var expression = format ("$.content[?(@.id == %s)].id" , id );
135+
136+ var first = get ("/api/users" )
137+ .header (AUTHORIZATION , header )
138+ .queryParam ("page" , "0" )
139+ .queryParam ("size" , "10" );
140+
141+ api .perform (first ).andDo (print ())
142+ .andExpect (status ().isOk ())
143+ .andExpect (jsonPath (expression , hasItem (id .intValue ())));
144+
145+ var second = delete (String .format ("/api/users/%s" , id ))
146+ .header (AUTHORIZATION , header );
147+
148+ api .perform (second ).andDo (print ())
149+ .andExpect (status ().isNoContent ());
150+
151+ var third = get ("/api/users" )
152+ .header (AUTHORIZATION , header )
153+ .queryParam ("page" , "0" )
154+ .queryParam ("size" , "10" );
155+
156+ api .perform (third ).andDo (print ())
157+ .andExpect (status ().isOk ())
158+ .andExpect (jsonPath (format ("$.content[?(@.id == %s)].id" , id .intValue ())).isEmpty ());
159+ }
123160
124161 @ Test
125162 @ DisplayName ("Deve deletar usuário." )
@@ -128,7 +165,7 @@ public void should_delete_user() throws Exception {
128165 var user = repository .save (randomUser ());
129166
130167 var request = delete (String .format ("/api/users/%s" , user .getId ()))
131- .header (HttpHeaders . AUTHORIZATION , header );
168+ .header (AUTHORIZATION , header );
132169
133170 api .perform (request ).andDo (print ())
134171 .andExpect (status ().isNoContent ());
@@ -140,13 +177,13 @@ public void should_return_404_after_delete_user() throws Exception {
140177 var user = repository .save (randomUser ());
141178
142179 var fist = delete (String .format ("/api/users/%s" , user .getId ()))
143- .header (HttpHeaders . AUTHORIZATION , header );
180+ .header (AUTHORIZATION , header );
144181
145182 api .perform (fist ).andDo (print ())
146183 .andExpect (status ().isNoContent ());
147184
148185 var second = delete (String .format ("/api/users/%s" , user .getId ()))
149- .header (HttpHeaders . AUTHORIZATION , header );
186+ .header (AUTHORIZATION , header );
150187
151188 api .perform (second ).andDo (print ())
152189 .andExpect (status ().isNotFound ());
@@ -164,7 +201,7 @@ public void should_return_400_after_save_same_email() throws Exception {
164201
165202 var first = post ("/api/users" )
166203 .content (json )
167- .header (HttpHeaders . CONTENT_TYPE , MediaType . APPLICATION_JSON );
204+ .header (CONTENT_TYPE , APPLICATION_JSON );
168205
169206 api .perform (first )
170207 .andDo (print ())
@@ -174,7 +211,7 @@ public void should_return_400_after_save_same_email() throws Exception {
174211
175212 var second = post ("/api/users" )
176213 .content (json )
177- .header (HttpHeaders . CONTENT_TYPE , MediaType . APPLICATION_JSON );
214+ .header (CONTENT_TYPE , APPLICATION_JSON );
178215
179216 api .perform (second )
180217 .andDo (print ())
0 commit comments