Skip to content

[REFACTOR] 서재 ID 응답에 libraryId 추가#281

Merged
kjhyeon0620 merged 1 commit into
develop-demofrom
refactor/#266-unify-library-id
Jun 2, 2026
Merged

[REFACTOR] 서재 ID 응답에 libraryId 추가#281
kjhyeon0620 merged 1 commit into
develop-demofrom
refactor/#266-unify-library-id

Conversation

@kjhyeon0620

@kjhyeon0620 kjhyeon0620 commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

📄 작업 내용 요약

  • 서재 ID 응답 필드 전환을 위해 libraryId 반환 추가
  • 기존 bookShelfId는 클라이언트 전환 전까지 유지

📎 Issue 번호


✅ 작업 목록

  • 기능 구현
  • 코드 리뷰 반영
  • 테스트 코드 작성
  • 문서 업데이트

📝 기타 참고사항

Summary by CodeRabbit

릴리스 노트

  • New Features

    • 도서 상세 정보 응답에 서재 식별자가 추가되었습니다.
    • 도서가 서재에 등록된 경우 해당 서재 ID가 포함되며, 미등록 도서는 null 값으로 표시됩니다.
  • Tests

    • 도서 상세 조회, 등록, 수정 및 서재 도서 관리 기능에 대한 테스트 검증이 강화되었습니다.

@coderabbitai

coderabbitai Bot commented Jun 2, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c9bf6577-893f-4c7b-933d-c79faa3907a7

📥 Commits

Reviewing files that changed from the base of the PR and between a9c88c6 and 0ea9fb0.

📒 Files selected for processing (8)
  • src/main/java/app/nook/book/converter/BookConverter.java
  • src/main/java/app/nook/book/dto/BookResponseDto.java
  • src/main/java/app/nook/library/dto/LibraryViewDto.java
  • src/main/java/app/nook/library/service/LibraryCommandService.java
  • src/test/java/app/nook/book/service/BookServiceTest.java
  • src/test/java/app/nook/controller/book/BookControllerTest.java
  • src/test/java/app/nook/controller/library/LibraryControllerTest.java
  • src/test/java/app/nook/library/service/LibraryServiceTest.java

Walkthrough

두 개의 응답 DTO(BookDetailDto, BookStatusResponseDto)에 libraryId 필드를 추가하고, 관련 변환 로직과 서비스 레이어 구현을 업데이트하며, 서비스 및 컨트롤러 계층의 모든 테스트를 일관되게 수정하여 필드 반환 및 검증 로직을 강화했습니다.

Changes

libraryId 필드 추가 및 매핑

Layer / File(s) Summary
DTO 계약 및 변환 로직
src/main/java/app/nook/book/dto/BookResponseDto.java, src/main/java/app/nook/library/dto/LibraryViewDto.java, src/main/java/app/nook/book/converter/BookConverter.java, src/main/java/app/nook/library/service/LibraryCommandService.java
BookDetailDto와 BookStatusResponseDto 레코드에 Long 타입 libraryId 필드를 추가합니다. BookConverter의 toBookDetailDto에서 library가 null이면 libraryId도 null로, 아니면 library.getId()를 설정합니다. LibraryCommandService의 deleteByBookId와 toBookStatusResponse에서 BookStatusResponseDto 생성 시 libraryId를 포함하도록 변경합니다.
서비스 레이어 테스트
src/test/java/app/nook/book/service/BookServiceTest.java, src/test/java/app/nook/library/service/LibraryServiceTest.java
BookServiceTest의 5개 테스트 케이스에서 getLibraryId() 검증을 추가하여 서재 미등록 시 null, 등록 시 서재 ID(10L)를 반환하는지 확인합니다. LibraryServiceTest의 책 등록(1L), 책 삭제(null), 상태 변경(library.getId())에서 libraryId() 필드를 검증합니다.
Book 컨트롤러 테스트
src/test/java/app/nook/controller/book/BookControllerTest.java
도서 상세 조회(ISBN/bookId 기반), 도서 등록, 도서 수정의 6개 테스트에서 BookDetailDto 빌더에 libraryId(null 또는 값)를 설정하고, jsonPath로 응답 값을 검증하며, REST Docs responseFields에 libraryId를 optional()로 추가하여 응답 스펙을 확장합니다.
Library 컨트롤러 테스트
src/test/java/app/nook/controller/library/LibraryControllerTest.java
책 등록/삭제/상태변경의 3개 테스트에서 BookStatusResponseDto 생성자 인자에 libraryId를 추가하고, jsonPath 검증(등록 시 1L, 삭제 시 nullValue(), 상태변경 시 library.getId())과 REST Docs 명세를 업데이트합니다.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • UMC-NOOK/Server#267: 두 PR 모두 BookConverter.toBookDetailDto(...) 및 도서 상세/서재 응답 DTO의 빌더/생성자 매핑을 같은 방식으로 확장하여 응답 구성 로직이 직접 겹칩니다.
  • UMC-NOOK/Server#209: 본 PR은 서재 도서 상태 응답 DTO에 libraryId를 추가하고, 이는 서재 책 상태 조회 및 응답 구성 기능(#209의 /api/library/status 구현)과 같은 기능 영역에 직접 연결됩니다.

Poem

🐰 작은 책장에 ID를 더하니,
서재의 정체성이 명확해지고,
테스트도 다섯 개 줄 추가해,
다섯 겹의 확신으로 변수가 빛나네! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목은 주요 변경 사항인 서재 ID(libraryId)를 API 응답에 추가하는 것을 명확하고 간결하게 요약합니다.
Linked Issues check ✅ Passed PR은 issue #266의 모든 코딩 요구사항을 충족합니다: 도서 상세 조회, 도서 등록/수정 API에 libraryId 추가, 테스트 코드 작성 완료.
Out of Scope Changes check ✅ Passed 모든 변경사항이 issue #266의 libraryId 통일 작업 범위 내에 있으며, 관련 DTO, 서비스, 테스트 코드 수정으로 구성됩니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/#266-unify-library-id

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@JiwonLee42

Copy link
Copy Markdown
Contributor
Overall Project 67.98% 🍏
Files changed 100% 🍏

File Coverage
LibraryCommandService.java 94.44% 🍏
BookConverter.java 71.23% 🍏

@kjhyeon0620 kjhyeon0620 merged commit 5136a50 into develop-demo Jun 2, 2026
5 checks passed
@kjhyeon0620 kjhyeon0620 deleted the refactor/#266-unify-library-id branch June 2, 2026 17:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REFACTOR] 서재 ID 변수명 통일

2 participants