- LineService의 비즈니스 로직을 도메인으로 옮기기
- 한번에 많은 부분을 고치려 하지 말고 나눠서 부분부분 리팩터링하기
- 전체 기능은 인수 테스트로 보호한 뒤 세부 기능을 TDD로 리팩터링하기
- Domain으로 옮길 로직을 찾기
- 스프링 빈을 사용하는 객체와 의존하는 로직을 제외하고는 도메인으로 옮길 예정
- 객체지향 생활체조를 참고
- Domain의 단위 테스트를 작성하기
- 서비스 레이어에서 옮겨 올 로직의 기능을 테스트
- SectionsTest나 LineTest 클래스가 생성될 수 있음
- 로직을 옮기기
- 기존 로직을 지우지 말고 새로운 로직을 만들어 수행
- 정상 동작 확인 후 기존 로직 제거
- StationService 대신 StationRepository 사용
- Domain으로 옮길 로직을 찾기
- Section 추가
- Section 조회
- Section 제거
- Section Validation
- Stations 조회
- 로직 옮기기
- Section 조회 기능
- Domain의 단위 테스트를 작성하기
- 새로운 로직 만들기
- 정상 동작 확인 후 기존 로직 제거
- Section 등록 Validation 기능
- Domain의 단위 테스트를 작성하기
- 새로운 로직 만들기
- 정상 동작 확인 후 기존 로직 제거
- Section 추가 기능
- Domain의 단위 테스트를 작성하기
- 새로운 로직 만들기
- 정상 동작 확인 후 기존 로직 제거
- Section 제거 기능
- Domain의 단위 테스트를 작성하기
- 새로운 로직 만들기
- 정상 동작 확인 후 기존 로직 제거
- Stations 조회 기능
- Domain의 단위 테스트를 작성하기
- 새로운 로직 만들기
- 정상 동작 확인 후 기존 로직 제거
- Section 조회 기능
- 최단 경로 조회 기능 구현하기
- 최단 경로 조회 인수 테스트 작성
- 최단 경로 조회 기능 추가
- 예외 사항 Validation 기능 구현하기
- 출발역과 도착역이 같은 경우
- 인수 테스트 작성
- 도메인 테스트 작성
- Validation 기능 구현
- 출발역과 도착역이 연결이 되어 있지 않은 경우
- 인수 테스트 작성
- 도메인 테스트 작성
- Validation 기능 구현
- 존재하지 않은 출발역이나 도착역을 조회 할 경우
- 인수 테스트 작성
- Validation 기능 구현
- 출발역과 도착역이 같은 경우
- 토큰 발급 기능 (로그인) 인수 테스트 만들기
- Bearer Auth 유효하지 않은 경우 예외처리 기능 구현
- 인증 - 내 정보 조회 기능 완성하기
- 인수 테스트 작성
- 기능 구현
- 인증 - 즐겨 찾기 기능 완성하기
- 즐겨 찾기 생성 기능 구현
- 인수 테스트 작성
- 기능 구현
- 즐겨 찾기 삭제 기능 구현
- 인수 테스트 작성
- 기능 구현
- 즐겨 찾기 조회 기능 구현
- 인수 테스트 작성
- 기능 구현
- 즐겨 찾기 생성 기능 구현
- 경로 조회 시 거리 기준 요금 정보 포함하기
- 기본운임(10㎞ 이내) : 기본운임 1,250원
- 이용 거리 초과 시 추가 운임 부과
- 10km 초과 ∼ 50km 까지 (5km마다 100원)
- 50km 초과 시 (8km마다 100원)
- 노선별 추가 요금 정책 추가
- 노선에 추가 요금 필드를 추가
- 추가 요금이 있는 노선을 이용 할 경우 측정된 요금에 추가
- 경로 중 추가요금이 있는 노선을 환승 하여 이용 할 경우 가장 높은 금액의 추가 요금만 적용
- 연령별 할인 정책 추가
- 인수테스트 작성
- 청소년(13세 이상~19세 미만): 운임에서 350원을 공제한 금액의 20% 할인
- 어린이(6세 이상~ 13세 미만): 운임에서 350원을 공제한 금액의 50% 할인
- 비로그인 시 기본 요금 적용