-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAdminLicenseQuestionControllerTest.java
90 lines (78 loc) · 3.83 KB
/
AdminLicenseQuestionControllerTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package com.comssa.api.question.license;
import com.comssa.api.ControllerTest;
import com.comssa.api.question.controller.rest.license.LicenseQuestionMakeController;
import com.comssa.api.question.service.rest.license.implement.AdminLicenseQuestionMakeService;
import com.comssa.persistence.question.domain.license.LicenseCategory;
import com.comssa.persistence.question.domain.license.LicenseMultipleChoiceQuestion;
import com.comssa.persistence.question.dto.common.response.ResponseMultipleChoiceQuestionDto;
import com.comssa.persistence.question.dto.license.request.RequestMakeLicenseMultipleChoiceQuestionDto;
import com.epages.restdocs.apispec.MockMvcRestDocumentationWrapper;
import com.epages.restdocs.apispec.ResourceSnippetParameters;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation;
import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import java.util.ArrayList;
import java.util.List;
import static com.epages.restdocs.apispec.ResourceDocumentation.resource;
import static org.mockito.ArgumentMatchers.any;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
@WebMvcTest(LicenseQuestionMakeController.class)
@ContextConfiguration(classes = LicenseQuestionMakeController.class)
@DisplayName("단위 테스트 - 자격증 문제 생성")
class AdminLicenseQuestionControllerTest extends ControllerTest {
private final String tag = "자격증 문제";
private final String baseApiUrl = "/admin/question/license/multiple";
@MockBean
private AdminLicenseQuestionMakeService adminLicenseQuestionMakeService;
private LicenseMultipleChoiceQuestion licenseMultipleChoiceQuestion;
private List<LicenseMultipleChoiceQuestion> licenseMultipleChoiceQuestions;
private ResponseMultipleChoiceQuestionDto responseMultipleChoiceQuestionDto;
private List<ResponseMultipleChoiceQuestionDto> responseMultipleChoiceQuestionDtos;
@BeforeEach
void setUp() {
licenseMultipleChoiceQuestions = new ArrayList<>();
responseMultipleChoiceQuestionDtos = new ArrayList<>();
licenseMultipleChoiceQuestion = LicenseMultipleChoiceQuestion.makeForTest("test");
licenseMultipleChoiceQuestions.add(licenseMultipleChoiceQuestion);
responseMultipleChoiceQuestionDto = ResponseMultipleChoiceQuestionDto.from(licenseMultipleChoiceQuestion);
responseMultipleChoiceQuestionDtos.add(responseMultipleChoiceQuestionDto);
}
@Test
@DisplayName("생성")
void makeLicenseQuestion() throws Exception {
final String path = baseApiUrl;
final String document_Name = "성공";
Mockito.when(adminLicenseQuestionMakeService
.makeLicenseMultipleChoiceQuestion(any())).thenReturn(responseMultipleChoiceQuestionDtos);
mockMvc.perform(RestDocumentationRequestBuilders.post(path)
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(RequestMakeLicenseMultipleChoiceQuestionDto.forTest(
"test",
LicenseCategory.SQLD,
licenseMultipleChoiceQuestions))))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers
.content()
.json(objectMapper.writeValueAsString(responseMultipleChoiceQuestionDtos)))
.andDo(print())
.andDo(MockMvcRestDocumentation.document(
document_Name
))
.andDo(MockMvcRestDocumentationWrapper.document(
document_Name, resource(
ResourceSnippetParameters.builder()
.tag(tag)
.description("자격증")
.build()
)
));
}
}