Skip to content

refactor(api): DEFAULT_CATEGORIES 중복 제거 및 OAuth 테스트 추가#115

Merged
dydals3440 merged 3 commits intomainfrom
refactor/default-categories-consolidation
Feb 5, 2026
Merged

refactor(api): DEFAULT_CATEGORIES 중복 제거 및 OAuth 테스트 추가#115
dydals3440 merged 3 commits intomainfrom
refactor/default-categories-consolidation

Conversation

@dydals3440
Copy link
Contributor

📋 요약

기본 카테고리(DEFAULT_CATEGORIES) 중복 정의를 제거하고 단일 소스로 통합하며, 모든 OAuth 소셜 로그인(Apple/Google/Kakao/Naver) 시 기본 카테고리 생성에 대한 테스트를 추가합니다.

🔗 관련 이슈

Closes #114

📝 변경 내용

1. DEFAULT_CATEGORIES 통합

  • auth.service.ts의 로컬 정의 제거 → todo-category.types.ts에서 import
  • oauth.service.ts의 로컬 정의 제거 → todo-category.types.ts에서 import

2. Unit 테스트 추가 (oauth.service.spec.ts)

  • Apple/Google/Kakao/Naver 로그인 시 기본 카테고리 2개 생성 검증
  • 기존 사용자 재로그인 시 카테고리 미생성 검증

3. Integration 테스트 추가 (oauth.integration-spec.ts)

  • 실제 DB에 카테고리 생성 확인
  • 카테고리 속성(이름, 색상, 순서) 검증
  • 기존 사용자 재로그인 시 중복 생성 방지 검증

4. Biome 설정 개선

  • 테스트 파일(*.spec.ts, *.test.ts)에서 noExplicitAny 규칙 비활성화
  • 테스트 mock 객체 생성 시 필요한 유연성 확보

✅ 체크리스트

  • Unit 테스트 통과 (55 passed)
  • Integration 테스트 통과 (39 passed)
  • E2E 테스트 통과 (262 passed)
  • typecheck 통과
  • lint 통과 (경고 0개)

- auth.service.ts에서 로컬 DEFAULT_CATEGORIES 제거, 공통 타입에서 import
- oauth.service.ts에서 로컬 DEFAULT_CATEGORIES 제거, 공통 타입에서 import
- oauth.service.spec.ts에 기본 카테고리 생성 Unit 테스트 6개 추가
  - Apple/Google/Kakao/Naver 로그인 시 기본 카테고리 2개 생성 검증
  - 기존 사용자 재로그인 시 카테고리 미생성 검증
- oauth.integration-spec.ts에 기본 카테고리 생성 Integration 테스트 5개 추가
  - 실제 DB에 카테고리 생성 및 속성(이름, 색상, 순서) 검증
  - 기존 사용자 재로그인 시 중복 생성 방지 검증
- .gitignore 업데이트
- biome.json overrides 설정 추가
- *.spec.ts, *.test.ts 파일에서 any 타입 사용 허용
- 테스트 mock 객체 생성 시 필요한 유연성 확보
@dydals3440 dydals3440 added type: refactor 🧹 코드 개선 - 기능 변경 없이 가독성과 유지보수성을 높여 기술 부채를 해결하는 작업 type: test 🧪 테스트 - 품질 검증을 위한 단위/통합/E2E 테스트 추가 및 수정 scope: api 🌐 API - NestJS 서버 로직, DB 스키마 및 백엔드 인프라 관련 status: needs review 🔍 리뷰 대기 - 작업 완료 후 병목 제거를 위해 팀원의 빠른 피드백이 필요한 상태 labels Feb 5, 2026
@dydals3440 dydals3440 self-assigned this Feb 5, 2026
@gemini-code-assist
Copy link

Summary of Changes

Hello @dydals3440, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 DEFAULT_CATEGORIES의 중복 정의를 제거하고 이를 단일 소스로 통합하여 코드의 일관성과 유지보수성을 향상시킵니다. 또한, 모든 OAuth 소셜 로그인 과정에서 신규 사용자에게 기본 카테고리가 정확히 생성되고 기존 사용자에게는 중복 생성되지 않음을 보장하기 위한 포괄적인 단위 및 통합 테스트를 추가하여 시스템의 견고성을 강화합니다. 마지막으로, 테스트 코드 작성의 편의성을 위해 Biome 린터 설정을 조정했습니다.

Highlights

  • DEFAULT_CATEGORIES 통합: DEFAULT_CATEGORIES 정의를 단일 소스로 통합하여 auth.service.tsoauth.service.ts의 중복을 제거하고 todo-category.types.ts에서 import하도록 변경했습니다.
  • OAuth 테스트 강화: Apple, Google, Kakao, Naver 등 모든 OAuth 소셜 로그인 시 신규 사용자에게 기본 카테고리 2개가 올바르게 생성되는지 확인하는 단위 테스트를 추가했습니다. 또한, 기존 사용자의 재로그인 시 카테고리가 중복 생성되지 않음을 검증하는 테스트도 포함했습니다.
  • 통합 테스트 추가: 실제 DB에 기본 카테고리가 생성되고 카테고리 속성(이름, 색상, 순서)이 올바른지 검증하는 통합 테스트를 추가했습니다. 기존 사용자 재로그인 시 중복 생성을 방지하는 검증 로직도 포함되었습니다.
  • Biome 설정 개선: 테스트 파일(*.spec.ts, *.test.ts)에서 suspicious.noExplicitAny 린터 규칙을 비활성화하도록 Biome 설정을 개선하여 mock 객체 생성 시 필요한 유연성을 확보했습니다.
Changelog
  • .gitignore
    • my-docs 디렉토리를 .gitignore에 추가하여 버전 관리에서 제외했습니다.
  • apps/api/biome.json
    • 테스트 파일(*.spec.ts, *.test.ts)에서 suspicious.noExplicitAny 린터 규칙을 비활성화하는 overrides 설정을 추가했습니다. 이는 테스트 환경에서 mock 객체 사용 시 any 타입 사용의 유연성을 확보하기 위함입니다.
  • apps/api/src/modules/auth/services/auth.service.spec.ts
    • 테스트 mock 객체에서 as any 캐스팅을 as never로 변경하여 타입 안정성을 개선했습니다.
  • apps/api/src/modules/auth/services/auth.service.ts
    • DEFAULT_CATEGORIES의 로컬 정의를 제거하고 todo-category.types.ts에서 import하도록 변경하여 단일 소스 원칙을 따랐습니다.
  • apps/api/src/modules/auth/services/oauth.service.spec.ts
    • 테스트 mock 객체에서 as any 캐스팅을 as never로 변경하여 타입 안정성을 개선했습니다.
    • 신규 Apple, Google, Kakao, Naver 소셜 로그인 사용자에 대해 기본 카테고리 2개가 생성되는지 검증하는 단위 테스트를 추가했습니다.
    • 기존 소셜 로그인 사용자가 재로그인할 때 카테고리가 중복 생성되지 않는지 검증하는 단위 테스트를 추가했습니다.
  • apps/api/src/modules/auth/services/oauth.service.ts
    • DEFAULT_CATEGORIES의 로컬 정의를 제거하고 todo-category.types.ts에서 import하도록 변경하여 단일 소스 원칙을 따랐습니다.
  • apps/api/test/integration/oauth.integration-spec.ts
    • Apple, Google, Kakao, Naver 소셜 로그인 시 실제 DB에 기본 카테고리 2개가 올바른 이름, 색상, 순서로 생성되는지 확인하는 통합 테스트를 추가했습니다.
    • 기존 사용자가 재로그인할 때 기본 카테고리가 중복 생성되지 않음을 검증하는 통합 테스트를 추가했습니다.
Activity
  • 모든 Unit 테스트(55개)가 성공적으로 통과했습니다.
  • 모든 Integration 테스트(39개)가 성공적으로 통과했습니다.
  • 모든 E2E 테스트(262개)가 성공적으로 통과했습니다.
  • 타입 검사(typecheck)가 성공적으로 완료되었습니다.
  • 린트 검사(lint)에서 경고가 0개 발생했습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

이 PR은 DEFAULT_CATEGORIES 상수의 중복 정의를 제거하여 코드를 리팩토링하고, 모든 OAuth 제공자에 대한 기본 카테고리 생성 로직의 단위 및 통합 테스트를 추가하여 코드 품질과 안정성을 크게 향상시켰습니다. 전반적으로 훌륭한 변경입니다.

다만, 새로 추가된 테스트 코드에 중복이 있어 it.each를 사용하여 리팩토링하면 가독성과 유지보수성을 더욱 높일 수 있을 것 같습니다. 이는 중복 로직이 세 곳 이상에서 발견될 때 추상화를 고려하라는 규칙과도 일치합니다. 자세한 내용은 각 파일에 남긴 주석을 참고해주세요.

- oauth.service.spec.ts: Provider별 테스트를 it.each로 통합
- oauth.integration-spec.ts: 기본 카테고리 생성 테스트를 it.each로 통합
- 코드 중복 85줄 감소 (254줄 → 169줄)

Gemini 코드 리뷰 피드백 반영
@dydals3440 dydals3440 merged commit 7fb2df6 into main Feb 5, 2026
3 checks passed
@dydals3440 dydals3440 deleted the refactor/default-categories-consolidation branch February 5, 2026 09:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

scope: api 🌐 API - NestJS 서버 로직, DB 스키마 및 백엔드 인프라 관련 status: needs review 🔍 리뷰 대기 - 작업 완료 후 병목 제거를 위해 팀원의 빠른 피드백이 필요한 상태 type: refactor 🧹 코드 개선 - 기능 변경 없이 가독성과 유지보수성을 높여 기술 부채를 해결하는 작업 type: test 🧪 테스트 - 품질 검증을 위한 단위/통합/E2E 테스트 추가 및 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: 기본 카테고리 생성 로직 통합 및 테스트 추가

1 participant