From eb44526800d0961b95cccaf624cf4df5d08c10ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B8=EC=A4=80?= <74056843+sejoon00@users.noreply.github.com> Date: Tue, 18 Feb 2025 19:32:47 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[fix/#54]=20=EB=AC=B8=ED=95=AD=20=ED=83=80?= =?UTF-8?q?=EC=9D=B4=ED=8B=80,=20=EB=82=9C=EC=9D=B4=EB=8F=84=20null=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../problem/controller/ProblemController.java | 5 +++-- .../domain/problem/domain/problem/Difficulty.java | 3 --- .../domain/problem/domain/problem/Problem.java | 6 +++--- .../problem/dto/response/ProblemPostResponse.java | 15 +++++++++++++++ .../problem/service/ProblemSaveService.java | 6 +++--- .../problem/service/ProblemSaveServiceTest.java | 7 ++++--- 6 files changed, 28 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/moplus/moplus_server/domain/problem/dto/response/ProblemPostResponse.java diff --git a/src/main/java/com/moplus/moplus_server/domain/problem/controller/ProblemController.java b/src/main/java/com/moplus/moplus_server/domain/problem/controller/ProblemController.java index 6002770..9db45a7 100644 --- a/src/main/java/com/moplus/moplus_server/domain/problem/controller/ProblemController.java +++ b/src/main/java/com/moplus/moplus_server/domain/problem/controller/ProblemController.java @@ -3,6 +3,7 @@ import com.moplus.moplus_server.domain.problem.dto.request.ProblemPostRequest; import com.moplus.moplus_server.domain.problem.dto.request.ProblemUpdateRequest; import com.moplus.moplus_server.domain.problem.dto.response.ProblemGetResponse; +import com.moplus.moplus_server.domain.problem.dto.response.ProblemPostResponse; import com.moplus.moplus_server.domain.problem.service.ChildProblemService; import com.moplus.moplus_server.domain.problem.service.ProblemDeleteService; import com.moplus.moplus_server.domain.problem.service.ProblemGetService; @@ -45,10 +46,10 @@ public ResponseEntity getProblem( @PostMapping("") @Operation(summary = "문항 생성", description = "문제를 생성합니다. 기출/변형 문제는 모든 값이 필수이며 창작 문제는 문항 타입만 필수 입니다.") - public ResponseEntity createProblem( + public ResponseEntity createProblem( @Valid @RequestBody ProblemPostRequest request ) { - return ResponseEntity.ok(new IdResponse(problemSaveService.createProblem(request))); + return ResponseEntity.ok(problemSaveService.createProblem(request)); } @PutMapping("/{id}") diff --git a/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Difficulty.java b/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Difficulty.java index 7cbcf54..9617418 100644 --- a/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Difficulty.java +++ b/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Difficulty.java @@ -17,9 +17,6 @@ public class Difficulty { private Integer difficulty; public Difficulty(Integer difficulty) { - if (difficulty == null) { - return; - } validate(difficulty); this.difficulty = difficulty; } diff --git a/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Problem.java b/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Problem.java index 2b08fad..e245855 100644 --- a/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Problem.java +++ b/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Problem.java @@ -134,7 +134,7 @@ public void updateChildProblem(List inputChildProblems) { if (isConfirmed && this.childProblems.size() != inputChildProblems.size()) { throw new InvalidValueException(ErrorCode.INVALID_CHILD_PROBLEM_SIZE); } - + for (int i = 0; i < inputChildProblems.size(); i++) { this.childProblems.get(i).update(inputChildProblems.get(i)); } @@ -160,10 +160,10 @@ public boolean isValid() { } public String getTitle() { - return title.getTitle(); + return title != null ? title.getTitle() : "제목 없음"; } public Integer getDifficulty() { - return difficulty.getDifficulty(); + return difficulty != null ? difficulty.getDifficulty() : null; } } \ No newline at end of file diff --git a/src/main/java/com/moplus/moplus_server/domain/problem/dto/response/ProblemPostResponse.java b/src/main/java/com/moplus/moplus_server/domain/problem/dto/response/ProblemPostResponse.java new file mode 100644 index 0000000..330c694 --- /dev/null +++ b/src/main/java/com/moplus/moplus_server/domain/problem/dto/response/ProblemPostResponse.java @@ -0,0 +1,15 @@ +package com.moplus.moplus_server.domain.problem.dto.response; + +import com.moplus.moplus_server.domain.problem.domain.problem.Problem; +import jakarta.validation.constraints.NotNull; + +public record ProblemPostResponse( + @NotNull(message = "문항 ID는 필수입니다") + Long id, + @NotNull(message = "문항 custom ID는 필수입니다") + Long problemCustomId +) { + public static ProblemPostResponse of(Problem problem) { + return new ProblemPostResponse(problem.getId(), problem.getPracticeTestId()); + } +} diff --git a/src/main/java/com/moplus/moplus_server/domain/problem/service/ProblemSaveService.java b/src/main/java/com/moplus/moplus_server/domain/problem/service/ProblemSaveService.java index 24ea2f9..7ceacf4 100644 --- a/src/main/java/com/moplus/moplus_server/domain/problem/service/ProblemSaveService.java +++ b/src/main/java/com/moplus/moplus_server/domain/problem/service/ProblemSaveService.java @@ -5,6 +5,7 @@ import com.moplus.moplus_server.domain.problem.domain.problem.ProblemAdminIdService; import com.moplus.moplus_server.domain.problem.domain.problem.ProblemCustomId; import com.moplus.moplus_server.domain.problem.dto.request.ProblemPostRequest; +import com.moplus.moplus_server.domain.problem.dto.response.ProblemPostResponse; import com.moplus.moplus_server.domain.problem.repository.PracticeTestTagRepository; import com.moplus.moplus_server.domain.problem.repository.ProblemRepository; import com.moplus.moplus_server.domain.problem.service.mapper.ProblemMapper; @@ -22,13 +23,12 @@ public class ProblemSaveService { private final ProblemMapper problemMapper; @Transactional - public Long createProblem(ProblemPostRequest request) { + public ProblemPostResponse createProblem(ProblemPostRequest request) { PracticeTestTag practiceTestTag = practiceTestRepository.findByIdElseThrow(request.practiceTestId()); ProblemCustomId problemCustomId = problemAdminIdService.nextId(request.number(), practiceTestTag, request.problemType()); Problem problem = problemMapper.from(request, problemCustomId, practiceTestTag); - - return problemRepository.save(problem).getId(); + return ProblemPostResponse.of(problemRepository.save(problem)); } } diff --git a/src/test/java/com/moplus/moplus_server/domain/problem/service/ProblemSaveServiceTest.java b/src/test/java/com/moplus/moplus_server/domain/problem/service/ProblemSaveServiceTest.java index 21b2a2f..e6d5ae2 100644 --- a/src/test/java/com/moplus/moplus_server/domain/problem/service/ProblemSaveServiceTest.java +++ b/src/test/java/com/moplus/moplus_server/domain/problem/service/ProblemSaveServiceTest.java @@ -6,6 +6,7 @@ import com.moplus.moplus_server.domain.problem.domain.problem.Problem; import com.moplus.moplus_server.domain.problem.domain.problem.ProblemType; import com.moplus.moplus_server.domain.problem.dto.request.ProblemPostRequest; +import com.moplus.moplus_server.domain.problem.dto.response.ProblemPostResponse; import com.moplus.moplus_server.domain.problem.repository.ProblemRepository; import com.moplus.moplus_server.global.error.exception.NotFoundException; import org.junit.jupiter.api.BeforeEach; @@ -46,12 +47,12 @@ class 문항생성 { @Test void 성공() { // when - Long createdProblemId = problemSaveService.createProblem(problemPostRequest); + ProblemPostResponse problemResponse = problemSaveService.createProblem(problemPostRequest); // then - assertThat(createdProblemId).isNotNull(); + assertThat(problemResponse).isNotNull(); - Problem savedProblem = problemRepository.findByIdElseThrow(createdProblemId); + Problem savedProblem = problemRepository.findByIdElseThrow(problemResponse.id()); assertThat(savedProblem).isNotNull(); assertThat(savedProblem.getProblemType()).isEqualTo(ProblemType.GICHUL_PROBLEM); } From 7f8454c6922695f6503578dbd9a1b5efedcd7f63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B8=EC=A4=80?= <74056843+sejoon00@users.noreply.github.com> Date: Tue, 18 Feb 2025 19:34:41 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[fix/#54]=20=EB=AC=B8=ED=95=AD=20=ED=83=80?= =?UTF-8?q?=EC=9D=B4=ED=8B=80,=20=EB=82=9C=EC=9D=B4=EB=8F=84=20null=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/problem/domain/problem/Difficulty.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Difficulty.java b/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Difficulty.java index 9617418..68a0949 100644 --- a/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Difficulty.java +++ b/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Difficulty.java @@ -21,7 +21,10 @@ public Difficulty(Integer difficulty) { this.difficulty = difficulty; } - private void validate(int difficulty) { + private void validate(Integer difficulty) { + if (difficulty == null) { + return; + } if (difficulty < 1 || difficulty > 10) { throw new InvalidValueException(ErrorCode.INVALID_DIFFICULTY); }