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
-
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 @@
-
-
-
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")