Merge branch 'master' into master-web

This commit is contained in:
MangKyu
2022-01-07 00:20:42 +09:00
8 changed files with 25 additions and 12 deletions

View File

@@ -58,7 +58,8 @@
<br>
### Level
위 서비스는 등급을 다음과 같이 분류하였습니다. 사용자는 등급에 맞는 문제를 받게 됩니다. 주니어와 시니어는 기술적인 내용들이 많이 포함되지만, 시니어는 프로젝트 경험이 주를 이룹니다.
위 서비스는 등급을 다음과 같이 분류하였습니다. 사용자는 등급에 맞는 문제를 받게 됩니다.
신입과 주니어는 기술적인 내용들이 많이 포함되지만, 시니어는 프로젝트 경험과 주어진 문제 해결 능력이 주를 이룹니다.
- NEW: 첫 직장을 준비하는 신입 개발자
- JUNIOR: 이직을 준비하는 주니어 개발자
- SENIOR: 이직을 준비하는 시니어 개발자

View File

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

View File

@@ -7,7 +7,7 @@ import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public class QuizException extends Exception {
public class QuizException extends RuntimeException {
private final ErrorCode errorCode;

View File

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

View File

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

View File

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

View File

@@ -32,7 +32,7 @@ public class Quiz extends BaseEntity {
@Setter
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id")
@JoinColumn(name = "answer_id")
private Answer answer;
}

View File

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