Merge branch 'master' into master-web

This commit is contained in:
MangKyu
2022-02-01 02:44:39 +09:00
13 changed files with 72 additions and 92 deletions

View File

@@ -1,8 +1,9 @@
package com.mangkyu.employment.interview.app.answer.constants;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class AnswerConstants {
public static final int MAX_ANSWER_SIZE = 5000;

View File

@@ -1,8 +1,9 @@
package com.mangkyu.employment.interview.app.file.constants;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class FileConstants {
public static final String FILE_API_PREFIX = "/api/file";

View File

@@ -1,8 +1,9 @@
package com.mangkyu.employment.interview.app.quiz.constants;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class QuizConstants {
public static final int DEFAULT_QUIZ_SIZE = 3;

View File

@@ -7,6 +7,7 @@ import com.mangkyu.employment.interview.app.quiz.dto.GetQuizResponse;
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
import com.mangkyu.employment.interview.enums.common.EnumMapperValue;
import com.mangkyu.employment.interview.enums.value.QuizLevel;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
@@ -14,7 +15,7 @@ import java.sql.Timestamp;
import java.util.List;
import java.util.stream.Collectors;
@NoArgsConstructor
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class QuizDtoConverter {
public static GetAnswerResponse convert(final Answer answer) {

View File

@@ -35,12 +35,14 @@ public class QuizRepositoryImpl implements QuizRepositoryCustom {
.where(quizLevelsIn(qQuiz, condition.getLevels()))
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.where(qQuiz.answer.isNotNull())
.fetch();
final long count = query.selectFrom(qQuiz)
.where(titleLike(qQuiz, condition.getQuery()))
.where(quizCategoriesIn(qQuiz, condition.getCategories()))
.where(quizLevelsIn(qQuiz, condition.getLevels()))
.where(qQuiz.answer.isNotNull())
.stream().count();
return new PageImpl<>(quizList, pageable, count);

View File

@@ -1,11 +1,12 @@
package com.mangkyu.employment.interview.utils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@NoArgsConstructor
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class DateUtils {
public static String getCurrentDate() {

View File

@@ -1,5 +1,6 @@
package com.mangkyu.employment.interview.utils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.springframework.util.FileCopyUtils;
import org.springframework.util.ResourceUtils;
@@ -10,7 +11,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
@NoArgsConstructor
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class FileUtils {
public static String readFileText(final String filePath) throws IOException {

View File

@@ -4,20 +4,17 @@ import com.google.gson.Gson;
import com.mangkyu.employment.interview.app.answer.dto.AddAnswerRequest;
import com.mangkyu.employment.interview.app.answer.dto.GetAnswerResponse;
import com.mangkyu.employment.interview.app.answer.service.AnswerService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.beans.factory.annotation.Autowired;
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.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.nio.charset.StandardCharsets;
import java.util.UUID;
@@ -27,21 +24,14 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@ExtendWith(MockitoExtension.class)
@WebMvcTest(AnswerController.class)
class AnswerControllerTest {
@InjectMocks
private AnswerController target;
@Mock
private AnswerService answerService;
@Autowired
private MockMvc mockMvc;
@BeforeEach
public void init() {
mockMvc = MockMvcBuilders.standaloneSetup(target).build();
}
@MockBean
private AnswerService answerService;
@Test
public void getAnswer() throws Exception {

View File

@@ -6,38 +6,30 @@ import com.mangkyu.employment.interview.enums.factory.EnumMapperFactory;
import com.mangkyu.employment.interview.enums.value.QuizCategory;
import com.mangkyu.employment.interview.enums.value.QuizDay;
import com.mangkyu.employment.interview.enums.value.QuizLevel;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Spy;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.context.annotation.Import;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@ExtendWith(MockitoExtension.class)
@WebMvcTest(EnumsController.class)
@Import(EnumMapperConfig.class)
class EnumsControllerTest {
@InjectMocks
private EnumsController target;
@Spy
private EnumMapperFactory enumMapperFactory = new EnumMapperConfig().enumMapperFactory();
@SpyBean
private EnumMapperFactory enumMapperFactory;
@Autowired
private MockMvc mockMvc;
@BeforeEach
public void init() {
mockMvc = MockMvcBuilders.standaloneSetup(target).build();
}
@Test
public void getEnumsQuizCategoryList() throws Exception {
// given

View File

@@ -1,6 +1,7 @@
package com.mangkyu.employment.interview.app.file.controller;
import com.google.gson.Gson;
import com.mangkyu.employment.interview.app.enums.controller.EnumsController;
import com.mangkyu.employment.interview.app.file.dto.FileUploadResponse;
import com.mangkyu.employment.interview.app.file.service.FileService;
import org.junit.jupiter.api.BeforeEach;
@@ -9,6 +10,9 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.Resource;
import org.springframework.mock.web.MockMultipartFile;
@@ -25,21 +29,14 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@ExtendWith(MockitoExtension.class)
@WebMvcTest(FileController.class)
class FileControllerTest {
@InjectMocks
private FileController target;
@Mock
private FileService fileService;
@Autowired
private MockMvc mockMvc;
@BeforeEach
public void init() {
mockMvc = MockMvcBuilders.standaloneSetup(target).build();
}
@MockBean
private FileService fileService;
@Test
public void uploadFileSuccess() throws Exception {

View File

@@ -9,15 +9,13 @@ import com.mangkyu.employment.interview.enums.common.EnumMapperType;
import com.mangkyu.employment.interview.enums.common.EnumMapperValue;
import com.mangkyu.employment.interview.enums.value.QuizCategory;
import com.mangkyu.employment.interview.enums.value.QuizLevel;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
@@ -25,7 +23,6 @@ import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.util.Arrays;
import java.util.Collections;
@@ -37,21 +34,14 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@ExtendWith(MockitoExtension.class)
@WebMvcTest(QuizController.class)
class QuizControllerTest {
@InjectMocks
private QuizController target;
@Mock
private QuizService quizService;
@Autowired
private MockMvc mockMvc;
@BeforeEach
public void init() {
mockMvc = MockMvcBuilders.standaloneSetup(target).build();
}
@MockBean
private QuizService quizService;
@Test
public void getQuiz() throws Exception {

View File

@@ -1,6 +1,8 @@
package com.mangkyu.employment.interview.app.quiz.repository;
import com.mangkyu.employment.interview.JpaTestConfig;
import com.mangkyu.employment.interview.app.answer.entity.Answer;
import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository;
import com.mangkyu.employment.interview.app.quiz.dto.QuizSearchCondition;
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
import com.mangkyu.employment.interview.enums.value.QuizCategory;
@@ -25,6 +27,8 @@ class QuizRepositoryTest {
@Autowired
private QuizRepository quizRepository;
@Autowired
private AnswerRepository answerRepository;
@ParameterizedTest
@MethodSource("validQuizParameters")
@@ -321,14 +325,23 @@ class QuizRepositoryTest {
}
private void initForPaging(final QuizCategory quizCategory) {
quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
quizRepository.save(EntityCreationUtils.quiz("quiz", QuizCategory.ALGORITHM, Collections.singletonList(QuizLevel.SENIOR)));
quizRepository.save(EntityCreationUtils.quiz("quiz", QuizCategory.DATABASE, Collections.singletonList(QuizLevel.SENIOR)));
final Quiz savedQuiz1 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
final Quiz savedQuiz2 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
final Quiz savedQuiz3 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
final Quiz savedQuiz4 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
final Quiz savedQuiz5 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
final Quiz savedQuiz6 = quizRepository.save(EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR)));
final Quiz savedQuiz7 = quizRepository.save(EntityCreationUtils.quiz("quiz", QuizCategory.ALGORITHM, Collections.singletonList(QuizLevel.SENIOR)));
final Quiz savedQuiz8 = quizRepository.save(EntityCreationUtils.quiz("quiz", QuizCategory.DATABASE, Collections.singletonList(QuizLevel.SENIOR)));
savedQuiz1.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz1)));
savedQuiz2.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz2)));
savedQuiz3.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz3)));
savedQuiz4.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz4)));
savedQuiz5.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz5)));
savedQuiz6.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz6)));
savedQuiz7.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz7)));
savedQuiz8.setAnswer(answerRepository.save(EntityCreationUtils.answer(savedQuiz8)));
}
private static Stream<Arguments> validQuizParameters() {

View File

@@ -6,39 +6,29 @@ import com.mangkyu.employment.interview.app.user.service.UserService;
import com.mangkyu.employment.interview.enums.value.QuizCategory;
import com.mangkyu.employment.interview.enums.value.QuizDay;
import com.mangkyu.employment.interview.enums.value.QuizLevel;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.beans.factory.annotation.Autowired;
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.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.util.HashSet;
import java.util.Set;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@ExtendWith(MockitoExtension.class)
@WebMvcTest(UserController.class)
class UserControllerTest {
@InjectMocks
private UserController target;
@Mock
@MockBean
private UserService userService;
@Autowired
private MockMvc mockMvc;
@BeforeEach
public void init() {
mockMvc = MockMvcBuilders.standaloneSetup(target).build();
}
@Test
public void addUserFail_EmailIsEmpty() throws Exception {
// given