Skip to content

Commit 69140cd

Browse files
whqtkerclaude
andcommitted
feat: 지원 대학 단건 조회 API 추가 (#817)
어드민 지원 대학 관리에서 수정 모달을 열 때 목록 조회(search/text) 응답만 사용하고 있어 정원 외 필드가 채워지지 않는 문제가 있었다. search/text가 반환하는 미리보기 응답에는 애초에 해당 필드들이 포함되어 있지 않아 프론트에서 해결할 수 없었다. GET /admin/univ-apply-infos/{id}를 추가해 전체 필드를 담은 AdminUnivApplyInfoResponse를 단건으로 조회할 수 있게 했다. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EwpgqdNTrn8dGDr7g7WnYg
1 parent 065564c commit 69140cd

3 files changed

Lines changed: 51 additions & 0 deletions

File tree

src/main/java/com/example/solidconnection/admin/university/controller/AdminUnivApplyInfoController.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ public ResponseEntity<UnivApplyInfoImportResponse> importUnivApplyInfos(
3838
return ResponseEntity.ok(adminUnivApplyInfoService.importUnivApplyInfos(request));
3939
}
4040

41+
@GetMapping("/{id}")
42+
public ResponseEntity<AdminUnivApplyInfoResponse> getUnivApplyInfo(
43+
@PathVariable long id
44+
) {
45+
return ResponseEntity.ok(adminUnivApplyInfoService.getUnivApplyInfo(id));
46+
}
47+
4148
@PostMapping
4249
public ResponseEntity<AdminUnivApplyInfoResponse> createUnivApplyInfo(
4350
@Valid @RequestBody AdminUnivApplyInfoCreateRequest request

src/main/java/com/example/solidconnection/admin/university/service/AdminUnivApplyInfoService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,13 @@ private HostUniversity findHostUniversity(Long hostUniversityId) {
141141
.orElseThrow(() -> new CustomException(UNIVERSITY_NOT_FOUND));
142142
}
143143

144+
@Transactional(readOnly = true)
145+
public AdminUnivApplyInfoResponse getUnivApplyInfo(long id) {
146+
UnivApplyInfo univApplyInfo = univApplyInfoRepository.findById(id)
147+
.orElseThrow(() -> new CustomException(UNIV_APPLY_INFO_NOT_FOUND));
148+
return AdminUnivApplyInfoResponse.from(univApplyInfo);
149+
}
150+
144151
@Transactional
145152
@DefaultCacheOut(
146153
key = {"univApplyInfoTextSearch", "university:recommend:general"},

src/test/java/com/example/solidconnection/admin/university/service/AdminUnivApplyInfoServiceTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,43 @@ class 지원_정보_생성 {
515515
}
516516
}
517517

518+
@Nested
519+
class 지원_정보_단건_조회 {
520+
521+
@Test
522+
void 존재하는_id로_조회하면_상세_정보를_반환한다() {
523+
// given
524+
UnivApplyInfo univApplyInfo = univApplyInfoFixtureBuilder.univApplyInfo()
525+
.termId(term.getId()).koreanName("괌대학(A형)")
526+
.university(hostUniversity).homeUniversity(homeUniversity).create();
527+
528+
// when
529+
AdminUnivApplyInfoResponse response = adminUnivApplyInfoService.getUnivApplyInfo(univApplyInfo.getId());
530+
531+
// then
532+
assertAll(
533+
() -> assertThat(response.id()).isEqualTo(univApplyInfo.getId()),
534+
() -> assertThat(response.termId()).isEqualTo(term.getId()),
535+
() -> assertThat(response.homeUniversityId()).isEqualTo(homeUniversity.getId()),
536+
() -> assertThat(response.hostUniversityId()).isEqualTo(hostUniversity.getId()),
537+
() -> assertThat(response.studentCapacity()).isEqualTo(univApplyInfo.getStudentCapacity()),
538+
() -> assertThat(response.semesterRequirement()).isEqualTo(univApplyInfo.getSemesterRequirement()),
539+
() -> assertThat(response.detailsForLanguage()).isEqualTo(univApplyInfo.getDetailsForLanguage()),
540+
() -> assertThat(response.gpaRequirement()).isEqualTo(univApplyInfo.getGpaRequirement()),
541+
() -> assertThat(response.gpaRequirementCriteria()).isEqualTo(univApplyInfo.getGpaRequirementCriteria()),
542+
() -> assertThat(response.detailsForAccommodation()).isEqualTo(univApplyInfo.getDetailsForAccommodation())
543+
);
544+
}
545+
546+
@Test
547+
void 존재하지_않는_id로_조회하면_예외가_발생한다() {
548+
// when & then
549+
assertThatCode(() -> adminUnivApplyInfoService.getUnivApplyInfo(invalidId))
550+
.isInstanceOf(CustomException.class)
551+
.hasMessage(ErrorCode.UNIV_APPLY_INFO_NOT_FOUND.getMessage());
552+
}
553+
}
554+
518555
@Nested
519556
class 지원_정보_수정 {
520557

0 commit comments

Comments
 (0)