Skip to content

Fix: 테스트 작성 중 발견한 버그 6건 수정 - #22

Merged
ssarisong merged 6 commits into
mainfrom
fix/17-bug-fix-20260902
Sep 11, 2026
Merged

Fix: 테스트 작성 중 발견한 버그 6건 수정#22
ssarisong merged 6 commits into
mainfrom
fix/17-bug-fix-20260902

Conversation

@KIMB0B

@KIMB0B KIMB0B commented Sep 3, 2026

Copy link
Copy Markdown
Member

📌 변경 내용

테스트 코드 작성 중 발견한 버그 6건 + 추가로 발견한 버그 2건을 수정했습니다.

  • member: 회원 정보 수정 시 IntegrityError 처리 블록이 MemberUpdateIn에 없는 data.email을 참조해 AttributeError로 죽던 문제 수정 → create()처럼 bad_request(400)로 정상 변환
  • notice: hard delete 시 삭제 상태(is_deleted)를 체크하지 않던 문제 수정 → member/project와 동일하게 soft delete 안 된 공지는 hard delete 불가
  • chat: 1:1 채팅방 생성 시 body의 project_id가 경로와 달라도 검증 없이 처리되던 문제 → 애초에 안 쓰이던 body의 project_id 필드 자체를 제거해 불일치가 구조적으로 불가능하도록 수정. 겸사겸사 대상 멤버가 해당 프로젝트 멤버인지도 검증하도록 추가 (프로필 페이지에서 임의 프로젝트로 DM 생성 가능하던 문제)
  • work/project: start_date/end_date가 timezone 정보 없이 저장되던 문제 → 컬럼 타입을 timezone-aware로 변경 + 마이그레이션 추가
  • chat: 채팅방을 삭제해도 멤버십 행이 남아있어 메시지 이력 조회/전송이 계속 가능하던 문제 수정 → 방 존재/삭제 여부를 먼저 확인하도록 수정
  • 공통: AppError.not_found()에 완성된 문장을 그대로 넘겨 "~습니다.을(를) 찾을 수 없습니다."처럼 메시지가 중복 출력되던 문제를 8개 파일에서 일괄 정리
  • 알렘빅: chat 기능 마이그레이션의 downgrade()가 테이블만 지우고 Postgres ENUM 타입은 안 지워서, downgrade 후 재적용 시 type already exists 에러가 나던 문제 수정

프론트(정적 테스트 페이지)도 같이 손봤습니다: DM 생성 진입점을 "프로필에서 프로젝트 선택"에서 "프로젝트 멤버 목록에서 바로 시작"으로 변경해, 애초에 잘못된 프로젝트를 고르거나 멤버가 아닌 사람과 DM방을 만들 수 있는 상황 자체를 없앴습니다.

참고로 초대 거절(decline_invitation)이 만료 여부를 체크하지 않는 것도 원래 버그 리포트에 있었지만, 검토 결과 accept와 달리 decline은 부작용(멤버십 생성)이 없어서 만료 여부와 상관없이 항상 성공 처리하는 게 맞다고 판단해 수정하지 않았습니다.

🎯 변경 이유

테스트 코드를 작성하는 과정에서 예외 처리 누락·검증 누락·타입 불일치로 보이는 버그들을 발견해 수정했습니다. 일부는 수정 중에 관련된 다른 문제(채팅 메시지 접근 제어, 에러 메시지 중복, 마이그레이션 downgrade 버그)도 같이 발견되어 함께 정리했습니다.

🔗 관련 이슈

🧪 테스트 방법

  • 로컬에서 직접 테스트
  • 테스트 코드 추가/수정
  • 수동 테스트 (아래 설명)

테스트 상세

1. member: MemberUpdateIn 필드만으로 수정 요청 시 IntegrityError 강제 발생 → AttributeError 없이 400 응답 확인
2. notice: soft delete 안 된 공지에 hard=true로 삭제 요청 → 400 응답 확인
3. chat: 프로젝트 멤버 목록에서 DM 버튼으로 방 생성 → 정상 생성 확인
4. work/project: timezone-aware datetime으로 생성 요청 → DataError 없이 정상 저장 확인 (DB에서 timestamp with time zone 컬럼 타입 직접 확인)
5. chat: DM 방 생성 → 메시지 전송 → 방 삭제 → 삭제 후 메시지 조회/전송 시도 → 둘 다 404 확인 (서비스 레이어 직접 호출 스크립트로 검증)
6. alembic: downgrade -1 → upgrade head 반복 실행 → ENUM 타입 관련 에러 없이 정상 재적용 확인

✅ 체크리스트

  • lint / format 통과
  • 기존 기능에 영향 없음
  • 에러/엣지 케이스 고려
  • 관련 문서 업데이트 (필요 시)

@KIMB0B
KIMB0B requested a review from ssarisong September 3, 2026 09:43
@KIMB0B KIMB0B self-assigned this Sep 3, 2026
@KIMB0B KIMB0B linked an issue Sep 3, 2026 that may be closed by this pull request

@ssarisong ssarisong left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

확인 완료했습니다

@ssarisong
ssarisong merged commit 26f9413 into main Sep 11, 2026
1 check passed
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.

[FIX] 테스트 작성 중 발견한 버그 6건 수정

2 participants