Merge branch 'master' into master-web
This commit is contained in:
@@ -58,7 +58,8 @@
|
||||
<br>
|
||||
|
||||
### Level
|
||||
위 서비스는 등급을 다음과 같이 분류하였습니다. 사용자는 등급에 맞는 문제를 받게 됩니다. 주니어와 시니어는 기술적인 내용들이 많이 포함되지만, 시니어는 프로젝트 경험이 주를 이룹니다.
|
||||
위 서비스는 등급을 다음과 같이 분류하였습니다. 사용자는 등급에 맞는 문제를 받게 됩니다.
|
||||
신입과 주니어는 기술적인 내용들이 많이 포함되지만, 시니어는 프로젝트 경험과 주어진 문제 해결 능력이 주를 이룹니다.
|
||||
- NEW: 첫 직장을 준비하는 신입 개발자
|
||||
- JUNIOR: 이직을 준비하는 주니어 개발자
|
||||
- SENIOR: 이직을 준비하는 시니어 개발자
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.mangkyu.employment.interview.app.answer.dto.GetAnswerResponse;
|
||||
import com.mangkyu.employment.interview.app.answer.entity.Answer;
|
||||
import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository;
|
||||
import com.mangkyu.employment.interview.app.common.erros.errorcode.CommonErrorCode;
|
||||
import com.mangkyu.employment.interview.app.common.erros.errorcode.CustomErrorCode;
|
||||
import com.mangkyu.employment.interview.app.common.erros.exception.QuizException;
|
||||
import com.mangkyu.employment.interview.app.quiz.converter.QuizDtoConverter;
|
||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||
@@ -34,11 +35,18 @@ public class AnswerService {
|
||||
final Answer quizAnswer = quiz.getAnswer();
|
||||
if (quizAnswer == null) {
|
||||
final Answer answer = QuizDtoConverter.convert(addAnswerRequest, quiz);
|
||||
quiz.setAnswer(answer);
|
||||
answerRepository.save(answer);
|
||||
quiz.setAnswer(answer);
|
||||
} else {
|
||||
quizAnswer.setDescription(addAnswerRequest.getDescription());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@Transactional
|
||||
public void deleteAnswer(final String resourceId) throws QuizException {
|
||||
final Answer answer = answerRepository.findByResourceId(resourceId)
|
||||
.orElseThrow(() -> new QuizException(CommonErrorCode.RESOURCE_NOT_FOUND));
|
||||
answer.getQuiz().setAnswer(null);
|
||||
answerRepository.delete(answer);
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public class QuizException extends Exception {
|
||||
public class QuizException extends RuntimeException {
|
||||
|
||||
private final ErrorCode errorCode;
|
||||
|
||||
|
||||
@@ -2,8 +2,9 @@ package com.mangkyu.employment.interview.app.common.erros.handler;
|
||||
|
||||
import com.mangkyu.employment.interview.app.common.erros.errorcode.CommonErrorCode;
|
||||
import com.mangkyu.employment.interview.app.common.erros.errorcode.ErrorCode;
|
||||
import com.mangkyu.employment.interview.app.common.erros.response.ErrorResponse;
|
||||
import com.mangkyu.employment.interview.app.common.erros.exception.QuizException;
|
||||
import com.mangkyu.employment.interview.app.common.erros.response.ErrorResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -18,6 +19,7 @@ import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestControllerAdvice
|
||||
@Slf4j
|
||||
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
|
||||
|
||||
@ExceptionHandler(QuizException.class)
|
||||
@@ -28,6 +30,7 @@ public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
|
||||
|
||||
@ExceptionHandler(IllegalArgumentException.class)
|
||||
public ResponseEntity<Object> handleIllegalArgument(final IllegalArgumentException e) {
|
||||
log.warn("handleIllegalArgument", e);
|
||||
final ErrorCode errorCode = CommonErrorCode.INVALID_PARAMETER;
|
||||
return handleExceptionInternal(errorCode, e.getMessage());
|
||||
}
|
||||
@@ -38,7 +41,7 @@ public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
|
||||
final HttpHeaders headers,
|
||||
final HttpStatus status,
|
||||
final WebRequest request) {
|
||||
|
||||
log.warn("handleIllegalArgument", e);
|
||||
final ErrorCode errorCode = CommonErrorCode.INVALID_PARAMETER;
|
||||
return handleExceptionInternal(e, errorCode);
|
||||
}
|
||||
@@ -51,6 +54,7 @@ public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
|
||||
|
||||
@ExceptionHandler({Exception.class})
|
||||
public ResponseEntity<Object> handleAllException(final Exception ex) {
|
||||
log.warn("handleAllException", ex);
|
||||
final ErrorCode errorCode = CommonErrorCode.INTERNAL_SERVER_ERROR;
|
||||
return handleExceptionInternal(errorCode);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ 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.NoArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.List;
|
||||
@@ -61,7 +62,7 @@ public final class QuizDtoConverter {
|
||||
|
||||
private static String getAnswerResourceId(final Quiz quiz) {
|
||||
return (quiz.getAnswer() == null)
|
||||
? null
|
||||
? StringUtils.EMPTY
|
||||
: quiz.getAnswer().getResourceId();
|
||||
}
|
||||
|
||||
|
||||
@@ -14,8 +14,6 @@ import java.util.List;
|
||||
public class GetQuizResponse {
|
||||
|
||||
private final String resourceId;
|
||||
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
private final String answerResourceId;
|
||||
|
||||
private final String title;
|
||||
|
||||
@@ -32,7 +32,7 @@ public class Quiz extends BaseEntity {
|
||||
|
||||
@Setter
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "id")
|
||||
@JoinColumn(name = "answer_id")
|
||||
private Answer answer;
|
||||
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||
import com.mangkyu.employment.interview.enums.common.EnumMapperType;
|
||||
import com.mangkyu.employment.interview.enums.common.EnumMapperValue;
|
||||
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
@@ -83,7 +84,7 @@ class QuizDtoConverterTest {
|
||||
assertThat(result.getQuizLevelList().size()).isEqualTo(quiz.getQuizLevel().size());
|
||||
assertThat(result.getCreatedAt()).isEqualTo(Timestamp.valueOf(quiz.getCreatedAt()).getTime());
|
||||
assertThat(result.getCategory().getCode()).isEqualTo(enumMapperValue(quiz.getQuizCategory()).getCode());
|
||||
assertThat(result.getAnswerResourceId()).isNull();
|
||||
assertThat(result.getAnswerResourceId()).isEqualTo(StringUtils.EMPTY);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -119,7 +120,7 @@ class QuizDtoConverterTest {
|
||||
assertThat(result.getQuizLevelList().size()).isEqualTo(quiz.getQuizLevel().size());
|
||||
assertThat(result.getCreatedAt()).isEqualTo(Timestamp.valueOf(quiz.getCreatedAt()).getTime());
|
||||
assertThat(result.getCategory()).isNull();
|
||||
assertThat(result.getAnswerResourceId()).isNull();
|
||||
assertThat(result.getAnswerResourceId()).isEqualTo(StringUtils.EMPTY);
|
||||
}
|
||||
|
||||
private EnumMapperValue enumMapperValue(final EnumMapperType enumMapperType) {
|
||||
|
||||
Reference in New Issue
Block a user