articles-backend-app
59 строк · 2.3 Кб
1package by.andd3dfx.controllers;
2
3import static org.hamcrest.CoreMatchers.containsString;
4import static org.hamcrest.CoreMatchers.is;
5import static org.hamcrest.MatcherAssert.assertThat;
6import static org.hamcrest.Matchers.hasSize;
7import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
8import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
9import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
10import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;
11
12import by.andd3dfx.ArticlesBackendAppApplication;
13import org.junit.jupiter.api.BeforeEach;
14import org.junit.jupiter.api.Test;
15import org.springframework.beans.factory.annotation.Autowired;
16import org.springframework.boot.test.context.SpringBootTest;
17import org.springframework.test.context.web.WebAppConfiguration;
18import org.springframework.test.web.servlet.MockMvc;
19import org.springframework.web.context.WebApplicationContext;
20
21@SpringBootTest(classes = ArticlesBackendAppApplication.class)
22@WebAppConfiguration
23class AuthorControllerTest {
24
25private MockMvc mockMvc;
26
27@Autowired
28private WebApplicationContext webApplicationContext;
29
30@BeforeEach
31public void setup() {
32mockMvc = webAppContextSetup(webApplicationContext)
33.build();
34}
35
36@Test
37public void readAuthor() throws Exception {
38mockMvc.perform(get("/api/v1/authors/1"))
39.andExpect(status().isOk())
40.andExpect(jsonPath("$.id", is(1)))
41.andExpect(jsonPath("$.firstName", is("Тихон")))
42.andExpect(jsonPath("$.lastName", is("Задонский")));
43}
44
45@Test
46public void readAbsentAuthor() throws Exception {
47String message = mockMvc.perform(get("/api/v1/authors/345"))
48.andExpect(status().isNotFound())
49.andReturn().getResolvedException().getMessage();
50assertThat(message, containsString("Could not find an author by id=345"));
51}
52
53@Test
54public void readAuthors() throws Exception {
55mockMvc.perform(get("/api/v1/authors"))
56.andExpect(status().isOk())
57.andExpect(jsonPath("$", hasSize(11)));
58}
59}
60