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

refactor: 카테고리, 일시 선택 순서 변경 및 리팩터링 (스타카토 생성/수정) #564

Closed
6 tasks done
s6m1n opened this issue Dec 1, 2024 · 1 comment · Fixed by #567
Closed
6 tasks done
Assignees
Labels
refactor 리팩토링 (변수 및 메서드 네이밍 변경) ✅ test 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없음)

Comments

@s6m1n
Copy link
Member

s6m1n commented Dec 1, 2024

🤮 As Is

공유하기 구현에 앞서 스타카토 생성/수정 화면카테고리, 일시 선택 기능을 리팩터링합니다.

🤩 To Be

  • 카테고리, 일시 선택 로직 테스트 추가
  • 카테고리, 일시 선택 순서 변경 (@linirini 제안)
  • 카테고리, 일시 선택 코드 리팩터링

용어 정리

  • 자동 선택 : 생성 페이지 진입 시 아래처럼 자동으로 선택되어있는 기본 값
image
  • 선택 가능 : 사용자가 선택 가능한 후보 목록
image

순서 변경 후 예상 로직

카테고리 특정 X (메인 화면에서 생성) 카테고리 특정 O (카테고리 조회 화면에서 생성)
image image
자동 선택된
일시
현재 일시 현재 일시와 가장 가까운 해당 카테고리 범위 내 일시
자동 선택된
카테고리
현재 날짜에서 선택할 수 있는 첫 번째 카테고리 해당하는 카테고리
선택 가능한
일시
현재 기준 ±10년에 해당하는 날짜, 모든 시간 제공 해당 카테고리 기간 내 날짜, 모든 시간 제공
선택 가능한
카테고리
현재 날짜에서 선택할 수 있는 모든 카테고리 해당하는 카테고리
카테고리
변경 가능
O X
일시 변경 시 날짜 기준 선택 가능 카테고리 후보 다시 로드 고정 카테고리이므로 고려할 필요 X

😇 이때까지 끝낼게요!

12월 8일

🙇‍♀️이슈 확인했어요:)

팀원에게 이슈 확인을 부탁해요!

@s6m1n s6m1n added refactor 리팩토링 (변수 및 메서드 네이밍 변경) ✅ test 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없음) labels Dec 1, 2024
@s6m1n s6m1n self-assigned this Dec 1, 2024
@linirini
Copy link
Contributor

linirini commented Dec 2, 2024

플로우에 따라 로직을 다르게 가져가는 것이 복잡하지 않다면 이대로 가도 될 것 같아요!
(만약, 복잡할 것 같으면 홈화면에서 스타카토 추가 로직을 따라가도 괜찮을 것 같습니다!)

s6m1n added a commit that referenced this issue Jan 11, 2025
* build: 테스트를 위한 mockK 의존성 추가

* build: InstantTaskExecutorRule 설정을 위한 androidx.arch.core 의존성 추가

* refactor: MemoryCandidate 파일 분리 및 isDateWithinPeriod 추가

* build: 테스트 파라미터를 위한 junitparams 의존성 추가

* test: MemoryCandidateTest 테스트 추가

* test: MemoryCandidatesTest 테스트 추가

* feat: MemoryCandidate에 getClosestDateTime 구현

* test: MemoryCandidate의 getClosestDateTime 테스트 추가

* feat: MemoryCandidates에 getValidMemoryCandidate 메서드 오버로딩

* test: MemoryCandidates의 getValidMemoryCandidate 메서드 테스트 추가

* ui: 스타카토 수정/생성 화면의 일시 선택과 추억 선택 순서 변경

* refactor: getValidMemoryCandidate 메서드 명 filterCandidatesBy로 수정

* refactor: MemoryCandidate의 getClosestDateTime 로직 수정 및 테스트 가독성 개선

* refactor: VisitedAtSelectionFragment
 변수명 변경 및 public 함수 리팩터링

* refactor: 스타카토 생성 화면에서 일시, 추억 선택 순서 변경

- initMemoryAndVisitedAt() : memoryId에 따라 일시, 추억을 초기화
- setMemoryCandidateByVisitedAt() : 일시에 따라 추억을 설정

* test: StaccatoCreationViewModel 테스트 추가

* refactor: 스타카토 수정 화면에서 일시, 추억 선택 순서 변경

- initMemoryAndVisitedAt() : 스타카토에 따라 일시, 추억을 초기화
- setMemoryCandidateByVisitedAt() : 일시에 따라 추억을 설정

* test: StaccatoUpdateViewModel 테스트 추가

* ui: 선택할 수 있는 추억이 없는 경우, 추억 선택 뷰 클릭 비활성화

* fix: setMemoryCandidateByVisitedAt 메서드 emptyList 예외로 인한 버그

* test: MainDispatcherRule 클래스 추가 및 적용

* ui: 불필요한 TextView, 바인딩 어댑터, stringRes 제거

* style: updateMemoryCandidateAndVisitedAt 메서드 파라미터 명 수정

* test: StaccatoCreationViewModelTest에 runTest와 advanceUntilIdle 적용

* test: StaccatoUpdateViewModelTest에 runTest와 advanceUntilIdle 적용

* style: ktLintFormat

* refactor: 스타카토 생성/수정 activity의 observe 메서드 그룹화

* refactor: Staccato 조회 화면에서 staccatoId를 불러올 수 없을 때 예외 반환

* refactor: 카테고리가 특정되지 않음을 의미하는 0L값 상수화

* refactor: toLocalDate 메서드 중복 호출 개선

* refactor: changeTimeToNoon 메서드 분리

* refactor: setSelectedMemory 메서드 if문 -> when문으로 변경

* refactor: 스타카토 생성/수정 ViewModel 메서드명 단순화 (매개변수 정보 제거)

* refactor: MemoryCandidateTest에서 assertTrue, assertFalse 활용

* refactor: MemoryCandidateTest 메서드명 개선 및 Parameters 추가

* refactor: 테스트 코드 개선

- 불필요한 Assert 제거
- 공통 로직 함수 분리
- ExperimentalCoroutinesApi 어노테이션 이동

* fix: DEFAULT_STACCATO_ID 다시 추가

* refactor: id가 파라미터인 findCandidatesBy의 반환값 변경

* style: 불필요한 it 제거 및 메서드 순서 변경

* refactor: LocalDate 관련 테스트 픽스처 네이밍 변경

* refactor: 테스트 코드 변수명, 함수 순서 변경

* refactor: 스타카토 생성, 수정 뷰모델 공통 로직 MemoryCandidates로 분리

* test: MemoryCandidates - findByIdOrFirst 테스트 구현

* refactor: setMemoryCandidateBy -> updateMemorySelectionBy 메서드명 변경

* feat: 일시 선택을 위한 Calendar 도메인 모델과 팩토리 메서드 추가

* feat: DateCalendar 클래스 public 함수 및 유효성 검사 추가

* test: DateCalendar 테스트 구현

* fix: DateCalendar 날짜 유효성 버그 수정

* feat: MonthCalendar 클래스 public 함수 및 유효성 검사 추가

* test: MonthCalendar 테스트 구현

* feat: YearCalendar 클래스 public 함수 및 유효성 검사 추가

* test: YearCalendar 테스트 구현

* feat: YearCalendar 날짜 선택을 위한 프로퍼티와 메서드 추가

* feat: VisitedAtSelectionFragment에 YearCalendar 적용

* feat: visitedAt을 기준으로 YearCalendar를 생성하는 팩토리 메서드 추가

* refactor: visitedAt을 기준으로 YearCalendar를 생성하는 팩토리 메서드 적용

* refactor: MemoryCandidate 불필요한 동반객체 제거

* feat: YearCalendar 날짜 선택 범위 10년에서 100년으로 수정
@hxeyexn hxeyexn closed this as completed Jan 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
refactor 리팩토링 (변수 및 메서드 네이밍 변경) ✅ test 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없음)
Projects
Status: Done
3 participants