Add ResourceId on BaseEntity
This commit is contained in:
@@ -26,6 +26,9 @@ public abstract class BaseEntity implements Serializable {
|
||||
@Column(name = "id", nullable = false)
|
||||
private Long id;
|
||||
|
||||
@Column(nullable = false)
|
||||
private String resourceId;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(nullable = false, length = 20, updatable = false)
|
||||
private LocalDateTime createdAt;
|
||||
|
||||
@@ -39,9 +39,9 @@ public class QuizController {
|
||||
.build();
|
||||
}
|
||||
|
||||
@GetMapping("/quiz/{id}")
|
||||
public ResponseEntity<GetQuizResponse> getQuiz(@PathVariable final long id) throws QuizException {
|
||||
return ResponseEntity.ok(quizService.getQuiz(id));
|
||||
@GetMapping("/quiz/{resourceId}")
|
||||
public ResponseEntity<GetQuizResponse> getQuiz(@PathVariable final String resourceId) throws QuizException {
|
||||
return ResponseEntity.ok(quizService.getQuiz(resourceId));
|
||||
}
|
||||
|
||||
@GetMapping("/quizzes")
|
||||
|
||||
@@ -17,7 +17,7 @@ public final class QuizDtoConverter {
|
||||
|
||||
public static GetQuizResponse convert(final Quiz quiz) {
|
||||
return GetQuizResponse.builder()
|
||||
.id(quiz.getId())
|
||||
.resourceId(quiz.getResourceId())
|
||||
.title(quiz.getTitle())
|
||||
.quizLevelList(convert(quiz.getQuizLevel()))
|
||||
.createdAt(Timestamp.valueOf(quiz.getCreatedAt()).getTime())
|
||||
@@ -26,7 +26,7 @@ public final class QuizDtoConverter {
|
||||
|
||||
public static GetQuizResponse convert(final Quiz quiz, final EnumMapperValue enumMapperValue) {
|
||||
return GetQuizResponse.builder()
|
||||
.id(quiz.getId())
|
||||
.resourceId(quiz.getResourceId())
|
||||
.title(quiz.getTitle())
|
||||
.category(enumMapperValue)
|
||||
.quizLevelList(convert(quiz.getQuizLevel()))
|
||||
|
||||
@@ -11,6 +11,7 @@ import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@Getter
|
||||
@Builder
|
||||
@@ -24,6 +25,8 @@ public class AddQuizRequest {
|
||||
@NotNull
|
||||
private final QuizCategory quizCategory;
|
||||
|
||||
private final String resourceId = String.valueOf(UUID.randomUUID());
|
||||
|
||||
@NotEmpty
|
||||
private final List<QuizLevel> quizLevel;
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.util.List;
|
||||
@RequiredArgsConstructor
|
||||
public class GetQuizResponse {
|
||||
|
||||
private final long id;
|
||||
private final String resourceId;
|
||||
private final String title;
|
||||
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
|
||||
@@ -8,10 +8,13 @@ import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
public interface QuizRepository extends JpaRepository<Quiz, Long> {
|
||||
|
||||
Optional<Quiz> findByResourceId(final String resourceId);
|
||||
|
||||
Page<Quiz> findByQuizCategoryIs(final QuizCategory quizCategory, final Pageable pageable);
|
||||
|
||||
Long countByQuizCategory(final QuizCategory category);
|
||||
|
||||
@@ -41,9 +41,10 @@ public class QuizService {
|
||||
quizRepository.save(quiz);
|
||||
}
|
||||
|
||||
public GetQuizResponse getQuiz(final long id) throws QuizException {
|
||||
final Quiz quiz = quizRepository.findById(id)
|
||||
public GetQuizResponse getQuiz(final String resourceId) throws QuizException {
|
||||
final Quiz quiz = quizRepository.findByResourceId(resourceId)
|
||||
.orElseThrow(() -> new QuizException(CommonErrorCode.RESOURCE_NOT_FOUND));
|
||||
|
||||
return QuizDtoConverter.convert(quiz, enumMapperFactory.getElement(EnumMapperKey.QUIZ_CATEGORY, quiz.getQuizCategory()));
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.mangkyu.employment.interview.config.modelmapper;
|
||||
|
||||
import org.modelmapper.ModelMapper;
|
||||
import org.modelmapper.config.Configuration.AccessLevel;
|
||||
import org.modelmapper.convention.MatchingStrategies;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -13,7 +14,8 @@ public class ModelMapperConfig {
|
||||
final ModelMapper modelMapper = new ModelMapper();
|
||||
modelMapper.getConfiguration()
|
||||
.setFieldAccessLevel(AccessLevel.PRIVATE)
|
||||
.setFieldMatchingEnabled(true);
|
||||
.setFieldMatchingEnabled(true)
|
||||
.setMatchingStrategy(MatchingStrategies.STRICT);
|
||||
|
||||
return modelMapper;
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.springframework.validation.Validator;
|
||||
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.Mockito.doThrow;
|
||||
@@ -53,11 +54,11 @@ class GlobalExceptionHandlerTest {
|
||||
@Test
|
||||
public void handleQuizException() throws Exception {
|
||||
// given
|
||||
final long quizId = -1;
|
||||
final String url = "/quiz/" + quizId;
|
||||
final String resourceId = UUID.randomUUID().toString();
|
||||
final String url = "/quiz/" + resourceId;
|
||||
final ErrorCode errorCode = CommonErrorCode.RESOURCE_NOT_FOUND;
|
||||
|
||||
doThrow(new QuizException(errorCode)).when(quizService).getQuiz(quizId);
|
||||
doThrow(new QuizException(errorCode)).when(quizService).getQuiz(resourceId);
|
||||
|
||||
// when
|
||||
final ResultActions result = mockMvc.perform(
|
||||
@@ -77,11 +78,11 @@ class GlobalExceptionHandlerTest {
|
||||
@Test
|
||||
public void handleIllegalArgument() throws Exception {
|
||||
// given
|
||||
final long quizId = -1;
|
||||
final String url = "/quiz/" + quizId;
|
||||
final String resourceId = UUID.randomUUID().toString();
|
||||
final String url = "/quiz/" + resourceId;
|
||||
final String message = "message";
|
||||
|
||||
doThrow(new IllegalArgumentException(message)).when(quizService).getQuiz(quizId);
|
||||
doThrow(new IllegalArgumentException(message)).when(quizService).getQuiz(resourceId);
|
||||
|
||||
// when
|
||||
final ResultActions result = mockMvc.perform(
|
||||
|
||||
@@ -29,6 +29,7 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -55,14 +56,14 @@ class QuizControllerTest {
|
||||
@Test
|
||||
public void getQuiz() throws Exception {
|
||||
// given
|
||||
final long id = -1L;
|
||||
final String url = "/quiz/" + id;
|
||||
final String resourceId = UUID.randomUUID().toString();
|
||||
final String url = "/quiz/" + resourceId;
|
||||
final GetQuizResponse quizResponse = GetQuizResponse.builder()
|
||||
.title("quiz")
|
||||
.quizLevelList(Arrays.asList(QuizLevel.JUNIOR.name(), QuizLevel.SENIOR.name()))
|
||||
.category(enumMapperValue(QuizCategory.JAVA))
|
||||
.build();
|
||||
doReturn(quizResponse).when(quizService).getQuiz(id);
|
||||
doReturn(quizResponse).when(quizService).getQuiz(resourceId);
|
||||
|
||||
// when
|
||||
final ResultActions result = mockMvc.perform(
|
||||
@@ -74,7 +75,7 @@ class QuizControllerTest {
|
||||
final String stringResponse = resultActions.andReturn().getResponse().getContentAsString();
|
||||
final GetQuizResponse getQuizResult = new Gson().fromJson(stringResponse, GetQuizResponse.class);
|
||||
|
||||
assertThat(getQuizResult.getId()).isEqualTo(quizResponse.getId());
|
||||
assertThat(getQuizResult.getResourceId()).isEqualTo(quizResponse.getResourceId());
|
||||
assertThat(getQuizResult.getTitle()).isEqualTo(quizResponse.getTitle());
|
||||
assertThat(getQuizResult.getCategory().getCode()).isEqualTo(quizResponse.getCategory().getCode());
|
||||
assertThat(getQuizResult.getCreatedAt()).isEqualTo(quizResponse.getCreatedAt());
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.springframework.test.util.ReflectionTestUtils;
|
||||
import java.sql.Timestamp;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@@ -27,7 +28,7 @@ class QuizDtoConverterTest {
|
||||
final GetQuizResponse result = QuizDtoConverter.convert(quiz, enumMapperValue(quiz.getQuizCategory()));
|
||||
|
||||
// then
|
||||
assertThat(result.getId()).isEqualTo(id);
|
||||
assertThat(result.getResourceId()).isEqualTo(quiz.getResourceId());
|
||||
assertThat(result.getTitle()).isEqualTo(quiz.getTitle());
|
||||
assertThat(result.getQuizLevelList().size()).isEqualTo(quiz.getQuizLevel().size());
|
||||
assertThat(result.getCreatedAt()).isEqualTo(Timestamp.valueOf(quiz.getCreatedAt()).getTime());
|
||||
@@ -44,7 +45,7 @@ class QuizDtoConverterTest {
|
||||
final GetQuizResponse result = QuizDtoConverter.convert(quiz);
|
||||
|
||||
// then
|
||||
assertThat(result.getId()).isEqualTo(id);
|
||||
assertThat(result.getResourceId()).isEqualTo(quiz.getResourceId());
|
||||
assertThat(result.getTitle()).isEqualTo(quiz.getTitle());
|
||||
assertThat(result.getQuizLevelList().size()).isEqualTo(quiz.getQuizLevel().size());
|
||||
assertThat(result.getCreatedAt()).isEqualTo(Timestamp.valueOf(quiz.getCreatedAt()).getTime());
|
||||
@@ -60,6 +61,7 @@ class QuizDtoConverterTest {
|
||||
.build();
|
||||
|
||||
ReflectionTestUtils.setField(quiz, "id", id);
|
||||
ReflectionTestUtils.setField(quiz, "resourceId", UUID.randomUUID().toString());
|
||||
ReflectionTestUtils.setField(quiz, "createdAt", LocalDateTime.now());
|
||||
return quiz;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.mangkyu.employment.interview.app.quiz.repository;
|
||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
||||
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
|
||||
@@ -19,60 +20,32 @@ class QuizRepositoryTest {
|
||||
@Autowired
|
||||
private QuizRepository quizRepository;
|
||||
|
||||
@Test
|
||||
public void selectByResourceId() {
|
||||
// given
|
||||
final Quiz quiz = EntityCreationUtils.quiz();
|
||||
quizRepository.save(quiz);
|
||||
|
||||
// when
|
||||
final Optional<Quiz> result = quizRepository.findByResourceId(quiz.getResourceId());
|
||||
|
||||
// then
|
||||
assertThat(result.isPresent()).isTrue();
|
||||
assertThat(result.get().getTitle()).isEqualTo(quiz.getTitle());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void selectQuizListByCategoryWithPaging() {
|
||||
// given
|
||||
final QuizCategory quizCategory = QuizCategory.JAVA;
|
||||
quizRepository.save(Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(quizCategory)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build());
|
||||
quizRepository.save(Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(quizCategory)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build());
|
||||
quizRepository.save(Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(quizCategory)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build());
|
||||
quizRepository.save(Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(quizCategory)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build());
|
||||
quizRepository.save(Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(quizCategory)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build());
|
||||
quizRepository.save(Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(quizCategory)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build());
|
||||
quizRepository.save(Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(quizCategory)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build());
|
||||
quizRepository.save(Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(quizCategory)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build());
|
||||
quizRepository.save(Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(QuizCategory.ALGORITHM)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build());
|
||||
quizRepository.save(Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(QuizCategory.DATABASE)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build());
|
||||
EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
EntityCreationUtils.quiz("quiz", quizCategory, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
EntityCreationUtils.quiz("quiz", QuizCategory.ALGORITHM, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
EntityCreationUtils.quiz("quiz", QuizCategory.DATABASE, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
|
||||
// when
|
||||
boolean hasNext = true;
|
||||
@@ -94,26 +67,10 @@ class QuizRepositoryTest {
|
||||
@Test
|
||||
public void selectQuizCountByCategory() {
|
||||
// given
|
||||
final Quiz quiz1 = Quiz.builder()
|
||||
.title("quiz1")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz2 = Quiz.builder()
|
||||
.title("quiz2")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz3 = Quiz.builder()
|
||||
.title("quiz3")
|
||||
.quizCategory(QuizCategory.DATABASE)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz4 = Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.DATABASE, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
|
||||
quizRepository.save(quiz1);
|
||||
quizRepository.save(quiz2);
|
||||
@@ -132,11 +89,7 @@ class QuizRepositoryTest {
|
||||
@Test
|
||||
public void insertQuiz() {
|
||||
// given
|
||||
final Quiz quiz = Quiz.builder()
|
||||
.title("quiz")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz = EntityCreationUtils.quiz();
|
||||
|
||||
// when
|
||||
final Quiz result = quizRepository.save(quiz);
|
||||
@@ -149,26 +102,10 @@ class QuizRepositoryTest {
|
||||
@Test
|
||||
public void selectQuizNotInAndLevelAndQuizCategory() {
|
||||
// given
|
||||
final Quiz quiz1 = Quiz.builder()
|
||||
.title("quiz1")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz2 = Quiz.builder()
|
||||
.title("quiz2")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz3 = Quiz.builder()
|
||||
.title("quiz3")
|
||||
.quizCategory(QuizCategory.DATABASE)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz4 = Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.DATABASE, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
|
||||
final Quiz savedQuiz1 = quizRepository.save(quiz1);
|
||||
final Quiz savedQuiz2 = quizRepository.save(quiz2);
|
||||
@@ -193,26 +130,10 @@ class QuizRepositoryTest {
|
||||
@Test
|
||||
public void selectQuizNotInAndLevel() {
|
||||
// given
|
||||
final Quiz quiz1 = Quiz.builder()
|
||||
.title("quiz1")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz2 = Quiz.builder()
|
||||
.title("quiz2")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz3 = Quiz.builder()
|
||||
.title("quiz3")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz4 = Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
|
||||
final Quiz savedQuiz1 = quizRepository.save(quiz1);
|
||||
final Quiz savedQuiz2 = quizRepository.save(quiz2);
|
||||
@@ -231,26 +152,10 @@ class QuizRepositoryTest {
|
||||
@Test
|
||||
public void selectQuizLevel() {
|
||||
// given
|
||||
final Quiz quiz1 = Quiz.builder()
|
||||
.title("quiz1")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz2 = Quiz.builder()
|
||||
.title("quiz2")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz3 = Quiz.builder()
|
||||
.title("quiz3")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz4 = Quiz.builder()
|
||||
.title("quiz4")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final Quiz quiz1 = EntityCreationUtils.quiz("quiz1", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
final Quiz quiz2 = EntityCreationUtils.quiz("quiz2", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
final Quiz quiz3 = EntityCreationUtils.quiz("quiz3", QuizCategory.JAVA, Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
final Quiz quiz4 = EntityCreationUtils.quiz("quiz4", QuizCategory.JAVA, Arrays.asList(QuizLevel.JUNIOR, QuizLevel.SENIOR));
|
||||
|
||||
quizRepository.save(quiz1);
|
||||
quizRepository.save(quiz2);
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.mockito.Spy;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.modelmapper.ModelMapper;
|
||||
import org.modelmapper.config.Configuration;
|
||||
import org.modelmapper.convention.MatchingStrategies;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
@@ -59,19 +60,19 @@ class QuizServiceTest {
|
||||
public void init() {
|
||||
modelMapper.getConfiguration()
|
||||
.setFieldAccessLevel(Configuration.AccessLevel.PRIVATE)
|
||||
.setFieldMatchingEnabled(true);
|
||||
.setFieldMatchingEnabled(true)
|
||||
.setMatchingStrategy(MatchingStrategies.STRICT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getQuizFail_NotExists() {
|
||||
// given
|
||||
final long id = -1L;
|
||||
final Quiz quiz = quiz(id);
|
||||
final Quiz quiz = quiz(-1L);
|
||||
|
||||
doReturn(Optional.empty()).when(quizRepository).findById(id);
|
||||
doReturn(Optional.empty()).when(quizRepository).findByResourceId(quiz.getResourceId());
|
||||
|
||||
// when
|
||||
final QuizException result = assertThrows(QuizException.class, () -> quizService.getQuiz(id));
|
||||
final QuizException result = assertThrows(QuizException.class, () -> quizService.getQuiz(quiz.getResourceId()));
|
||||
|
||||
// then
|
||||
assertThat(result.getErrorCode()).isEqualTo(CommonErrorCode.RESOURCE_NOT_FOUND);
|
||||
@@ -83,13 +84,13 @@ class QuizServiceTest {
|
||||
final long id = -1L;
|
||||
final Quiz quiz = quiz(id);
|
||||
|
||||
doReturn(Optional.of(quiz)).when(quizRepository).findById(id);
|
||||
doReturn(Optional.of(quiz)).when(quizRepository).findByResourceId(quiz.getResourceId());
|
||||
|
||||
// when
|
||||
final GetQuizResponse result = quizService.getQuiz(id);
|
||||
final GetQuizResponse result = quizService.getQuiz(quiz.getResourceId());
|
||||
|
||||
// then
|
||||
assertThat(result.getId()).isEqualTo(id);
|
||||
assertThat(result.getResourceId()).isEqualTo(quiz.getResourceId());
|
||||
assertThat(result.getTitle()).isEqualTo(quiz.getTitle());
|
||||
assertThat(result.getCategory()).isEqualTo(enumMapperFactory.getElement(EnumMapperKey.QUIZ_CATEGORY, quiz.getQuizCategory()));
|
||||
assertThat(result.getQuizLevelList().size()).isEqualTo(quiz.getQuizLevel().size());
|
||||
@@ -268,6 +269,7 @@ class QuizServiceTest {
|
||||
.build();
|
||||
|
||||
ReflectionTestUtils.setField(quiz, "id", id);
|
||||
ReflectionTestUtils.setField(quiz, "resourceId", UUID.randomUUID().toString());
|
||||
ReflectionTestUtils.setField(quiz, "createdAt", LocalDateTime.now());
|
||||
return quiz;
|
||||
}
|
||||
|
||||
@@ -1,19 +1,15 @@
|
||||
package com.mangkyu.employment.interview.app.solvedquiz.repository;
|
||||
|
||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
||||
import com.mangkyu.employment.interview.app.quiz.repository.QuizRepository;
|
||||
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuiz;
|
||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
||||
import com.mangkyu.employment.interview.app.user.repository.UserRepository;
|
||||
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@DataJpaTest
|
||||
@@ -31,23 +27,13 @@ class SolvedQuizRepositoryTest {
|
||||
@Test
|
||||
public void insertQuiz() {
|
||||
// given
|
||||
final User user = User.builder()
|
||||
.email("minkyu@test.com")
|
||||
.quizLevel(QuizLevel.JUNIOR)
|
||||
.solvedQuizList(Collections.emptyList())
|
||||
.build();
|
||||
final Quiz quiz = Quiz.builder()
|
||||
.title("quiz")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
final User user = EntityCreationUtils.user();
|
||||
final Quiz quiz = EntityCreationUtils.quiz();
|
||||
|
||||
final Quiz quizResult = quizRepository.save(quiz);
|
||||
final User userResult = userRepository.save(user);
|
||||
final SolvedQuiz solvedQuiz = SolvedQuiz.builder()
|
||||
.user(userResult)
|
||||
.quiz(quizResult)
|
||||
.build();
|
||||
|
||||
final SolvedQuiz solvedQuiz = EntityCreationUtils.solvedQuiz(quiz, user);
|
||||
|
||||
// when
|
||||
final SolvedQuiz result = solvedQuizRepository.save(solvedQuiz);
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.mangkyu.employment.interview.app.user.repository;
|
||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
||||
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 com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
|
||||
@@ -20,7 +20,6 @@ class UserRepositoryTest {
|
||||
@Autowired
|
||||
private UserRepository userRepository;
|
||||
|
||||
|
||||
@Test
|
||||
public void selectUserListByCycle() {
|
||||
// given
|
||||
@@ -34,13 +33,7 @@ class UserRepositoryTest {
|
||||
quizCategorySet.add(QuizCategory.DATABASE);
|
||||
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
||||
|
||||
final User user = User.builder()
|
||||
.email("minkyu@test.com")
|
||||
.quizLevel(QuizLevel.JUNIOR)
|
||||
.quizSize(5)
|
||||
.quizDaySet(quizDaySet)
|
||||
.quizCategorySet(quizCategorySet)
|
||||
.build();
|
||||
final User user = EntityCreationUtils.user(5, quizDaySet, quizCategorySet);
|
||||
|
||||
final User savedUser = userRepository.save(user);
|
||||
userRepository.save(savedUser);
|
||||
@@ -67,13 +60,7 @@ class UserRepositoryTest {
|
||||
quizCategorySet.add(QuizCategory.DATABASE);
|
||||
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
||||
|
||||
final User user = User.builder()
|
||||
.email("minkyu@test.com")
|
||||
.quizLevel(QuizLevel.JUNIOR)
|
||||
.quizSize(5)
|
||||
.quizDaySet(quizDaySet)
|
||||
.quizCategorySet(quizCategorySet)
|
||||
.build();
|
||||
final User user = EntityCreationUtils.user(5, quizDaySet, quizCategorySet);
|
||||
|
||||
// when
|
||||
final User result = userRepository.save(user);
|
||||
@@ -97,12 +84,7 @@ class UserRepositoryTest {
|
||||
quizCategorySet.add(QuizCategory.DATABASE);
|
||||
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
||||
|
||||
final User user = User.builder()
|
||||
.email("minkyu@test.com")
|
||||
.quizLevel(QuizLevel.JUNIOR)
|
||||
.quizDaySet(quizDaySet)
|
||||
.quizCategorySet(quizCategorySet)
|
||||
.build();
|
||||
final User user = EntityCreationUtils.user(3, quizDaySet, quizCategorySet);
|
||||
|
||||
final User savedUser = userRepository.save(user);
|
||||
savedUser.setIsEnable(false);
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.mangkyu.employment.interview.testutils;
|
||||
|
||||
import com.mangkyu.employment.interview.app.answer.entity.Answer;
|
||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuiz;
|
||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
||||
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.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public final class EntityCreationUtils {
|
||||
|
||||
public static Quiz quiz() {
|
||||
final Quiz quiz = Quiz.builder()
|
||||
.title("quiz")
|
||||
.quizCategory(QuizCategory.JAVA)
|
||||
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
|
||||
.build();
|
||||
ReflectionTestUtils.setField(quiz, "resourceId", UUID.randomUUID().toString());
|
||||
|
||||
return quiz;
|
||||
}
|
||||
|
||||
public static Quiz quiz(final String title, final QuizCategory category, final List<QuizLevel> quizLevelList) {
|
||||
final Quiz quiz = Quiz.builder()
|
||||
.title(title)
|
||||
.quizCategory(category)
|
||||
.quizLevel(quizLevelList)
|
||||
.build();
|
||||
ReflectionTestUtils.setField(quiz, "resourceId", UUID.randomUUID().toString());
|
||||
|
||||
return quiz;
|
||||
}
|
||||
|
||||
public static User user() {
|
||||
final User user = User.builder()
|
||||
.email("minkyu@test.com")
|
||||
.quizLevel(QuizLevel.JUNIOR)
|
||||
.solvedQuizList(Collections.emptyList())
|
||||
.build();
|
||||
ReflectionTestUtils.setField(user, "resourceId", UUID.randomUUID().toString());
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
public static User user(final int quizSize, final Set<QuizDay> daySet, final Set<QuizCategory> categorySet) {
|
||||
final User user = User.builder()
|
||||
.email("minkyu@test.com")
|
||||
.quizLevel(QuizLevel.JUNIOR)
|
||||
.solvedQuizList(Collections.emptyList())
|
||||
.quizSize(quizSize)
|
||||
.quizDaySet(daySet)
|
||||
.quizCategorySet(categorySet)
|
||||
.build();
|
||||
ReflectionTestUtils.setField(user, "resourceId", UUID.randomUUID().toString());
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
public static SolvedQuiz solvedQuiz(final Quiz quiz, final User user) {
|
||||
final SolvedQuiz solvedQuiz = SolvedQuiz.builder()
|
||||
.quiz(quiz)
|
||||
.user(user)
|
||||
.build();
|
||||
|
||||
ReflectionTestUtils.setField(solvedQuiz, "resourceId", UUID.randomUUID().toString());
|
||||
return solvedQuiz;
|
||||
}
|
||||
|
||||
public static Answer answer(final Quiz quiz) {
|
||||
final Answer answer = Answer.builder()
|
||||
.quiz(quiz)
|
||||
.desc("desc")
|
||||
.build();
|
||||
|
||||
ReflectionTestUtils.setField(answer, "resourceId", UUID.randomUUID().toString());
|
||||
return answer;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user