docs(banner): Phase 6 검증을 기록한다
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -264,7 +264,7 @@
|
||||
|
||||
### Phase 6: 상태별 view test와 회귀 방지
|
||||
|
||||
- [ ] **Task 6.1: `BannerViewTest` 기본 상태 테스트 작성**
|
||||
- [x] **Task 6.1: `BannerViewTest` 기본 상태 테스트 작성**
|
||||
- 생성 파일: `app/src/test/java/kr/co/vividnext/sodalive/v2/widget/banner/BannerViewTest.kt`
|
||||
- 테스트 항목:
|
||||
- empty items 설정 시 root visibility는 `GONE`.
|
||||
@@ -272,21 +272,21 @@
|
||||
- two items 설정 시 counter는 `VISIBLE`.
|
||||
- 실행: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.banner.BannerViewTest"`
|
||||
|
||||
- [ ] **Task 6.2: `BannerViewTest` preview 속성 테스트 작성**
|
||||
- [x] **Task 6.2: `BannerViewTest` preview 속성 테스트 작성**
|
||||
- 수정 파일: `BannerViewTest.kt`
|
||||
- 테스트 항목:
|
||||
- edit mode 또는 preview 속성 처리 경로에서 sample count/current index가 counter에 반영된다.
|
||||
- preview image 속성이 있으면 placeholder/image view에 적용된다.
|
||||
- 실행: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.banner.BannerViewTest"`
|
||||
|
||||
- [ ] **Task 6.3: `BannerViewTest` click callback 테스트 작성**
|
||||
- [x] **Task 6.3: `BannerViewTest` click callback 테스트 작성**
|
||||
- 수정 파일: `BannerViewTest.kt`
|
||||
- 테스트 항목:
|
||||
- 첫 번째 배너 클릭 시 첫 번째 `BannerItem`이 callback으로 전달된다.
|
||||
- click listener가 null이어도 클릭으로 crash가 발생하지 않는다.
|
||||
- 실행: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.banner.BannerViewTest"`
|
||||
|
||||
- [ ] **Task 6.4: `BannerViewTest` layout 계산 연결 테스트 작성**
|
||||
- [x] **Task 6.4: `BannerViewTest` layout 계산 연결 테스트 작성**
|
||||
- 수정 파일: `BannerViewTest.kt`
|
||||
- 테스트 항목:
|
||||
- 측정된 width 기준 item layout params가 정사각형으로 설정된다.
|
||||
@@ -295,7 +295,7 @@
|
||||
- 실행: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.banner.BannerViewTest"`
|
||||
|
||||
|
||||
- [ ] **Task 6.5: `BannerView` wrap_content 높이 측정 보완**
|
||||
- [x] **Task 6.5: `BannerView` wrap_content 높이 측정 보완**
|
||||
- 수정 파일: `BannerView.kt`, `BannerViewTest.kt`
|
||||
- 요구사항:
|
||||
- 호출부 XML에서 `layout_width="match_parent"`, `layout_height="wrap_content"`를 사용해도 화면 폭별로 배너 높이가 자동 계산된다.
|
||||
@@ -366,3 +366,7 @@
|
||||
- 2026-05-28 Phase 4.3 보완 RED: `BannerViewTest`에 `layout_width="match_parent"`, `layout_height="wrap_content"` 측정 시 width `402dp`는 height `362dp`, width `360dp`는 height `320dp`가 되어야 한다는 회귀 테스트를 추가했고, production 변경 전 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.banner.BannerViewTest"` 실행에서 두 테스트 실패를 확인했다.
|
||||
- 2026-05-28 Phase 4.3 보완 구현: `BannerView.onMeasure()`에서 height measure spec이 `EXACTLY`가 아닐 때 measured width 기준 `BannerLayoutCalculator` 결과로 root measured height를 계산하도록 수정했다. 명시 height가 들어온 경우에는 부모 측정 제약을 유지한다.
|
||||
- 2026-05-28 Phase 4.3 보완 검증: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.banner.BannerViewTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.banner.*"`, `./gradlew :app:assembleDebug` 실행 결과 모두 `BUILD SUCCESSFUL`을 확인했다.
|
||||
- 2026-05-28 Phase 6 RED: `BannerViewTest`에 preview count/current index, preview image, null click listener 테스트를 추가했다. Production 변경 전 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.banner.BannerViewTest"` 실행에서 preview counter assertion 실패와 preview item holder 미생성 실패를 확인했다.
|
||||
- 2026-05-28 Phase 6 구현: `BannerView`에서 `bannerPreviewItemCount`, `bannerPreviewCurrentIndex`, `bannerPreviewImage` attrs를 읽어 preview sample item, counter, image resource를 반영하도록 보완했다. `TypedArray.use`는 Robolectric SDK 28에서 `AutoCloseable` 캐스팅 문제가 있어 `try/finally recycle()`로 처리했다. `BannerAdapter`는 preview image resource가 지정된 경우 bind 시 `ImageView`에 적용하도록 보완했다.
|
||||
- 2026-05-28 Phase 6 GREEN: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.banner.BannerViewTest"` 실행 결과 `BUILD SUCCESSFUL`을 확인했다.
|
||||
- 2026-05-28 Phase 6 최종 검증: click callback 보강 테스트 추가 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.banner.BannerViewTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.banner.*"`, `./gradlew :app:assembleDebug` 실행 결과 모두 `BUILD SUCCESSFUL`을 확인했다.
|
||||
|
||||
Reference in New Issue
Block a user