Add ResourceId on BaseEntity

This commit is contained in:
MangKyu
2022-01-03 00:17:55 +09:00
parent c2f41bb017
commit 12f128a418
16 changed files with 179 additions and 205 deletions

View File

@@ -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;

View File

@@ -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")

View File

@@ -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()))

View File

@@ -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;

View File

@@ -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)

View File

@@ -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);

View File

@@ -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()));
}

View File

@@ -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;
}

View File

@@ -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(

View File

@@ -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());

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;
}
}