diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 355ec42c0..9434cea48 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -111,24 +111,25 @@ dependencies { kspTest(libs.hilt.compiler) - testImplementation(projects.core.dataTest) testImplementation(projects.core.testing) testImplementation(projects.sync.syncTest) testImplementation(libs.androidx.compose.ui.test) testImplementation(libs.androidx.work.testing) testImplementation(libs.hilt.android.testing) + testImplementation(testFixtures(projects.core.data)) testDemoImplementation(libs.robolectric) testDemoImplementation(libs.roborazzi) testDemoImplementation(projects.core.screenshotTesting) + testDemoImplementation(testFixtures(projects.core.data)) androidTestImplementation(projects.core.testing) - androidTestImplementation(projects.core.dataTest) androidTestImplementation(projects.core.datastoreTest) androidTestImplementation(libs.androidx.test.espresso.core) androidTestImplementation(libs.androidx.navigation.testing) androidTestImplementation(libs.androidx.compose.ui.test) androidTestImplementation(libs.hilt.android.testing) + androidTestImplementation(testFixtures(projects.core.data)) baselineProfile(projects.benchmarks) } diff --git a/app/src/testDemo/kotlin/com/google/samples/apps/nowinandroid/ui/SnackbarScreenshotTests.kt b/app/src/testDemo/kotlin/com/google/samples/apps/nowinandroid/ui/SnackbarScreenshotTests.kt index 6f12dd620..ce6bcbcf0 100644 --- a/app/src/testDemo/kotlin/com/google/samples/apps/nowinandroid/ui/SnackbarScreenshotTests.kt +++ b/app/src/testDemo/kotlin/com/google/samples/apps/nowinandroid/ui/SnackbarScreenshotTests.kt @@ -34,9 +34,9 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.window.core.layout.WindowSizeClass import com.github.takahirom.roborazzi.captureRoboImage +import com.google.samples.apps.nowinandroid.core.data.repository.FakeUserDataRepository import com.google.samples.apps.nowinandroid.core.data.repository.TopicsRepository import com.google.samples.apps.nowinandroid.core.data.repository.UserNewsResourceRepository -import com.google.samples.apps.nowinandroid.core.data.test.repository.FakeUserDataRepository import com.google.samples.apps.nowinandroid.core.data.util.NetworkMonitor import com.google.samples.apps.nowinandroid.core.data.util.TimeZoneMonitor import com.google.samples.apps.nowinandroid.core.designsystem.theme.NiaTheme diff --git a/core/data-test/.gitignore b/core/data-test/.gitignore deleted file mode 100644 index 42afabfd2..000000000 --- a/core/data-test/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/core/data-test/README.md b/core/data-test/README.md deleted file mode 100644 index 977ee10e4..000000000 --- a/core/data-test/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# :core:data-test module -## Dependency graph -![Dependency graph](../../docs/images/graphs/dep_graph_core_data_test.svg) diff --git a/core/data-test/build.gradle.kts b/core/data-test/build.gradle.kts deleted file mode 100644 index b166df288..000000000 --- a/core/data-test/build.gradle.kts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -plugins { - alias(libs.plugins.nowinandroid.android.library) - alias(libs.plugins.nowinandroid.android.hilt) -} - -android { - namespace = "com.google.samples.apps.nowinandroid.core.data.test" -} - -dependencies { - api(projects.core.data) - - implementation(libs.hilt.android.testing) -} diff --git a/core/data-test/src/main/AndroidManifest.xml b/core/data-test/src/main/AndroidManifest.xml deleted file mode 100644 index 27a3ea8b0..000000000 --- a/core/data-test/src/main/AndroidManifest.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts index 142637ff9..747a7ad90 100644 --- a/core/data/build.gradle.kts +++ b/core/data/build.gradle.kts @@ -28,6 +28,7 @@ android { isReturnDefaultValues = true } } + testFixtures.enable = true } dependencies { @@ -43,4 +44,7 @@ dependencies { testImplementation(libs.kotlinx.serialization.json) testImplementation(projects.core.datastoreTest) testImplementation(projects.core.testing) + + kspTestFixtures(libs.hilt.compiler) + testFixturesImplementation(libs.hilt.android.testing) } diff --git a/core/data/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/di/DataModule.kt b/core/data/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/di/DataModule.kt index fa4bde8b8..432dab032 100644 --- a/core/data/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/di/DataModule.kt +++ b/core/data/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/di/DataModule.kt @@ -40,35 +40,23 @@ import dagger.hilt.components.SingletonComponent abstract class DataModule { @Binds - internal abstract fun bindsTopicRepository( - topicsRepository: OfflineFirstTopicsRepository, - ): TopicsRepository + internal abstract fun bindsTopicRepository(it: OfflineFirstTopicsRepository): TopicsRepository @Binds - internal abstract fun bindsNewsResourceRepository( - newsRepository: OfflineFirstNewsRepository, - ): NewsRepository + internal abstract fun bindsNewsResourceRepository(it: OfflineFirstNewsRepository): NewsRepository @Binds - internal abstract fun bindsUserDataRepository( - userDataRepository: OfflineFirstUserDataRepository, - ): UserDataRepository + internal abstract fun bindsUserDataRepository(it: OfflineFirstUserDataRepository): UserDataRepository @Binds - internal abstract fun bindsRecentSearchRepository( - recentSearchRepository: DefaultRecentSearchRepository, - ): RecentSearchRepository + internal abstract fun bindsRecentSearchRepository(it: DefaultRecentSearchRepository): RecentSearchRepository @Binds - internal abstract fun bindsSearchContentsRepository( - searchContentsRepository: DefaultSearchContentsRepository, - ): SearchContentsRepository + internal abstract fun bindsSearchContentsRepository(it: DefaultSearchContentsRepository): SearchContentsRepository @Binds - internal abstract fun bindsNetworkMonitor( - networkMonitor: ConnectivityManagerNetworkMonitor, - ): NetworkMonitor + internal abstract fun bindsNetworkMonitor(it: ConnectivityManagerNetworkMonitor): NetworkMonitor @Binds - internal abstract fun binds(impl: TimeZoneBroadcastMonitor): TimeZoneMonitor + internal abstract fun bindsTimeZoneMonitor(it: TimeZoneBroadcastMonitor): TimeZoneMonitor } diff --git a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/TestDataModule.kt b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/di/TestDataModule.kt similarity index 53% rename from core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/TestDataModule.kt rename to core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/di/TestDataModule.kt index 46158479c..c2ae30260 100644 --- a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/TestDataModule.kt +++ b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/di/TestDataModule.kt @@ -14,19 +14,20 @@ * limitations under the License. */ -package com.google.samples.apps.nowinandroid.core.data.test +package com.google.samples.apps.nowinandroid.core.data.di -import com.google.samples.apps.nowinandroid.core.data.di.DataModule +import com.google.samples.apps.nowinandroid.core.data.repository.FakeNewsRepository +import com.google.samples.apps.nowinandroid.core.data.repository.FakeRecentSearchRepository +import com.google.samples.apps.nowinandroid.core.data.repository.FakeSearchContentsRepository +import com.google.samples.apps.nowinandroid.core.data.repository.FakeTopicsRepository +import com.google.samples.apps.nowinandroid.core.data.repository.FakeUserDataRepository import com.google.samples.apps.nowinandroid.core.data.repository.NewsRepository import com.google.samples.apps.nowinandroid.core.data.repository.RecentSearchRepository import com.google.samples.apps.nowinandroid.core.data.repository.SearchContentsRepository import com.google.samples.apps.nowinandroid.core.data.repository.TopicsRepository import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository -import com.google.samples.apps.nowinandroid.core.data.test.repository.FakeNewsRepository -import com.google.samples.apps.nowinandroid.core.data.test.repository.FakeRecentSearchRepository -import com.google.samples.apps.nowinandroid.core.data.test.repository.FakeSearchContentsRepository -import com.google.samples.apps.nowinandroid.core.data.test.repository.FakeTopicsRepository -import com.google.samples.apps.nowinandroid.core.data.test.repository.FakeUserDataRepository +import com.google.samples.apps.nowinandroid.core.data.util.AlwaysOnlineNetworkMonitor +import com.google.samples.apps.nowinandroid.core.data.util.DefaultZoneIdTimeZoneMonitor import com.google.samples.apps.nowinandroid.core.data.util.NetworkMonitor import com.google.samples.apps.nowinandroid.core.data.util.TimeZoneMonitor import dagger.Binds @@ -41,35 +42,23 @@ import dagger.hilt.testing.TestInstallIn ) internal interface TestDataModule { @Binds - fun bindsTopicRepository( - fakeTopicsRepository: FakeTopicsRepository, - ): TopicsRepository + fun bindsTopicRepository(it: FakeTopicsRepository): TopicsRepository @Binds - fun bindsNewsResourceRepository( - fakeNewsRepository: FakeNewsRepository, - ): NewsRepository + fun bindsNewsResourceRepository(it: FakeNewsRepository): NewsRepository @Binds - fun bindsUserDataRepository( - userDataRepository: FakeUserDataRepository, - ): UserDataRepository + fun bindsUserDataRepository(it: FakeUserDataRepository): UserDataRepository @Binds - fun bindsRecentSearchRepository( - recentSearchRepository: FakeRecentSearchRepository, - ): RecentSearchRepository + fun bindsRecentSearchRepository(it: FakeRecentSearchRepository): RecentSearchRepository @Binds - fun bindsSearchContentsRepository( - searchContentsRepository: FakeSearchContentsRepository, - ): SearchContentsRepository + fun bindsSearchContentsRepository(it: FakeSearchContentsRepository): SearchContentsRepository @Binds - fun bindsNetworkMonitor( - networkMonitor: AlwaysOnlineNetworkMonitor, - ): NetworkMonitor + fun bindsNetworkMonitor(it: AlwaysOnlineNetworkMonitor): NetworkMonitor @Binds - fun binds(impl: DefaultZoneIdTimeZoneMonitor): TimeZoneMonitor + fun bindsTimeZoneMonitor(it: DefaultZoneIdTimeZoneMonitor): TimeZoneMonitor } diff --git a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeNewsRepository.kt b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeNewsRepository.kt similarity index 92% rename from core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeNewsRepository.kt rename to core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeNewsRepository.kt index 0cdec6090..d356559ae 100644 --- a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeNewsRepository.kt +++ b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeNewsRepository.kt @@ -14,12 +14,10 @@ * limitations under the License. */ -package com.google.samples.apps.nowinandroid.core.data.test.repository +package com.google.samples.apps.nowinandroid.core.data.repository import com.google.samples.apps.nowinandroid.core.data.Synchronizer import com.google.samples.apps.nowinandroid.core.data.model.asEntity -import com.google.samples.apps.nowinandroid.core.data.repository.NewsRepository -import com.google.samples.apps.nowinandroid.core.data.repository.NewsResourceQuery import com.google.samples.apps.nowinandroid.core.database.model.NewsResourceEntity import com.google.samples.apps.nowinandroid.core.database.model.asExternalModel import com.google.samples.apps.nowinandroid.core.model.data.NewsResource diff --git a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeRecentSearchRepository.kt b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeRecentSearchRepository.kt similarity index 88% rename from core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeRecentSearchRepository.kt rename to core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeRecentSearchRepository.kt index b8d949efe..4c54f06c1 100644 --- a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeRecentSearchRepository.kt +++ b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeRecentSearchRepository.kt @@ -14,10 +14,9 @@ * limitations under the License. */ -package com.google.samples.apps.nowinandroid.core.data.test.repository +package com.google.samples.apps.nowinandroid.core.data.repository import com.google.samples.apps.nowinandroid.core.data.model.RecentSearchQuery -import com.google.samples.apps.nowinandroid.core.data.repository.RecentSearchRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOf import javax.inject.Inject diff --git a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeSearchContentsRepository.kt b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeSearchContentsRepository.kt similarity index 87% rename from core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeSearchContentsRepository.kt rename to core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeSearchContentsRepository.kt index 1feeb6dcc..3de72baa6 100644 --- a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeSearchContentsRepository.kt +++ b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeSearchContentsRepository.kt @@ -14,9 +14,8 @@ * limitations under the License. */ -package com.google.samples.apps.nowinandroid.core.data.test.repository +package com.google.samples.apps.nowinandroid.core.data.repository -import com.google.samples.apps.nowinandroid.core.data.repository.SearchContentsRepository import com.google.samples.apps.nowinandroid.core.model.data.SearchResult import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOf diff --git a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeTopicsRepository.kt b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeTopicsRepository.kt similarity index 93% rename from core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeTopicsRepository.kt rename to core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeTopicsRepository.kt index 0b81dd309..c484c1c0f 100644 --- a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeTopicsRepository.kt +++ b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeTopicsRepository.kt @@ -14,10 +14,9 @@ * limitations under the License. */ -package com.google.samples.apps.nowinandroid.core.data.test.repository +package com.google.samples.apps.nowinandroid.core.data.repository import com.google.samples.apps.nowinandroid.core.data.Synchronizer -import com.google.samples.apps.nowinandroid.core.data.repository.TopicsRepository import com.google.samples.apps.nowinandroid.core.model.data.Topic import com.google.samples.apps.nowinandroid.core.network.Dispatcher import com.google.samples.apps.nowinandroid.core.network.NiaDispatchers.IO diff --git a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeUserDataRepository.kt b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeUserDataRepository.kt similarity index 94% rename from core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeUserDataRepository.kt rename to core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeUserDataRepository.kt index 61ab422af..dc81c94a3 100644 --- a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/repository/FakeUserDataRepository.kt +++ b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/repository/FakeUserDataRepository.kt @@ -14,9 +14,8 @@ * limitations under the License. */ -package com.google.samples.apps.nowinandroid.core.data.test.repository +package com.google.samples.apps.nowinandroid.core.data.repository -import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository import com.google.samples.apps.nowinandroid.core.datastore.NiaPreferencesDataSource import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand diff --git a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/AlwaysOnlineNetworkMonitor.kt b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/util/AlwaysOnlineNetworkMonitor.kt similarity index 86% rename from core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/AlwaysOnlineNetworkMonitor.kt rename to core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/util/AlwaysOnlineNetworkMonitor.kt index c00c99ded..4e5b9363f 100644 --- a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/AlwaysOnlineNetworkMonitor.kt +++ b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/util/AlwaysOnlineNetworkMonitor.kt @@ -14,9 +14,8 @@ * limitations under the License. */ -package com.google.samples.apps.nowinandroid.core.data.test +package com.google.samples.apps.nowinandroid.core.data.util -import com.google.samples.apps.nowinandroid.core.data.util.NetworkMonitor import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOf import javax.inject.Inject diff --git a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/DefaultZoneIdTimeZoneMonitor.kt b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/util/DefaultZoneIdTimeZoneMonitor.kt similarity index 87% rename from core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/DefaultZoneIdTimeZoneMonitor.kt rename to core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/util/DefaultZoneIdTimeZoneMonitor.kt index 5a21ae337..6e48591a2 100644 --- a/core/data-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/data/test/DefaultZoneIdTimeZoneMonitor.kt +++ b/core/data/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/data/util/DefaultZoneIdTimeZoneMonitor.kt @@ -14,9 +14,8 @@ * limitations under the License. */ -package com.google.samples.apps.nowinandroid.core.data.test +package com.google.samples.apps.nowinandroid.core.data.util -import com.google.samples.apps.nowinandroid.core.data.util.TimeZoneMonitor import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOf import kotlinx.datetime.TimeZone diff --git a/docs/images/graphs/dep_graph_core_data_test.svg b/docs/images/graphs/dep_graph_core_data_test.svg deleted file mode 100644 index 798696c11..000000000 --- a/docs/images/graphs/dep_graph_core_data_test.svg +++ /dev/null @@ -1,133 +0,0 @@ - - - - - G - - - :core:data-test - - :core:data-test - - - :core:data - - :core:data - - - :core:data-test->:core:data - - - - - :core:common - - :core:common - - - :core:data->:core:common - - - - - :core:database - - :core:database - - - :core:data->:core:database - - - - - :core:datastore - - :core:datastore - - - :core:data->:core:datastore - - - - - :core:network - - :core:network - - - :core:data->:core:network - - - - - :core:analytics - - :core:analytics - - - :core:data->:core:analytics - - - - - :core:notifications - - :core:notifications - - - :core:data->:core:notifications - - - - - :core:model - - :core:model - - - :core:database->:core:model - - - - - :core:datastore->:core:common - - - - - :core:datastore->:core:model - - - - - :core:datastore-proto - - :core:datastore-proto - - - :core:datastore->:core:datastore-proto - - - - - :core:network->:core:common - - - - - :core:network->:core:model - - - - - :core:notifications->:core:common - - - - - :core:notifications->:core:model - - - - - diff --git a/settings.gradle.kts b/settings.gradle.kts index d4b6654b1..b1d8e505f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -39,7 +39,6 @@ include(":benchmarks") include(":core:analytics") include(":core:common") include(":core:data") -include(":core:data-test") include(":core:database") include(":core:datastore") include(":core:datastore-proto")