-
Notifications
You must be signed in to change notification settings - Fork 1
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 #567
refactor: 카테고리, 일시 선택 순서 변경 및 리팩터링 (스타카토 생성/수정) #564 #567
Conversation
변수명 변경 및 public 함수 리팩터링
- initMemoryAndVisitedAt() : memoryId에 따라 일시, 추억을 초기화 - setMemoryCandidateByVisitedAt() : 일시에 따라 추억을 설정
- initMemoryAndVisitedAt() : 스타카토에 따라 일시, 추억을 초기화 - setMemoryCandidateByVisitedAt() : 일시에 따라 추억을 설정
android/Staccato_AN/app/src/main/java/com/on/staccato/domain/model/MemoryCandidates.kt
Show resolved
Hide resolved
android/Staccato_AN/app/src/main/java/com/on/staccato/domain/model/MemoryCandidates.kt
Show resolved
Hide resolved
...in/java/com/on/staccato/presentation/staccatocreation/viewmodel/StaccatoCreationViewModel.kt
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
테스트 작성을 정말 꼼꼼하게 해주셨네요! 👍
// 2024년은 윤년이라 2월이 29일까지 있다 | ||
val expected = (1..29).toList() | ||
val actual = DateCalendar.of(2024, 2).availableDates | ||
assertEquals(expected, actual) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CallAdapter가 머지된 후에 JUnit5로 마이그레이션해보는 것도 좋을 것 같네용!
fun `범위보다 작으면 가장 첫번째 월을 반환한다`(targetMonth: Int) { | ||
val firstMonth = 4 | ||
val actual = aprilToAugustCalendar.getClosestMonth(targetMonth) | ||
|
||
assertEquals(firstMonth, actual) | ||
} | ||
|
||
@Test | ||
@Parameters(method = "monthParametersGraterThan8") | ||
fun `범위보다 크면 가장 마지막 월을 반환한다`(targetMonth: Int) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
어떤 범위인지 좀 더 구체적이면 테스트하고자하는 바가 확실히 전달될 것 같아요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
진짜 혼또니 완전 너무나 엄청나게 어메이징 고생 많았습니다...!! 😭
정말 모든 리뷰를 다 반영해주셨네요.... 리뷰 양도 많았고 우테코 미션보다도 규모가 더 커서 리뷰 반영이 많이 힘드셨을텐데, 정말 고생많았고 또 감사합니다!!! 🙇♂️🙇♂️🙇♂️
더이상 피드백드릴게 없을 것 같아요! 드디어 Approve를.. 머지를 해보자구요!
이제는 리뷰 일정과 분량을 생각해서 효율적으로 리뷰를 해봅시다ㅎㅎ🥲
그저 갓티!!!!
@Test | ||
fun `기간의 시작과 끝을 정하지 않으면 2025년 2월의 모든 일을 반환한다`() { | ||
// 2025년은 2월 28일까지 있다 | ||
val expected = (1..28).toList() | ||
val actual = DateCalendar.of(2025, 2).availableDates | ||
assertEquals(expected, actual) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
윤년인 경우와 아닌 경우도 함께 테스트로 넣어주셨네요! 👍
DateCalendar.of(2024, 2, periodStart, periodEnd) | ||
} | ||
|
||
@Test(expected = IllegalArgumentException::class) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
어노테이션의 파라미터로 예외 발생을 테스트할 수 있군요...? 😮 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
제 눈에는 좋아 보여요~
고생 많았슴당 빙티!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
확실히 코드가 더 개선된 것 같네요 👍
고생하셨습니다 빙티 🙇♂️
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생 많으셨습니다 빙티!! 😄
⭐️ Issue Number
🚩 Summary
스타카토 생성/수정 화면의 카테고리, 일시 관련 로직에 아래의 작업들을 수행했습니다.
리팩터링 내용 정리
생성 화면
fetchMemoryCandidates()
로 사용자의 모든 추억을 불러와_memoryCandidates
를 업데이트 합니다._memoryCandidates
는 최초 한 번 업데이트된 후엔 변하지 않습니다.memoryCandidates.observe
람다에서initMemoryAndVisitedAt()
를 수행하여 일시, 추억의 초기값을 세팅합니다.LocalDateTime.now()
(선택 가능한 일시 범위는 selectedVisitedAt ±10년)updateMemoryCandidateAndVisitedAt()
MemoryCandidate
의getClosestDateTime()
참고)수정 화면
fetchMemoryCandidates()
)fetchStaccatoBy()
)🛠️ Technical Concerns
스타카토 생성/수정 ViewModel 테스트
MVVM 구조의 뷰모델 내부 LiveData 값을 테스트하기 위해 아래 Rule을 설정하고 getOrAwaitValue를 추가했습니다.
또한 mockK의 coEvery와 coroutines.test의 runTest를 사용했습니다.
🙂 To Reviewer