Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BE] 코드 커버리지 분석 결과를 기반으로 테스트를 보강한다. #280

Open
5 tasks
2yujeong opened this issue Aug 12, 2022 · 0 comments
Open
5 tasks

Comments

@2yujeong
Copy link
Collaborator

2yujeong commented Aug 12, 2022

목적

코드 커버리지를 높여서 코드 안정성을 더 높이기 위함

작업 상세 내용

추가 되어야 할 테스트 케이스

  • TeamService - 팀 상세 조회 시 해당 팀 내에서 작성된 레벨로그가 존재하는 경우

     private ParticipantDto createParticipantDto(final Participant participant, final Long memberId) {
         final Levellog levellog = getLevellog(participant);
    
         if (levellog == null) {
             return ParticipantDto.from(participant, null, null);
         }
    
         return ParticipantDto.from(participant, levellog.getId(), getPreQuestionId(memberId, levellog));
     }
    
     private Long getPreQuestionId(final Long memberId, final Levellog levellog) {
         return preQuestionRepository.findByLevellogAndAuthorId(levellog, memberId)
                 .map(PreQuestion::getId)
                 .orElse(null);
     }

    현재 getPreQuestionId 메소드가 테스트 되고 있지 않습니다.

  • FeedbackService - 존재하지 않는 멤버, 레벨로그, 피드백에 대해 요청을 한 경우

     private Member getMember(final Long memberId) {
         return memberRepository
                 .findById(memberId)
                 .orElseThrow(() -> new MemberNotFoundException("멤버가 존재하지 않음 [memberId : " + memberId + "]"));
     }
    
     private Levellog getLevellog(final Long levellogId) {
         return levellogRepository.findById(levellogId)
                 .orElseThrow(() -> new LevellogNotFoundException("존재하지 않는 레벨로그. levellogId : " + levellogId));
     }
    
     private Feedback getFeedback(final Long feedbackId) {
         return feedbackRepository.findById(feedbackId)
                 .orElseThrow(() -> new FeedbackNotFoundException("존재하지 않는 피드백. feedbackId : " + feedbackId));
     }
  • AuthIntercepter - 멤버 전용 API에 잘못된 토큰으로 요청이 들어오는 경우

         final String token = AuthorizationExtractor.extract(request);
         if (!jwtTokenProvider.validateToken(token)) {
             throw new InvalidTokenException("토큰 인증 실패 - token:" + token);
         }
  • Participants - 팀 참가자 목록에 호스트가 존재하지 않는 경우

     public Long toHostId() {
         return values
                 .stream()
                 .filter(Participant::isHost)
                 .findAny()
                 .orElseThrow(() -> new MemberNotFoundException("모든 참가자 중 호스트가 존재하지 않습니다."))
                 .getMember()
                 .getId();
     }
  • PreQuestionService - 존재하지 않는 멤버가 요청을 보낸 경우

     private Member getMember(final Long memberId) {
         return memberRepository.findById(memberId)
                 .orElseThrow(() -> new MemberNotFoundException("멤버가 존재하지 않음 [memberId : " + memberId + "]"));
     }

참고 사항

  • 굳이 테스트를 추가할 필요가 없다고 판단되는 케이스는 코멘트로 남기고 넘어가 주세요 판단은 자유~!
  • MemberService - getByGithubId 메소드에서 깃허브 ID로 조회한 멤버가 존재하지 않는 경우 : 앞서 이미 memberRepository.existsByGithubId(githubId)로 존재 여부를 확인하고 true일 경우에만 getByGithubId를 실행하기 때문에 굳이 테스트할 필요가 없을 것 같아서 제외함
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants