11package io .hexlet .blog .controller .api ;
22
3- import static net .javacrumbs .jsonunit .assertj .JsonAssertions .assertThatJson ;
4- import static org .assertj .core .api .Assertions .assertThat ;
5- import static org .junit .jupiter .api .Assertions .assertNotNull ;
6- import static org .springframework .security .test .web .servlet .request .SecurityMockMvcRequestPostProcessors .jwt ;
7- import static org .springframework .security .test .web .servlet .setup .SecurityMockMvcConfigurers .springSecurity ;
8- import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .delete ;
9- import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .get ;
10- import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .post ;
11- import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .put ;
12- import static org .springframework .test .web .servlet .result .MockMvcResultMatchers .status ;
13-
143import com .fasterxml .jackson .core .type .TypeReference ;
4+ import com .fasterxml .jackson .databind .ObjectMapper ;
155import io .hexlet .blog .dto .PostDTO ;
6+ import io .hexlet .blog .dto .PostUpdateDTO ;
7+ import io .hexlet .blog .mapper .PostMapper ;
8+ import io .hexlet .blog .model .Post ;
9+ import io .hexlet .blog .model .User ;
10+ import io .hexlet .blog .repository .PostCommentRepository ;
11+ import io .hexlet .blog .repository .PostRepository ;
12+ import io .hexlet .blog .repository .UserRepository ;
13+ import io .hexlet .blog .util .ModelGenerator ;
1614import org .assertj .core .api .Assertions ;
1715import org .instancio .Instancio ;
1816import org .junit .jupiter .api .BeforeEach ;
2422import org .springframework .http .MediaType ;
2523import org .springframework .security .test .web .servlet .request .SecurityMockMvcRequestPostProcessors .JwtRequestPostProcessor ;
2624import org .springframework .test .web .servlet .MockMvc ;
27-
28- import com .fasterxml .jackson .databind .ObjectMapper ;
29-
30- import io .hexlet .blog .dto .PostUpdateDTO ;
31- import io .hexlet .blog .mapper .PostMapper ;
32- import io .hexlet .blog .model .Post ;
33- import io .hexlet .blog .repository .PostRepository ;
34- import io .hexlet .blog .util .ModelGenerator ;
35- import io .hexlet .blog .util .UserUtils ;
3625import org .springframework .test .web .servlet .setup .MockMvcBuilders ;
3726import org .springframework .web .context .WebApplicationContext ;
3827
3928import java .nio .charset .StandardCharsets ;
4029import java .util .List ;
4130
31+ import static net .javacrumbs .jsonunit .assertj .JsonAssertions .assertThatJson ;
32+ import static org .assertj .core .api .Assertions .assertThat ;
33+ import static org .junit .jupiter .api .Assertions .assertNotNull ;
34+ import static org .springframework .security .test .web .servlet .request .SecurityMockMvcRequestPostProcessors .jwt ;
35+ import static org .springframework .security .test .web .servlet .setup .SecurityMockMvcConfigurers .springSecurity ;
36+ import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .delete ;
37+ import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .get ;
38+ import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .post ;
39+ import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .put ;
40+ import static org .springframework .test .web .servlet .result .MockMvcResultMatchers .status ;
41+
4242
4343@ SpringBootTest
4444@ AutoConfigureMockMvc
@@ -63,25 +63,36 @@ public class PostsControllerTest {
6363 private PostRepository postRepository ;
6464
6565 @ Autowired
66- private UserUtils userUtils ;
66+ private UserRepository userRepository ;
67+
68+ @ Autowired
69+ private PostCommentRepository postCommentRepository ;
6770
6871 private JwtRequestPostProcessor token ;
6972
7073 private Post testPost ;
7174
75+ private User testUser ;
76+
7277
7378 @ BeforeEach
7479 public void setUp () {
80+ postCommentRepository .deleteAll ();
81+ postRepository .deleteAll ();
82+ userRepository .deleteAll ();
83+
7584 mockMvc = MockMvcBuilders .webAppContextSetup (wac )
7685 .defaultResponseCharacterEncoding (StandardCharsets .UTF_8 )
7786 .apply (springSecurity ())
7887 .build ();
7988
80- token =
jwt ().
jwt (
builder ->
builder .
subject (
"[email protected] " ));
89+ testUser = Instancio .of (modelGenerator .getUserModel ()).create ();
90+ userRepository .save (testUser );
91+ token = jwt ().jwt (builder -> builder .subject (testUser .getEmail ()));
8192
8293 testPost = Instancio .of (modelGenerator .getPostModel ())
8394 .create ();
84- testPost .setAuthor (userUtils . getTestUser () );
95+ testPost .setAuthor (testUser );
8596 }
8697
8798 @ Test
@@ -113,7 +124,7 @@ public void testCreate() throws Exception {
113124 mockMvc .perform (request )
114125 .andExpect (status ().isCreated ());
115126
116- var post = postRepository .findBySlug (testPost .getSlug ()).get ( );
127+ var post = postRepository .findBySlug (testPost .getSlug ()).orElse ( null );
117128 assertNotNull (post );
118129 assertThat (post .getName ()).isEqualTo (testPost .getName ());
119130 }
@@ -133,7 +144,7 @@ public void testUpdate() throws Exception {
133144 mockMvc .perform (request )
134145 .andExpect (status ().isOk ());
135146
136- testPost = postRepository .findById (testPost .getId ()).get ();
147+ testPost = postRepository .findById (testPost .getId ()).orElseThrow ();
137148 assertThat (testPost .getName ()).isEqualTo (data .getName ().get ());
138149 }
139150
@@ -152,7 +163,7 @@ public void testUpdateFailed() throws Exception {
152163 mockMvc .perform (request )
153164 .andExpect (status ().isForbidden ());
154165
155- var actualPost = postRepository .findById (testPost .getId ()).get ();
166+ var actualPost = postRepository .findById (testPost .getId ()).orElseThrow ();
156167 assertThat (actualPost .getName ()).isEqualTo (testPost .getName ());
157168 }
158169
0 commit comments