diff --git a/src/main/java/com/example/solidconnection/admin/university/controller/AdminUnivApplyInfoController.java b/src/main/java/com/example/solidconnection/admin/university/controller/AdminUnivApplyInfoController.java index e0fdbcb70..79d46506b 100644 --- a/src/main/java/com/example/solidconnection/admin/university/controller/AdminUnivApplyInfoController.java +++ b/src/main/java/com/example/solidconnection/admin/university/controller/AdminUnivApplyInfoController.java @@ -38,6 +38,13 @@ public ResponseEntity importUnivApplyInfos( return ResponseEntity.ok(adminUnivApplyInfoService.importUnivApplyInfos(request)); } + @GetMapping("/{id}") + public ResponseEntity getUnivApplyInfo( + @PathVariable long id + ) { + return ResponseEntity.ok(adminUnivApplyInfoService.getUnivApplyInfo(id)); + } + @PostMapping public ResponseEntity createUnivApplyInfo( @Valid @RequestBody AdminUnivApplyInfoCreateRequest request diff --git a/src/main/java/com/example/solidconnection/admin/university/service/AdminUnivApplyInfoService.java b/src/main/java/com/example/solidconnection/admin/university/service/AdminUnivApplyInfoService.java index 389c09031..93122007e 100644 --- a/src/main/java/com/example/solidconnection/admin/university/service/AdminUnivApplyInfoService.java +++ b/src/main/java/com/example/solidconnection/admin/university/service/AdminUnivApplyInfoService.java @@ -141,6 +141,13 @@ private HostUniversity findHostUniversity(Long hostUniversityId) { .orElseThrow(() -> new CustomException(UNIVERSITY_NOT_FOUND)); } + @Transactional(readOnly = true) + public AdminUnivApplyInfoResponse getUnivApplyInfo(long id) { + UnivApplyInfo univApplyInfo = univApplyInfoRepository.findById(id) + .orElseThrow(() -> new CustomException(UNIV_APPLY_INFO_NOT_FOUND)); + return AdminUnivApplyInfoResponse.from(univApplyInfo); + } + @Transactional @DefaultCacheOut( key = {"univApplyInfoTextSearch", "university:recommend:general"}, diff --git a/src/test/java/com/example/solidconnection/admin/university/service/AdminUnivApplyInfoServiceTest.java b/src/test/java/com/example/solidconnection/admin/university/service/AdminUnivApplyInfoServiceTest.java index 9f8f2c6dd..5f2ef1fcd 100644 --- a/src/test/java/com/example/solidconnection/admin/university/service/AdminUnivApplyInfoServiceTest.java +++ b/src/test/java/com/example/solidconnection/admin/university/service/AdminUnivApplyInfoServiceTest.java @@ -515,6 +515,43 @@ class 지원_정보_생성 { } } + @Nested + class 지원_정보_단건_조회 { + + @Test + void 존재하는_id로_조회하면_상세_정보를_반환한다() { + // given + UnivApplyInfo univApplyInfo = univApplyInfoFixtureBuilder.univApplyInfo() + .termId(term.getId()).koreanName("괌대학(A형)") + .university(hostUniversity).homeUniversity(homeUniversity).create(); + + // when + AdminUnivApplyInfoResponse response = adminUnivApplyInfoService.getUnivApplyInfo(univApplyInfo.getId()); + + // then + assertAll( + () -> assertThat(response.id()).isEqualTo(univApplyInfo.getId()), + () -> assertThat(response.termId()).isEqualTo(term.getId()), + () -> assertThat(response.homeUniversityId()).isEqualTo(homeUniversity.getId()), + () -> assertThat(response.hostUniversityId()).isEqualTo(hostUniversity.getId()), + () -> assertThat(response.studentCapacity()).isEqualTo(univApplyInfo.getStudentCapacity()), + () -> assertThat(response.semesterRequirement()).isEqualTo(univApplyInfo.getSemesterRequirement()), + () -> assertThat(response.detailsForLanguage()).isEqualTo(univApplyInfo.getDetailsForLanguage()), + () -> assertThat(response.gpaRequirement()).isEqualTo(univApplyInfo.getGpaRequirement()), + () -> assertThat(response.gpaRequirementCriteria()).isEqualTo(univApplyInfo.getGpaRequirementCriteria()), + () -> assertThat(response.detailsForAccommodation()).isEqualTo(univApplyInfo.getDetailsForAccommodation()) + ); + } + + @Test + void 존재하지_않는_id로_조회하면_예외가_발생한다() { + // when & then + assertThatCode(() -> adminUnivApplyInfoService.getUnivApplyInfo(invalidId)) + .isInstanceOf(CustomException.class) + .hasMessage(ErrorCode.UNIV_APPLY_INFO_NOT_FOUND.getMessage()); + } + } + @Nested class 지원_정보_수정 {