Skip to content

Gyeom/atdd-subway-service

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 1단계 - 인수 테스트 기반 리팩터링

  • LineService의 비즈니스 로직을 도메인으로 옮기기
  • 한번에 많은 부분을 고치려 하지 말고 나눠서 부분부분 리팩터링하기
  • 전체 기능은 인수 테스트로 보호한 뒤 세부 기능을 TDD로 리팩터링하기
  1. Domain으로 옮길 로직을 찾기
  • 스프링 빈을 사용하는 객체와 의존하는 로직을 제외하고는 도메인으로 옮길 예정
  • 객체지향 생활체조를 참고
  1. Domain의 단위 테스트를 작성하기
  • 서비스 레이어에서 옮겨 올 로직의 기능을 테스트
  • SectionsTest나 LineTest 클래스가 생성될 수 있음
  1. 로직을 옮기기
  • 기존 로직을 지우지 말고 새로운 로직을 만들어 수행
  • 정상 동작 확인 후 기존 로직 제거

요구사항 기능 체크리스트 (LineService)

  • StationService 대신 StationRepository 사용
  • Domain으로 옮길 로직을 찾기
    • Section 추가
    • Section 조회
    • Section 제거
    • Section Validation
    • Stations 조회
  • 로직 옮기기
    • Section 조회 기능
      • Domain의 단위 테스트를 작성하기
      • 새로운 로직 만들기
      • 정상 동작 확인 후 기존 로직 제거
    • Section 등록 Validation 기능
      • Domain의 단위 테스트를 작성하기
      • 새로운 로직 만들기
      • 정상 동작 확인 후 기존 로직 제거
    • Section 추가 기능
      • Domain의 단위 테스트를 작성하기
      • 새로운 로직 만들기
      • 정상 동작 확인 후 기존 로직 제거
    • Section 제거 기능
      • Domain의 단위 테스트를 작성하기
      • 새로운 로직 만들기
      • 정상 동작 확인 후 기존 로직 제거
    • Stations 조회 기능
      • Domain의 단위 테스트를 작성하기
      • 새로운 로직 만들기
      • 정상 동작 확인 후 기존 로직 제거

🚀 2단계 - 경로 조회 기능

요구사항 기능 체크리스트

  • 최단 경로 조회 기능 구현하기
    • 최단 경로 조회 인수 테스트 작성
    • 최단 경로 조회 기능 추가
    • 예외 사항 Validation 기능 구현하기
      • 출발역과 도착역이 같은 경우
        • 인수 테스트 작성
        • 도메인 테스트 작성
        • Validation 기능 구현
      • 출발역과 도착역이 연결이 되어 있지 않은 경우
        • 인수 테스트 작성
        • 도메인 테스트 작성
        • Validation 기능 구현
      • 존재하지 않은 출발역이나 도착역을 조회 할 경우
        • 인수 테스트 작성
        • Validation 기능 구현

🚀 3단계 - 인증을 통한 기능 구현

요구사항 기능 체크리스트

  • 토큰 발급 기능 (로그인) 인수 테스트 만들기
    • Bearer Auth 유효하지 않은 경우 예외처리 기능 구현
  • 인증 - 내 정보 조회 기능 완성하기
    • 인수 테스트 작성
    • 기능 구현
  • 인증 - 즐겨 찾기 기능 완성하기
    • 즐겨 찾기 생성 기능 구현
      • 인수 테스트 작성
      • 기능 구현
    • 즐겨 찾기 삭제 기능 구현
      • 인수 테스트 작성
      • 기능 구현
    • 즐겨 찾기 조회 기능 구현
      • 인수 테스트 작성
      • 기능 구현

🚀 4단계 - 요금 조회

요구사항 기능 체크리스트

  • 경로 조회 시 거리 기준 요금 정보 포함하기
    • 기본운임(10㎞ 이내) : 기본운임 1,250원
    • 이용 거리 초과 시 추가 운임 부과
      • 10km 초과 ∼ 50km 까지 (5km마다 100원)
      • 50km 초과 시 (8km마다 100원)
  • 노선별 추가 요금 정책 추가
    • 노선에 추가 요금 필드를 추가
    • 추가 요금이 있는 노선을 이용 할 경우 측정된 요금에 추가
    • 경로 중 추가요금이 있는 노선을 환승 하여 이용 할 경우 가장 높은 금액의 추가 요금만 적용
  • 연령별 할인 정책 추가
    • 인수테스트 작성
    • 청소년(13세 이상~19세 미만): 운임에서 350원을 공제한 금액의 20% 할인
    • 어린이(6세 이상~ 13세 미만): 운임에서 350원을 공제한 금액의 50% 할인
    • 비로그인 시 기본 요금 적용

About

우아한테크캠프 pro ATDD 과정 저장소

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 46.2%
  • SCSS 29.6%
  • Vue 17.4%
  • JavaScript 6.5%
  • HTML 0.3%