Skip to content

[공통] 키워드 알림 EventListener 책임 분리 #2219

@Soundbar91

Description

@Soundbar91

Problem

  • ArticleKeywordEventListener 클래스에는 이벤트 수신 및 알림 발송 이외의 비즈니스 로직이 산재되어 있음
    • 키워드 구독자 조회 및 필터링
    • 매칭된 사용자 ID 교집합 계산
    • 이미 알림을 받은 사용자 제외
    • 자기 게시글 알림 제외
    • 알림 발송 후 알림 이력 저장
  • 신입생이 입학하는 매년 초기에 게시글 키워드 알림 개수가 급격하게 증가하고 최소 한 건의 오류 제보 발생
  • 향후 발생하는 오류를 막기 위해 테스트 코드를 작성하였지만, 단위 테스트에서는 과도한 mock을 해야하는 상황과 통합 테스트 과정에서는 테스트를 제외시킨 상황
  • 또한, ArticleKeywordEventListener의 단위 테스트가 비즈니스 로직 테스트를 진행하는 것은 적절치 않다고 판단

Proposed Change

  • ArticleKeywordEventListener에서 비즈니스 로직을 서비스로 분리
  • ArticleKeywordEventListener를 서비스 호출 + 알림 발송만 남도록 정리
  • ArticleKeywordEventListener 단위 테스트에서 비즈니스 로직 테스트 삭제
  • 분리된 서비스에 대한 단위 테스트 작성

Tasks

  • ArticleKeywordEventListener 클래스 리펙토링
  • 키워드 알림 단위 테스트 및 통합 테스트 작성

Acceptance Criteria

  • ArticleKeywordEventListener 코드 라인 수 : 140줄 → 30줄 내외
  • 분리된 키워드 알림 비즈니스 로직 테스트 커버리지 95%

Metadata

Metadata

Assignees

Labels

리팩터링리팩터링을 위한 이슈입니다

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions