{ 11 | 12 | /** 13 | * PagingData 는 값을 추출할 수 없으므로, PagingData 를 RecyclerView 에 매핑하는 헬퍼 클래스 사용 14 | * */ 15 | val testPagingDataDiffer = AsyncPagingDataDiffer
( 16 | diffCallback = TestDiffCallback(), 17 | updateCallback = TestListCallback(), 18 | workerDispatcher = Dispatchers.Main, 19 | ) 20 | 21 | /** 22 | * `PagingData`를 `PagingDataDiffer`에 Submit 23 | * 24 | * - PagingDataAdapter(`Paging`용 RecyclerViewAdapter) 에 데이터를 전달하는 것과 같은 역할을 하며 25 | * PagingDiffer 로 데이터 전달 시, 성공/실패 데이터에 따라 userViewModel.loadStateListener 로 상태 수신되어 에러, 로딩 상태를 업데이트 한다. 26 | * 27 | * - 직접적으로 확인할 수 없는 PagingData 를 `PagingDataDiffer`에 데이터 Submit 후, 28 | * PagingDataDiffer.snapshot() 호출을 통해 세부 데이터를 확인 할 수 있다. 29 | * */ 30 | fun submitPagingDataToDiffer(pagingData: PagingData
) = runTest { 31 | val job = launch { 32 | testPagingDataDiffer.submitData(pagingData) 33 | } 34 | 35 | // 대기열에 남은 항목이 없을 때까지 스케줄러에서 다른 코루틴을 모두 실행 36 | advanceUntilIdle() 37 | 38 | job.cancel() 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | google() 4 | mavenCentral() 5 | gradlePluginPortal() 6 | } 7 | } 8 | dependencyResolutionManagement { 9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 10 | repositories { 11 | google() 12 | mavenCentral() 13 | } 14 | } 15 | 16 | rootProject.name = "Android_MVVM_CleanArchitecture" 17 | 18 | include( 19 | ":presentation", 20 | ":domain", 21 | ":data" 22 | ) 23 | --------------------------------------------------------------------------------