diff --git a/src/main/java/org/ezcode/codetest/application/problem/dto/response/ProblemDetailResponse.java b/src/main/java/org/ezcode/codetest/application/problem/dto/response/ProblemDetailResponse.java index dadf6e00..a51e298d 100644 --- a/src/main/java/org/ezcode/codetest/application/problem/dto/response/ProblemDetailResponse.java +++ b/src/main/java/org/ezcode/codetest/application/problem/dto/response/ProblemDetailResponse.java @@ -51,8 +51,9 @@ public record ProblemDetailResponse( LocalDateTime modifiedAt, @Schema(description = "문제 이미지 URL", example = "https://bucket.s3.ap-northeast-2.amazonaws.com/problem/example.jpg") - String imageUrl + String imageUrl, + List testcases ) { public static ProblemDetailResponse from(Problem problem, List categories) { @@ -71,6 +72,7 @@ public static ProblemDetailResponse from(Problem problem, List categor .createdAt(problem.getCreatedAt()) .modifiedAt(problem.getModifiedAt()) .imageUrl(problem.getImageUrl().isEmpty() ? null : problem.getImageUrl().get(0)) + .testcases(problem.top2Testcases().stream().map(TestcaseResponse::from).toList()) .build(); } } diff --git a/src/main/java/org/ezcode/codetest/application/problem/dto/response/TestcaseResponse.java b/src/main/java/org/ezcode/codetest/application/problem/dto/response/TestcaseResponse.java index f05f6488..eab7622e 100644 --- a/src/main/java/org/ezcode/codetest/application/problem/dto/response/TestcaseResponse.java +++ b/src/main/java/org/ezcode/codetest/application/problem/dto/response/TestcaseResponse.java @@ -1,6 +1,5 @@ package org.ezcode.codetest.application.problem.dto.response; -import org.ezcode.codetest.domain.problem.model.entity.Problem; import org.ezcode.codetest.domain.problem.model.entity.Testcase; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/src/main/java/org/ezcode/codetest/domain/problem/model/entity/Problem.java b/src/main/java/org/ezcode/codetest/domain/problem/model/entity/Problem.java index c1ed565a..3652dae7 100644 --- a/src/main/java/org/ezcode/codetest/domain/problem/model/entity/Problem.java +++ b/src/main/java/org/ezcode/codetest/domain/problem/model/entity/Problem.java @@ -1,6 +1,7 @@ package org.ezcode.codetest.domain.problem.model.entity; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import org.ezcode.codetest.common.base.entity.BaseEntity; @@ -154,12 +155,13 @@ public void clearImages() { this.imageUrl.clear(); } - public void incrementTotalSubmissions() { - totalSubmissions += 1; - } - - public void incrementCorrectSubmissions() { - correctSubmissions += 1; - + public List top2Testcases() { + if (testcases == null || testcases.isEmpty()) { + return List.of(); + } + return testcases.stream() + .sorted(Comparator.comparing(Testcase::getId)) + .limit(2) + .toList(); } } diff --git a/src/main/java/org/ezcode/codetest/domain/problem/service/ProblemDomainService.java b/src/main/java/org/ezcode/codetest/domain/problem/service/ProblemDomainService.java index 881a52cd..ad508279 100644 --- a/src/main/java/org/ezcode/codetest/domain/problem/service/ProblemDomainService.java +++ b/src/main/java/org/ezcode/codetest/domain/problem/service/ProblemDomainService.java @@ -97,7 +97,7 @@ public Page getProblemBySearchCondition(Pageable pageable, ProblemSearc public Problem getProblem(Long problemId) { - return problemRepository.findByIdNotDeleted(problemId) + return problemRepository.findProblemWithTestcasesById(problemId) .orElseThrow(() -> new ProblemException(ProblemExceptionCode.PROBLEM_NOT_FOUND)); } diff --git a/src/test/java/org/ezcode/codetest/domain/problem/service/ProblemDomainServiceTest.java b/src/test/java/org/ezcode/codetest/domain/problem/service/ProblemDomainServiceTest.java index 15827b8e..7bdcdd7d 100644 --- a/src/test/java/org/ezcode/codetest/domain/problem/service/ProblemDomainServiceTest.java +++ b/src/test/java/org/ezcode/codetest/domain/problem/service/ProblemDomainServiceTest.java @@ -90,7 +90,7 @@ void getProblem_success() { Long problemId = 1L; Problem problem = mock(Problem.class); - when(problemRepository.findByIdNotDeleted(problemId)).thenReturn(Optional.ofNullable(problem)); + when(problemRepository.findProblemWithTestcasesById(problemId)).thenReturn(Optional.ofNullable(problem)); // when Problem result = problemDomainService.getProblem(problemId); @@ -98,7 +98,7 @@ void getProblem_success() { // then assertNotNull(result); assertEquals(problem, result); - verify(problemRepository).findByIdNotDeleted(problemId); + verify(problemRepository).findProblemWithTestcasesById(problemId); } @Test