1 changed files with 81 additions and 0 deletions
@ -0,0 +1,81 @@ |
|||
package com.example.apispringgradleb2boost.restdoc; |
|||
|
|||
import com.example.apispringgradleb2boost.ApiSpringGradleB2boostApplication; |
|||
import com.example.apispringgradleb2boost.model.Partner; |
|||
import com.fasterxml.jackson.databind.ObjectMapper; |
|||
import org.junit.jupiter.api.BeforeEach; |
|||
import org.junit.jupiter.api.DisplayName; |
|||
import org.junit.jupiter.api.Test; |
|||
import org.junit.jupiter.api.extension.ExtendWith; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.boot.test.context.SpringBootTest; |
|||
import org.springframework.restdocs.RestDocumentationContextProvider; |
|||
import org.springframework.restdocs.RestDocumentationExtension; |
|||
import org.springframework.restdocs.constraints.ConstraintDescriptions; |
|||
import org.springframework.test.context.junit.jupiter.SpringExtension; |
|||
import org.springframework.test.web.servlet.MockMvc; |
|||
|
|||
import org.springframework.test.web.servlet.setup.MockMvcBuilders; |
|||
import org.springframework.web.context.WebApplicationContext; |
|||
|
|||
import static org.hamcrest.Matchers.containsString; |
|||
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; |
|||
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration; |
|||
import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get; |
|||
import static org.springframework.restdocs.operation.preprocess.Preprocessors.*; |
|||
import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; |
|||
import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; |
|||
import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; |
|||
import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; |
|||
|
|||
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; |
|||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; |
|||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; |
|||
import static org.springframework.util.StringUtils.collectionToDelimitedString; |
|||
|
|||
@ExtendWith({RestDocumentationExtension.class, SpringExtension.class}) |
|||
@SpringBootTest(classes = ApiSpringGradleB2boostApplication.class) |
|||
public class ApiPartnerDocIntegrationTest { |
|||
|
|||
private MockMvc mockMvc; |
|||
|
|||
@Autowired |
|||
private ObjectMapper objectMapper; |
|||
|
|||
@BeforeEach |
|||
public void setup(WebApplicationContext webApplicationContext, |
|||
RestDocumentationContextProvider restDocumentation) { |
|||
this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext) |
|||
.apply(documentationConfiguration(restDocumentation)) |
|||
.build(); |
|||
} |
|||
|
|||
@Test |
|||
@DisplayName("Example GET /partners") |
|||
public void whenGetPartners_thenSuccessful() throws Exception { |
|||
this.mockMvc.perform(get("/partners")) |
|||
.andDo(print()) |
|||
.andExpect(status().isOk()) |
|||
.andExpect(content().string(containsString("B2boost"))) |
|||
.andDo(document("getAllPartners")); |
|||
} |
|||
|
|||
@Test |
|||
@DisplayName("Example GET /partner/1") |
|||
public void whenGetPartnerById_thenSuccessful() throws Exception { |
|||
ConstraintDescriptions desc = new ConstraintDescriptions(Partner.class); |
|||
this.mockMvc.perform(get("/partner/{id}", 1)) |
|||
.andExpect(status().isOk()) |
|||
.andDo(document("getAPartner", preprocessRequest(prettyPrint()), |
|||
preprocessResponse(prettyPrint()), |
|||
pathParameters(parameterWithName("id").description("id of partner to be searched")), |
|||
responseFields(fieldWithPath("id") |
|||
.description("The id of the partner" + |
|||
collectionToDelimitedString(desc.descriptionsForProperty("id"), ". ")), |
|||
fieldWithPath("name").description("The name of the partner"), |
|||
fieldWithPath("reference").description("The unique reference of the partner"), |
|||
fieldWithPath("locale").description("A valid Locale of the partner"), |
|||
fieldWithPath("expirationTime").description("The ISO-8601 UTC date time when the partner is going to expire")))); |
|||
} |
|||
} |
Loading…
Reference in new issue