diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 506fffd..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.gitignore b/.gitignore index e046624..377b003 100644 --- a/.gitignore +++ b/.gitignore @@ -32,4 +32,8 @@ render.experimental.xml google-services.json # Android Profiling -*.hprof \ No newline at end of file +*.hprof +*.html + +**.DS_Store +**/build diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 0d7facb..b8ed045 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,7 +1,7 @@ - + diff --git a/.idea/gradle.xml b/.idea/gradle.xml index ffd8114..1e3bae8 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -18,20 +18,22 @@ diff --git a/.idea/misc.xml b/.idea/misc.xml index 74dd639..8978d23 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,7 +1,6 @@ - - + diff --git a/app/build.gradle.kts b/app/build.gradle.kts index b1cca4a..ca0fd31 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -67,10 +67,10 @@ android { } dependencies { - implementation(projects.feature.allbreeds) - implementation(projects.feature.breedDetails) - implementation(projects.feature.favorites) - implementation(projects.feature.subbreeds) + implementation(projects.feature.allbreeds.ui) + implementation(projects.feature.breedDetails.ui) + implementation(projects.feature.favorites.ui) + implementation(projects.feature.subbreeds.ui) implementation(projects.core.designsystem) diff --git a/build.gradle.kts b/build.gradle.kts index 0faa5c7..fa9998b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,6 +5,7 @@ plugins { id("com.android.library") version "8.11.1" apply false id("com.google.devtools.ksp") version "1.9.0-1.0.13" apply false id("org.jetbrains.kotlin.plugin.serialization") version "1.8.10" apply false + alias(libs.plugins.jetbrains.kotlin.jvm) apply false } buildscript { diff --git a/build/reports/problems/problems-report.html b/build/reports/problems/problems-report.html deleted file mode 100644 index ff14bfe..0000000 --- a/build/reports/problems/problems-report.html +++ /dev/null @@ -1,663 +0,0 @@ - - - - - - - - - - - - - Gradle Configuration Cache - - - -
- -
- Loading... -
- - - - - - diff --git a/core/model/build.gradle.kts b/core/model/build.gradle.kts index 13399da..9bc4506 100644 --- a/core/model/build.gradle.kts +++ b/core/model/build.gradle.kts @@ -1,33 +1,3 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "com.tobioyelekan.dogbreed.core.model" - compileSdk = 34 - - defaultConfig { - minSdk = 24 - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } + kotlin("jvm") } \ No newline at end of file diff --git a/core/testing/.gitignore b/core/testing/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/core/testing/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/core/testing/build.gradle.kts b/core/testing/build.gradle.kts index fc3e2f9..2dcf8b7 100644 --- a/core/testing/build.gradle.kts +++ b/core/testing/build.gradle.kts @@ -1,48 +1,57 @@ plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") + id("java-library") + alias(libs.plugins.jetbrains.kotlin.jvm) } - -android { - namespace = "com.tobioyelekan.dogbreed.testing" - compileSdk = 34 - - defaultConfig { - minSdk = 24 - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = "1.8" +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} +kotlin { + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 } } +//android { +// namespace = "com.tobioyelekan.dogbreed.testing" +// compileSdk = 34 +// +// defaultConfig { +// minSdk = 24 +// +// testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" +// consumerProguardFiles("consumer-rules.pro") +// } +// +// buildTypes { +// release { +// isMinifyEnabled = false +// proguardFiles( +// getDefaultProguardFile("proguard-android-optimize.txt"), +// "proguard-rules.pro" +// ) +// } +// } +// compileOptions { +// sourceCompatibility = JavaVersion.VERSION_1_8 +// targetCompatibility = JavaVersion.VERSION_1_8 +// } +// kotlinOptions { +// jvmTarget = "1.8" +// } +//} + dependencies { api(libs.junit) api(libs.turbine) api(libs.mockk) api(libs.coroutine.test) - api(projects.core.model) - api(projects.data.allbreeds) - api(projects.data.breedDetails) - api(projects.data.subbreeds) + implementation(projects.core.model) +// api(projects.data.allbreeds) +// api(projects.data.breedDetails) +// api(projects.data.subbreeds) - implementation(libs.hilt.android.testing) - implementation(libs.androidx.test.runner) +// implementation(libs.hilt.android.testing) +// implementation(libs.androidx.test.runner) } \ No newline at end of file diff --git a/core/testing/src/main/AndroidManifest.xml b/core/testing/src/main/AndroidManifest.xml deleted file mode 100644 index a5918e6..0000000 --- a/core/testing/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/core/testing/src/main/java/com/tobioyelekan/dogbreed/testing/DogBreedTestRunner.kt b/core/testing/src/main/java/com/tobioyelekan/dogbreed/testing/DogBreedTestRunner.kt index 427cd97..af06400 100644 --- a/core/testing/src/main/java/com/tobioyelekan/dogbreed/testing/DogBreedTestRunner.kt +++ b/core/testing/src/main/java/com/tobioyelekan/dogbreed/testing/DogBreedTestRunner.kt @@ -1,11 +1,11 @@ package com.tobioyelekan.dogbreed.testing - -import android.app.Application -import android.content.Context -import androidx.test.runner.AndroidJUnitRunner -import dagger.hilt.android.testing.HiltTestApplication - -class DogBreedTestRunner : AndroidJUnitRunner() { - override fun newApplication(cl: ClassLoader, name: String, context: Context): Application = - super.newApplication(cl, HiltTestApplication::class.java.name, context) -} +// +//import android.app.Application +//import android.content.Context +//import androidx.test.runner.AndroidJUnitRunner +//import dagger.hilt.android.testing.HiltTestApplication +// +//class DogBreedTestRunner : AndroidJUnitRunner() { +// override fun newApplication(cl: ClassLoader, name: String, context: Context): Application = +// super.newApplication(cl, HiltTestApplication::class.java.name, context) +//} diff --git a/data/.DS_Store b/data/.DS_Store deleted file mode 100644 index 014353e..0000000 Binary files a/data/.DS_Store and /dev/null differ diff --git a/data/allbreeds/.gitignore b/data/allbreeds/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/data/allbreeds/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/data/allbreeds/consumer-rules.pro b/data/allbreeds/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/data/allbreeds/proguard-rules.pro b/data/allbreeds/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/data/allbreeds/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/data/allbreeds/src/main/AndroidManifest.xml b/data/allbreeds/src/main/AndroidManifest.xml deleted file mode 100644 index a5918e6..0000000 --- a/data/allbreeds/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/data/breedDetails/.gitignore b/data/breedDetails/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/data/breedDetails/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/data/breedDetails/consumer-rules.pro b/data/breedDetails/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/data/breedDetails/proguard-rules.pro b/data/breedDetails/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/data/breedDetails/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/data/breedDetails/src/main/AndroidManifest.xml b/data/breedDetails/src/main/AndroidManifest.xml deleted file mode 100644 index a5918e6..0000000 --- a/data/breedDetails/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/data/subbreeds/.gitignore b/data/subbreeds/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/data/subbreeds/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/data/subbreeds/consumer-rules.pro b/data/subbreeds/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/data/subbreeds/proguard-rules.pro b/data/subbreeds/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/data/subbreeds/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/data/subbreeds/src/main/AndroidManifest.xml b/data/subbreeds/src/main/AndroidManifest.xml deleted file mode 100644 index a5918e6..0000000 --- a/data/subbreeds/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/domain/allbreeds/.gitignore b/domain/allbreeds/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/domain/allbreeds/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/domain/allbreeds/build.gradle.kts b/domain/allbreeds/build.gradle.kts deleted file mode 100644 index 3ef7c68..0000000 --- a/domain/allbreeds/build.gradle.kts +++ /dev/null @@ -1,47 +0,0 @@ -plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") - id("com.google.devtools.ksp") - id("dagger.hilt.android.plugin") -} - -android { - namespace = "com.tobioyelekan.dogbreed.domain.allbreeds" - compileSdk = 34 - - defaultConfig { - minSdk = 24 - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } -} - -dependencies { - implementation(libs.hilt.core) - ksp(libs.hilt.compiler) - - implementation(projects.data.allbreeds) - implementation(projects.core.common) - implementation(projects.core.model) - - testImplementation(projects.core.testing) - testImplementation(kotlin("test")) -} \ No newline at end of file diff --git a/domain/allbreeds/consumer-rules.pro b/domain/allbreeds/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/domain/allbreeds/proguard-rules.pro b/domain/allbreeds/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/domain/allbreeds/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/domain/allbreeds/src/main/AndroidManifest.xml b/domain/allbreeds/src/main/AndroidManifest.xml deleted file mode 100644 index a5918e6..0000000 --- a/domain/allbreeds/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/domain/breedDetails/.gitignore b/domain/breedDetails/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/domain/breedDetails/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/domain/breedDetails/build.gradle.kts b/domain/breedDetails/build.gradle.kts deleted file mode 100644 index 535a5e6..0000000 --- a/domain/breedDetails/build.gradle.kts +++ /dev/null @@ -1,47 +0,0 @@ -plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") - id("com.google.devtools.ksp") - id("dagger.hilt.android.plugin") -} - -android { - namespace = "com.tobioyelekan.dogbreed.domain.breedDetails" - compileSdk = 34 - - defaultConfig { - minSdk = 24 - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } -} - -dependencies { - implementation(libs.hilt.core) - ksp(libs.hilt.compiler) - - implementation(projects.data.breedDetails) - implementation(projects.core.common) - implementation(projects.core.model) - - testImplementation(projects.core.testing) - testImplementation(kotlin("test")) -} \ No newline at end of file diff --git a/domain/breedDetails/consumer-rules.pro b/domain/breedDetails/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/domain/breedDetails/proguard-rules.pro b/domain/breedDetails/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/domain/breedDetails/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/domain/breedDetails/src/main/AndroidManifest.xml b/domain/breedDetails/src/main/AndroidManifest.xml deleted file mode 100644 index a5918e6..0000000 --- a/domain/breedDetails/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/domain/breedDetails/src/main/java/com/tobioyelekan/dogbreed/domain/breedDetails/AddFavoriteBreedUseCase.kt b/domain/breedDetails/src/main/java/com/tobioyelekan/dogbreed/domain/breedDetails/AddFavoriteBreedUseCase.kt deleted file mode 100644 index 6a3c0d6..0000000 --- a/domain/breedDetails/src/main/java/com/tobioyelekan/dogbreed/domain/breedDetails/AddFavoriteBreedUseCase.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tobioyelekan.dogbreed.domain.breedDetails - -import com.tobioyelekan.dogbreed.data.breeddetails.repository.DogBreedDetailRepository -import javax.inject.Inject - -class AddFavoriteBreedUseCase @Inject constructor( - private val dogBreedDetailRepository: DogBreedDetailRepository -) { - suspend operator fun invoke(breedName: String): Result { - return dogBreedDetailRepository.addFavoriteBreed(breedName) - } -} \ No newline at end of file diff --git a/domain/breedDetails/src/main/java/com/tobioyelekan/dogbreed/domain/breedDetails/DeleteFavoriteBreedUseCase.kt b/domain/breedDetails/src/main/java/com/tobioyelekan/dogbreed/domain/breedDetails/DeleteFavoriteBreedUseCase.kt deleted file mode 100644 index 63d1e4f..0000000 --- a/domain/breedDetails/src/main/java/com/tobioyelekan/dogbreed/domain/breedDetails/DeleteFavoriteBreedUseCase.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tobioyelekan.dogbreed.domain.breedDetails - -import com.tobioyelekan.dogbreed.data.breeddetails.repository.DogBreedDetailRepository -import javax.inject.Inject - -class DeleteFavoriteBreedUseCase @Inject constructor( - private val dogBreedDetailRepository: DogBreedDetailRepository -) { - suspend operator fun invoke(breedName: String): Result { - return dogBreedDetailRepository.removeFavoriteBreed(breedName) - } -} \ No newline at end of file diff --git a/domain/favorites/.gitignore b/domain/favorites/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/domain/favorites/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/domain/favorites/build.gradle.kts b/domain/favorites/build.gradle.kts deleted file mode 100644 index d85a672..0000000 --- a/domain/favorites/build.gradle.kts +++ /dev/null @@ -1,47 +0,0 @@ -plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") - id("com.google.devtools.ksp") - id("dagger.hilt.android.plugin") -} - -android { - namespace = "com.tobioyelekan.dogbreed.domain.favorites" - compileSdk = 34 - - defaultConfig { - minSdk = 24 - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } -} - -dependencies { - implementation(libs.hilt.core) - ksp(libs.hilt.compiler) - - implementation(projects.data.breedDetails) - implementation(projects.core.common) - implementation(projects.core.model) - - testImplementation(projects.core.testing) - testImplementation(kotlin("test")) -} \ No newline at end of file diff --git a/domain/favorites/consumer-rules.pro b/domain/favorites/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/domain/favorites/proguard-rules.pro b/domain/favorites/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/domain/favorites/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/domain/favorites/src/main/AndroidManifest.xml b/domain/favorites/src/main/AndroidManifest.xml deleted file mode 100644 index a5918e6..0000000 --- a/domain/favorites/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/domain/subbreeds/.gitignore b/domain/subbreeds/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/domain/subbreeds/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/domain/subbreeds/build.gradle.kts b/domain/subbreeds/build.gradle.kts deleted file mode 100644 index 938dd12..0000000 --- a/domain/subbreeds/build.gradle.kts +++ /dev/null @@ -1,47 +0,0 @@ -plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") - id("com.google.devtools.ksp") - id("dagger.hilt.android.plugin") -} - -android { - namespace = "com.tobioyelekan.dogbreed.domain.subbreeds" - compileSdk = 34 - - defaultConfig { - minSdk = 24 - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - kotlinOptions { - jvmTarget = "17" - } -} - -dependencies { - implementation(libs.hilt.core) - ksp(libs.hilt.compiler) - - implementation(projects.data.subbreeds) - implementation(projects.core.common) - implementation(projects.core.model) - - testImplementation(projects.core.testing) - testImplementation(kotlin("test")) -} \ No newline at end of file diff --git a/domain/subbreeds/consumer-rules.pro b/domain/subbreeds/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/domain/subbreeds/proguard-rules.pro b/domain/subbreeds/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/domain/subbreeds/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/domain/subbreeds/src/main/AndroidManifest.xml b/domain/subbreeds/src/main/AndroidManifest.xml deleted file mode 100644 index a5918e6..0000000 --- a/domain/subbreeds/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/.DS_Store b/feature/.DS_Store similarity index 93% rename from build/.DS_Store rename to feature/.DS_Store index 1a26793..3f7ffe7 100644 Binary files a/build/.DS_Store and b/feature/.DS_Store differ diff --git a/build/kotlin/.DS_Store b/feature/allbreeds/.DS_Store similarity index 92% rename from build/kotlin/.DS_Store rename to feature/allbreeds/.DS_Store index b4876ee..0147f49 100644 Binary files a/build/kotlin/.DS_Store and b/feature/allbreeds/.DS_Store differ diff --git a/feature/allbreeds/.gitignore b/feature/allbreeds/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/feature/allbreeds/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/feature/allbreeds/consumer-rules.pro b/feature/allbreeds/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/data/allbreeds/build.gradle.kts b/feature/allbreeds/data/build.gradle.kts similarity index 95% rename from data/allbreeds/build.gradle.kts rename to feature/allbreeds/data/build.gradle.kts index 1114d29..1f6e64d 100644 --- a/data/allbreeds/build.gradle.kts +++ b/feature/allbreeds/data/build.gradle.kts @@ -40,8 +40,8 @@ dependencies { implementation(projects.core.network) implementation(projects.core.database) - implementation(projects.core.model) implementation(projects.core.common) + implementation(projects.feature.allbreeds.domain) testImplementation(projects.core.testing) testImplementation(kotlin("test")) diff --git a/data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/di/AllBreedsDataModule.kt b/feature/allbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/di/AllBreedsDataModule.kt similarity index 58% rename from data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/di/AllBreedsDataModule.kt rename to feature/allbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/di/AllBreedsDataModule.kt index 2eee398..749dd2e 100644 --- a/data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/di/AllBreedsDataModule.kt +++ b/feature/allbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/di/AllBreedsDataModule.kt @@ -1,7 +1,7 @@ -package com.tobioyelekan.dogbreed.data.allbreeds.di +package com.tobioyelekan.dogbreed.feature.allbreeds.di -import com.tobioyelekan.dogbreed.data.allbreeds.repository.DogBreedsRepository -import com.tobioyelekan.dogbreed.data.allbreeds.repository.DogBreedsRepositoryImpl +import com.tobioyelekan.dogbreed.feature.allbreeds.repository.DogBreedsRepository +import com.tobioyelekan.dogbreed.feature.allbreeds.repository.DogBreedsRepositoryImpl import dagger.Binds import dagger.Module import dagger.hilt.InstallIn diff --git a/data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/mapper/DogBreedApiMapper.kt b/feature/allbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/mapper/DogBreedApiMapper.kt similarity index 83% rename from data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/mapper/DogBreedApiMapper.kt rename to feature/allbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/mapper/DogBreedApiMapper.kt index 73316a7..cb5537d 100644 --- a/data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/mapper/DogBreedApiMapper.kt +++ b/feature/allbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/mapper/DogBreedApiMapper.kt @@ -1,4 +1,4 @@ -package com.tobioyelekan.dogbreed.data.allbreeds.mapper +package com.tobioyelekan.dogbreed.feature.allbreeds.mapper import com.tobioyelekan.dogbreed.core.database.entity.DogBreedEntity diff --git a/data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/repository/DogBreedsRepositoryImpl.kt b/feature/allbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/repository/DogBreedRepositoryImpl.kt similarity index 87% rename from data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/repository/DogBreedsRepositoryImpl.kt rename to feature/allbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/repository/DogBreedRepositoryImpl.kt index 988874e..12ec302 100644 --- a/data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/repository/DogBreedsRepositoryImpl.kt +++ b/feature/allbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/repository/DogBreedRepositoryImpl.kt @@ -1,15 +1,16 @@ -package com.tobioyelekan.dogbreed.data.allbreeds.repository +package com.tobioyelekan.dogbreed.feature.allbreeds.repository import com.tobioyelekan.dogbreed.core.database.dao.DogBreedDao import com.tobioyelekan.dogbreed.core.network.DogBreedApiService import com.tobioyelekan.dogbreed.core.database.entity.toDomainModel import com.tobioyelekan.dogbreed.core.model.DogBreed -import com.tobioyelekan.dogbreed.data.allbreeds.mapper.toEntity -import com.tobioyelekan.dogbreed.data.allbreeds.util.mergeEntities +import com.tobioyelekan.dogbreed.feature.allbreeds.mapper.toEntity +import com.tobioyelekan.dogbreed.feature.allbreeds.util.mergeEntities import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.coroutineScope import javax.inject.Inject +import kotlin.collections.ifEmpty class DogBreedsRepositoryImpl @Inject constructor( private val dogBreedDao: DogBreedDao, @@ -48,4 +49,4 @@ class DogBreedsRepositoryImpl @Inject constructor( breeds.ifEmpty { throw it } } } -} +} \ No newline at end of file diff --git a/data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/util/EntityMerger.kt b/feature/allbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/util/EntityMerger.kt similarity index 94% rename from data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/util/EntityMerger.kt rename to feature/allbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/util/EntityMerger.kt index 6d884ac..276d87e 100644 --- a/data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/util/EntityMerger.kt +++ b/feature/allbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/util/EntityMerger.kt @@ -1,4 +1,4 @@ -package com.tobioyelekan.dogbreed.data.allbreeds.util +package com.tobioyelekan.dogbreed.feature.allbreeds.util import com.tobioyelekan.dogbreed.core.database.entity.DogBreedEntity diff --git a/data/allbreeds/src/test/java/com/tobioyelekan/dogbreed/data/allbreeds/repository/DogBreedsRepositoryImplTest.kt b/feature/allbreeds/data/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/repository/DogBreedsRepositoryImplTest.kt similarity index 95% rename from data/allbreeds/src/test/java/com/tobioyelekan/dogbreed/data/allbreeds/repository/DogBreedsRepositoryImplTest.kt rename to feature/allbreeds/data/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/repository/DogBreedsRepositoryImplTest.kt index 0be7334..abe1721 100644 --- a/data/allbreeds/src/test/java/com/tobioyelekan/dogbreed/data/allbreeds/repository/DogBreedsRepositoryImplTest.kt +++ b/feature/allbreeds/data/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/repository/DogBreedsRepositoryImplTest.kt @@ -1,4 +1,4 @@ -package com.tobioyelekan.dogbreed.data.allbreeds.repository +package com.tobioyelekan.dogbreed.feature.allbreeds.repository import com.tobioyelekan.dogbreed.core.database.dao.DogBreedDao import com.tobioyelekan.dogbreed.core.database.entity.DogBreedEntity @@ -6,8 +6,8 @@ import com.tobioyelekan.dogbreed.core.database.entity.toDomainModel import com.tobioyelekan.dogbreed.core.network.DogBreedApiService import com.tobioyelekan.dogbreed.core.network.model.BreedImageApiModel import com.tobioyelekan.dogbreed.core.network.model.DogBreedsApiModel -import com.tobioyelekan.dogbreed.data.allbreeds.mapper.toEntity -import com.tobioyelekan.dogbreed.data.allbreeds.util.mergeEntities +import com.tobioyelekan.dogbreed.feature.allbreeds.mapper.toEntity +import com.tobioyelekan.dogbreed.feature.allbreeds.util.mergeEntities import com.tobioyelekan.dogbreed.testing.data.TestData.dogBreedApiResponseTestData import io.mockk.coEvery import io.mockk.coVerify diff --git a/data/allbreeds/src/test/java/com/tobioyelekan/dogbreed/data/allbreeds/util/EntityMergerTest.kt b/feature/allbreeds/data/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/util/EntityMergerTest.kt similarity index 98% rename from data/allbreeds/src/test/java/com/tobioyelekan/dogbreed/data/allbreeds/util/EntityMergerTest.kt rename to feature/allbreeds/data/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/util/EntityMergerTest.kt index d449611..3b62245 100644 --- a/data/allbreeds/src/test/java/com/tobioyelekan/dogbreed/data/allbreeds/util/EntityMergerTest.kt +++ b/feature/allbreeds/data/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/util/EntityMergerTest.kt @@ -1,4 +1,4 @@ -package com.tobioyelekan.dogbreed.data.allbreeds.util +package com.tobioyelekan.dogbreed.feature.allbreeds.util import com.tobioyelekan.dogbreed.core.database.entity.DogBreedEntity import org.junit.Test diff --git a/feature/allbreeds/domain/build.gradle.kts b/feature/allbreeds/domain/build.gradle.kts new file mode 100644 index 0000000..9911852 --- /dev/null +++ b/feature/allbreeds/domain/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + id("java-library") + alias(libs.plugins.jetbrains.kotlin.jvm) +} +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} +kotlin { + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 + } +} + +dependencies { + api(projects.core.model) + testImplementation(projects.core.testing) + testImplementation(kotlin("test")) +} \ No newline at end of file diff --git a/data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/repository/DogBreedsRepository.kt b/feature/allbreeds/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/repository/DogBreedsRepository.kt similarity index 69% rename from data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/repository/DogBreedsRepository.kt rename to feature/allbreeds/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/repository/DogBreedsRepository.kt index c032f06..c942a49 100644 --- a/data/allbreeds/src/main/java/com/tobioyelekan/dogbreed/data/allbreeds/repository/DogBreedsRepository.kt +++ b/feature/allbreeds/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/repository/DogBreedsRepository.kt @@ -1,4 +1,4 @@ -package com.tobioyelekan.dogbreed.data.allbreeds.repository +package com.tobioyelekan.dogbreed.feature.allbreeds.repository import com.tobioyelekan.dogbreed.core.model.DogBreed diff --git a/domain/allbreeds/src/main/java/com/tobioyelekan/dogbreed/domain/allbreeds/GetDogBreedListUseCase.kt b/feature/allbreeds/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/usecase/GetDogBreedListUseCase.kt similarity index 50% rename from domain/allbreeds/src/main/java/com/tobioyelekan/dogbreed/domain/allbreeds/GetDogBreedListUseCase.kt rename to feature/allbreeds/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/usecase/GetDogBreedListUseCase.kt index edfa609..47cf2c5 100644 --- a/domain/allbreeds/src/main/java/com/tobioyelekan/dogbreed/domain/allbreeds/GetDogBreedListUseCase.kt +++ b/feature/allbreeds/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/usecase/GetDogBreedListUseCase.kt @@ -1,10 +1,9 @@ -package com.tobioyelekan.dogbreed.domain.allbreeds +package com.tobioyelekan.dogbreed.feature.allbreeds.usecase import com.tobioyelekan.dogbreed.core.model.DogBreed -import com.tobioyelekan.dogbreed.data.allbreeds.repository.DogBreedsRepository -import javax.inject.Inject +import com.tobioyelekan.dogbreed.feature.allbreeds.repository.DogBreedsRepository -class GetDogBreedListUseCase @Inject constructor( +class GetDogBreedListUseCase( private val repository: DogBreedsRepository ) { suspend operator fun invoke(): Result>{ diff --git a/domain/allbreeds/src/test/java/com/tobioyelekan/dogbreed/domain/allbreeds/GetDogBreedListUseCaseTest.kt b/feature/allbreeds/domain/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/GetDogBreedListUseCaseTest.kt similarity index 77% rename from domain/allbreeds/src/test/java/com/tobioyelekan/dogbreed/domain/allbreeds/GetDogBreedListUseCaseTest.kt rename to feature/allbreeds/domain/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/GetDogBreedListUseCaseTest.kt index dba3482..637977a 100644 --- a/domain/allbreeds/src/test/java/com/tobioyelekan/dogbreed/domain/allbreeds/GetDogBreedListUseCaseTest.kt +++ b/feature/allbreeds/domain/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/GetDogBreedListUseCaseTest.kt @@ -1,6 +1,7 @@ -package com.tobioyelekan.dogbreed.domain.allbreeds +package com.tobioyelekan.dogbreed.feature.allbreeds -import com.tobioyelekan.dogbreed.data.allbreeds.repository.DogBreedsRepositoryImpl +import com.tobioyelekan.dogbreed.feature.allbreeds.repository.DogBreedsRepository +import com.tobioyelekan.dogbreed.feature.allbreeds.usecase.GetDogBreedListUseCase import com.tobioyelekan.dogbreed.testing.data.TestData.dogBreeds import io.mockk.coEvery import io.mockk.mockk @@ -10,7 +11,7 @@ import org.junit.Test import kotlin.test.assertEquals class GetDogBreedListUseCaseTest { - private val dogBreedRepository: DogBreedsRepositoryImpl = mockk() + private val dogBreedRepository: DogBreedsRepository = mockk() private val subject = GetDogBreedListUseCase(dogBreedRepository) @Test diff --git a/feature/allbreeds/proguard-rules.pro b/feature/allbreeds/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/feature/allbreeds/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/feature/allbreeds/src/main/AndroidManifest.xml b/feature/allbreeds/src/main/AndroidManifest.xml deleted file mode 100644 index a5918e6..0000000 --- a/feature/allbreeds/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/feature/allbreeds/build.gradle.kts b/feature/allbreeds/ui/build.gradle.kts similarity index 82% rename from feature/allbreeds/build.gradle.kts rename to feature/allbreeds/ui/build.gradle.kts index 6bd9298..e23803c 100644 --- a/feature/allbreeds/build.gradle.kts +++ b/feature/allbreeds/ui/build.gradle.kts @@ -41,6 +41,11 @@ android { packaging { resources.excludes.add("META-INF/*") } + testOptions { + unitTests { + isIncludeAndroidResources = true + } + } } dependencies { @@ -48,18 +53,16 @@ dependencies { implementation(libs.hilt.core) ksp(libs.hilt.compiler) - implementation(projects.domain.allbreeds) + implementation(projects.feature.allbreeds.domain) + implementation(projects.feature.allbreeds.data) implementation(projects.core.designsystem) - implementation(projects.core.model) implementation(projects.core.common) testImplementation(projects.core.testing) testImplementation(kotlin("test")) - androidTestImplementation(projects.core.testing) - androidTestImplementation(kotlin("test")) - - androidTestImplementation(libs.compose.ui.test) + implementation(libs.robolectric) + testImplementation(libs.compose.ui.test) debugImplementation(libs.compose.test.manifest) } \ No newline at end of file diff --git a/feature/allbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsScreen.kt b/feature/allbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsScreen.kt similarity index 100% rename from feature/allbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsScreen.kt rename to feature/allbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsScreen.kt diff --git a/feature/allbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsUiState.kt b/feature/allbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsUiState.kt similarity index 100% rename from feature/allbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsUiState.kt rename to feature/allbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsUiState.kt diff --git a/feature/allbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsViewModel.kt b/feature/allbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsViewModel.kt similarity index 93% rename from feature/allbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsViewModel.kt rename to feature/allbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsViewModel.kt index e830ad4..789d74f 100644 --- a/feature/allbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsViewModel.kt +++ b/feature/allbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsViewModel.kt @@ -2,7 +2,7 @@ package com.tobioyelekan.dogbreed.feature.allbreeds import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.tobioyelekan.dogbreed.domain.allbreeds.GetDogBreedListUseCase +import com.tobioyelekan.dogbreed.feature.allbreeds.usecase.GetDogBreedListUseCase import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow diff --git a/feature/allbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/di/AllBreedsUiModule.kt b/feature/allbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/di/AllBreedsUiModule.kt new file mode 100644 index 0000000..650ff43 --- /dev/null +++ b/feature/allbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/di/AllBreedsUiModule.kt @@ -0,0 +1,20 @@ +package com.tobioyelekan.dogbreed.feature.allbreeds.di + +import com.tobioyelekan.dogbreed.feature.allbreeds.repository.DogBreedsRepository +import com.tobioyelekan.dogbreed.feature.allbreeds.usecase.GetDogBreedListUseCase +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object AllBreedsUiModule { + + @Provides + @Singleton + fun provideGetDogBreedListUseCase( + repository: DogBreedsRepository + ): GetDogBreedListUseCase = GetDogBreedListUseCase(repository) +} \ No newline at end of file diff --git a/feature/allbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/allbreeds/navigation/AllBreedNavigation.kt b/feature/allbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/navigation/AllBreedNavigation.kt similarity index 100% rename from feature/allbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/allbreeds/navigation/AllBreedNavigation.kt rename to feature/allbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/navigation/AllBreedNavigation.kt diff --git a/feature/allbreeds/src/androidTest/java/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedScreenTest.kt b/feature/allbreeds/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedScreenTest.kt similarity index 94% rename from feature/allbreeds/src/androidTest/java/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedScreenTest.kt rename to feature/allbreeds/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedScreenTest.kt index 601b9bb..b340769 100644 --- a/feature/allbreeds/src/androidTest/java/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedScreenTest.kt +++ b/feature/allbreeds/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedScreenTest.kt @@ -8,10 +8,13 @@ import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.compose.ui.test.onAllNodesWithTag import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.onNodeWithText +import androidx.test.ext.junit.runners.AndroidJUnit4 import com.tobioyelekan.dogbreed.testing.data.TestData.dogBreeds import org.junit.Rule import org.junit.Test +import org.junit.runner.RunWith +@RunWith(AndroidJUnit4::class) class AllBreedScreenTest { @get:Rule val composeTestRule = createAndroidComposeRule() diff --git a/feature/allbreeds/src/test/java/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsViewModelTest.kt b/feature/allbreeds/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsViewModelTest.kt similarity index 95% rename from feature/allbreeds/src/test/java/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsViewModelTest.kt rename to feature/allbreeds/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsViewModelTest.kt index 53927a8..383d153 100644 --- a/feature/allbreeds/src/test/java/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsViewModelTest.kt +++ b/feature/allbreeds/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/allbreeds/AllBreedsViewModelTest.kt @@ -1,6 +1,6 @@ package com.tobioyelekan.dogbreed.feature.allbreeds -import com.tobioyelekan.dogbreed.domain.allbreeds.GetDogBreedListUseCase +import com.tobioyelekan.dogbreed.feature.allbreeds.usecase.GetDogBreedListUseCase import com.tobioyelekan.dogbreed.testing.data.TestData.dogBreeds import com.tobioyelekan.dogbreed.testing.util.MainDispatcherRule import io.mockk.coEvery diff --git a/feature/breedDetails/.gitignore b/feature/breedDetails/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/feature/breedDetails/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/feature/breedDetails/consumer-rules.pro b/feature/breedDetails/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/data/subbreeds/build.gradle.kts b/feature/breedDetails/data/build.gradle.kts similarity index 86% rename from data/subbreeds/build.gradle.kts rename to feature/breedDetails/data/build.gradle.kts index d4f1ee9..290ba19 100644 --- a/data/subbreeds/build.gradle.kts +++ b/feature/breedDetails/data/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } android { - namespace = "com.tobioyelekan.dogbreed.data.subbreeds" + namespace = "com.tobioyelekan.dogbreed.data.allbreeds" compileSdk = 34 defaultConfig { @@ -39,8 +39,9 @@ dependencies { ksp(libs.hilt.compiler) implementation(projects.core.network) + implementation(projects.core.database) implementation(projects.core.common) - implementation(projects.core.model) + implementation(projects.feature.breedDetails.domain) testImplementation(projects.core.testing) testImplementation(kotlin("test")) diff --git a/data/breedDetails/src/main/java/com/tobioyelekan/dogbreed/data/breeddetails/di/BreedDetailsDataModule.kt b/feature/breedDetails/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/di/BreedDetailsDataModule.kt similarity index 57% rename from data/breedDetails/src/main/java/com/tobioyelekan/dogbreed/data/breeddetails/di/BreedDetailsDataModule.kt rename to feature/breedDetails/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/di/BreedDetailsDataModule.kt index 8e527b9..40cc454 100644 --- a/data/breedDetails/src/main/java/com/tobioyelekan/dogbreed/data/breeddetails/di/BreedDetailsDataModule.kt +++ b/feature/breedDetails/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/di/BreedDetailsDataModule.kt @@ -1,7 +1,7 @@ -package com.tobioyelekan.dogbreed.data.breeddetails.di +package com.tobioyelekan.dogbreed.feature.breedDetails.di -import com.tobioyelekan.dogbreed.data.breeddetails.repository.DogBreedDetailRepository -import com.tobioyelekan.dogbreed.data.breeddetails.repository.DogBreedDetailsRepositoryImpl +import com.tobioyelekan.dogbreed.feature.breedDetails.repository.DogBreedDetailRepository +import com.tobioyelekan.dogbreed.feature.breedDetails.repository.DogBreedDetailsRepositoryImpl import dagger.Binds import dagger.Module import dagger.hilt.InstallIn diff --git a/data/breedDetails/src/main/java/com/tobioyelekan/dogbreed/data/breeddetails/repository/DogBreedDetailsRepositoryImpl.kt b/feature/breedDetails/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/repository/DogBreedDetailsRepositoryImpl.kt similarity index 95% rename from data/breedDetails/src/main/java/com/tobioyelekan/dogbreed/data/breeddetails/repository/DogBreedDetailsRepositoryImpl.kt rename to feature/breedDetails/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/repository/DogBreedDetailsRepositoryImpl.kt index e0164bb..9c98460 100644 --- a/data/breedDetails/src/main/java/com/tobioyelekan/dogbreed/data/breeddetails/repository/DogBreedDetailsRepositoryImpl.kt +++ b/feature/breedDetails/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/repository/DogBreedDetailsRepositoryImpl.kt @@ -1,4 +1,4 @@ -package com.tobioyelekan.dogbreed.data.breeddetails.repository +package com.tobioyelekan.dogbreed.feature.breedDetails.repository import com.tobioyelekan.dogbreed.core.database.dao.DogBreedDao import com.tobioyelekan.dogbreed.core.model.DogBreed diff --git a/data/breedDetails/src/test/java/com/tobioyelekan/dogbreed/data/breeddetails/DogBreedDetailsRepositoryImplTest.kt b/feature/breedDetails/data/src/test/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsRepositoryImplTest.kt similarity index 96% rename from data/breedDetails/src/test/java/com/tobioyelekan/dogbreed/data/breeddetails/DogBreedDetailsRepositoryImplTest.kt rename to feature/breedDetails/data/src/test/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsRepositoryImplTest.kt index 1d253c1..f2be7a8 100644 --- a/data/breedDetails/src/test/java/com/tobioyelekan/dogbreed/data/breeddetails/DogBreedDetailsRepositoryImplTest.kt +++ b/feature/breedDetails/data/src/test/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsRepositoryImplTest.kt @@ -1,10 +1,10 @@ -package com.tobioyelekan.dogbreed.data.breeddetails +package com.tobioyelekan.dogbreed.feature.breedDetails import android.database.sqlite.SQLiteException import com.tobioyelekan.dogbreed.core.database.dao.DogBreedDao import com.tobioyelekan.dogbreed.core.database.entity.DogBreedEntity import com.tobioyelekan.dogbreed.core.database.entity.toDomainModel -import com.tobioyelekan.dogbreed.data.breeddetails.repository.DogBreedDetailsRepositoryImpl +import com.tobioyelekan.dogbreed.feature.breedDetails.repository.DogBreedDetailsRepositoryImpl import io.mockk.coEvery import io.mockk.coVerify import io.mockk.mockk diff --git a/feature/breedDetails/domain/build.gradle.kts b/feature/breedDetails/domain/build.gradle.kts new file mode 100644 index 0000000..0f3fa08 --- /dev/null +++ b/feature/breedDetails/domain/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { + id("java-library") + alias(libs.plugins.jetbrains.kotlin.jvm) +} +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} +kotlin { + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 + } +} + +dependencies { + api(projects.core.model) + implementation(libs.kotlin.coroutine) + testImplementation(projects.core.testing) + testImplementation(kotlin("test")) +} \ No newline at end of file diff --git a/data/breedDetails/src/main/java/com/tobioyelekan/dogbreed/data/breeddetails/repository/DogBreedDetailRepository.kt b/feature/breedDetails/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/repository/DogBreedDetailRepository.kt similarity index 85% rename from data/breedDetails/src/main/java/com/tobioyelekan/dogbreed/data/breeddetails/repository/DogBreedDetailRepository.kt rename to feature/breedDetails/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/repository/DogBreedDetailRepository.kt index ed82138..0110901 100644 --- a/data/breedDetails/src/main/java/com/tobioyelekan/dogbreed/data/breeddetails/repository/DogBreedDetailRepository.kt +++ b/feature/breedDetails/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/repository/DogBreedDetailRepository.kt @@ -1,4 +1,4 @@ -package com.tobioyelekan.dogbreed.data.breeddetails.repository +package com.tobioyelekan.dogbreed.feature.breedDetails.repository import com.tobioyelekan.dogbreed.core.model.DogBreed import kotlinx.coroutines.flow.Flow diff --git a/feature/breedDetails/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/usecase/AddFavoriteBreedUseCase.kt b/feature/breedDetails/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/usecase/AddFavoriteBreedUseCase.kt new file mode 100644 index 0000000..99ed359 --- /dev/null +++ b/feature/breedDetails/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/usecase/AddFavoriteBreedUseCase.kt @@ -0,0 +1,11 @@ +package com.tobioyelekan.dogbreed.feature.breedDetails.usecase + +import com.tobioyelekan.dogbreed.feature.breedDetails.repository.DogBreedDetailRepository + +class AddFavoriteBreedUseCase( + private val dogBreedDetailRepository: DogBreedDetailRepository +) { + suspend operator fun invoke(breedName: String): Result { + return dogBreedDetailRepository.addFavoriteBreed(breedName) + } +} \ No newline at end of file diff --git a/feature/breedDetails/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/usecase/DeleteFavoriteBreedUseCase.kt b/feature/breedDetails/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/usecase/DeleteFavoriteBreedUseCase.kt new file mode 100644 index 0000000..4d46a60 --- /dev/null +++ b/feature/breedDetails/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/usecase/DeleteFavoriteBreedUseCase.kt @@ -0,0 +1,11 @@ +package com.tobioyelekan.dogbreed.feature.breedDetails.usecase + +import com.tobioyelekan.dogbreed.feature.breedDetails.repository.DogBreedDetailRepository + +class DeleteFavoriteBreedUseCase constructor( + private val dogBreedDetailRepository: DogBreedDetailRepository +) { + suspend operator fun invoke(breedName: String): Result { + return dogBreedDetailRepository.removeFavoriteBreed(breedName) + } +} \ No newline at end of file diff --git a/domain/breedDetails/src/main/java/com/tobioyelekan/dogbreed/domain/breedDetails/GetBreedDetailsUseCase.kt b/feature/breedDetails/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/usecase/GetBreedDetailsUseCase.kt similarity index 55% rename from domain/breedDetails/src/main/java/com/tobioyelekan/dogbreed/domain/breedDetails/GetBreedDetailsUseCase.kt rename to feature/breedDetails/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/usecase/GetBreedDetailsUseCase.kt index 06d66bd..11a65d1 100644 --- a/domain/breedDetails/src/main/java/com/tobioyelekan/dogbreed/domain/breedDetails/GetBreedDetailsUseCase.kt +++ b/feature/breedDetails/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/usecase/GetBreedDetailsUseCase.kt @@ -1,11 +1,10 @@ -package com.tobioyelekan.dogbreed.domain.breedDetails +package com.tobioyelekan.dogbreed.feature.breedDetails.usecase import com.tobioyelekan.dogbreed.core.model.DogBreed -import com.tobioyelekan.dogbreed.data.breeddetails.repository.DogBreedDetailRepository +import com.tobioyelekan.dogbreed.feature.breedDetails.repository.DogBreedDetailRepository import kotlinx.coroutines.flow.Flow -import javax.inject.Inject -class GetBreedDetailsUseCase @Inject constructor( +class GetBreedDetailsUseCase( private val repository: DogBreedDetailRepository ) { operator fun invoke(breedName: String): Flow> { diff --git a/domain/breedDetails/src/test/java/com/tobioyelekan/dogbreed/domain/breedDetails/AddFavoriteBreedUseCaseTest.kt b/feature/breedDetails/domain/src/test/kotlin/com.tobioyelekan.dogbreed.feature.breedDetails/AddFavoriteBreedUseCaseTest.kt similarity index 75% rename from domain/breedDetails/src/test/java/com/tobioyelekan/dogbreed/domain/breedDetails/AddFavoriteBreedUseCaseTest.kt rename to feature/breedDetails/domain/src/test/kotlin/com.tobioyelekan.dogbreed.feature.breedDetails/AddFavoriteBreedUseCaseTest.kt index 277c722..90c971d 100644 --- a/domain/breedDetails/src/test/java/com/tobioyelekan/dogbreed/domain/breedDetails/AddFavoriteBreedUseCaseTest.kt +++ b/feature/breedDetails/domain/src/test/kotlin/com.tobioyelekan.dogbreed.feature.breedDetails/AddFavoriteBreedUseCaseTest.kt @@ -1,6 +1,7 @@ -package com.tobioyelekan.dogbreed.domain.breedDetails +package com.tobioyelekan.dogbreed.feature.breedDetails -import com.tobioyelekan.dogbreed.data.breeddetails.repository.DogBreedDetailsRepositoryImpl +import com.tobioyelekan.dogbreed.feature.breedDetails.repository.DogBreedDetailRepository +import com.tobioyelekan.dogbreed.feature.breedDetails.usecase.AddFavoriteBreedUseCase import io.mockk.coEvery import io.mockk.mockk import junit.framework.TestCase.assertTrue @@ -9,7 +10,7 @@ import org.junit.Test import kotlin.test.assertEquals class AddFavoriteBreedUseCaseTest { - private val repository: DogBreedDetailsRepositoryImpl = mockk() + private val repository: DogBreedDetailRepository = mockk() private val subject = AddFavoriteBreedUseCase(repository) @Test diff --git a/domain/breedDetails/src/test/java/com/tobioyelekan/dogbreed/domain/breedDetails/DeleteFavoriteBreedUseCaseTest.kt b/feature/breedDetails/domain/src/test/kotlin/com.tobioyelekan.dogbreed.feature.breedDetails/DeleteFavoriteBreedUseCaseTest.kt similarity index 76% rename from domain/breedDetails/src/test/java/com/tobioyelekan/dogbreed/domain/breedDetails/DeleteFavoriteBreedUseCaseTest.kt rename to feature/breedDetails/domain/src/test/kotlin/com.tobioyelekan.dogbreed.feature.breedDetails/DeleteFavoriteBreedUseCaseTest.kt index f1f6baa..0989d05 100644 --- a/domain/breedDetails/src/test/java/com/tobioyelekan/dogbreed/domain/breedDetails/DeleteFavoriteBreedUseCaseTest.kt +++ b/feature/breedDetails/domain/src/test/kotlin/com.tobioyelekan.dogbreed.feature.breedDetails/DeleteFavoriteBreedUseCaseTest.kt @@ -1,6 +1,7 @@ -package com.tobioyelekan.dogbreed.domain.breedDetails +package com.tobioyelekan.dogbreed.feature.breedDetails -import com.tobioyelekan.dogbreed.data.breeddetails.repository.DogBreedDetailsRepositoryImpl +import com.tobioyelekan.dogbreed.feature.breedDetails.repository.DogBreedDetailRepository +import com.tobioyelekan.dogbreed.feature.breedDetails.usecase.DeleteFavoriteBreedUseCase import io.mockk.coEvery import io.mockk.mockk import junit.framework.TestCase.assertTrue @@ -9,7 +10,7 @@ import org.junit.Test import kotlin.test.assertEquals class DeleteFavoriteBreedUseCaseTest { - private val repository: DogBreedDetailsRepositoryImpl = mockk() + private val repository: DogBreedDetailRepository = mockk() private val subject = DeleteFavoriteBreedUseCase(repository) @Test diff --git a/domain/breedDetails/src/test/java/com/tobioyelekan/dogbreed/domain/breedDetails/GetBreedDetailsUseCaseTest.kt b/feature/breedDetails/domain/src/test/kotlin/com.tobioyelekan.dogbreed.feature.breedDetails/GetBreedDetailsUseCaseTest.kt similarity index 79% rename from domain/breedDetails/src/test/java/com/tobioyelekan/dogbreed/domain/breedDetails/GetBreedDetailsUseCaseTest.kt rename to feature/breedDetails/domain/src/test/kotlin/com.tobioyelekan.dogbreed.feature.breedDetails/GetBreedDetailsUseCaseTest.kt index 038f856..9544dad 100644 --- a/domain/breedDetails/src/test/java/com/tobioyelekan/dogbreed/domain/breedDetails/GetBreedDetailsUseCaseTest.kt +++ b/feature/breedDetails/domain/src/test/kotlin/com.tobioyelekan.dogbreed.feature.breedDetails/GetBreedDetailsUseCaseTest.kt @@ -1,6 +1,7 @@ -package com.tobioyelekan.dogbreed.domain.breedDetails +package com.tobioyelekan.dogbreed.feature.breedDetails -import com.tobioyelekan.dogbreed.data.breeddetails.repository.DogBreedDetailsRepositoryImpl +import com.tobioyelekan.dogbreed.feature.breedDetails.repository.DogBreedDetailRepository +import com.tobioyelekan.dogbreed.feature.breedDetails.usecase.GetBreedDetailsUseCase import com.tobioyelekan.dogbreed.testing.data.TestData.dogBreeds import io.mockk.coEvery import io.mockk.mockk @@ -12,7 +13,7 @@ import kotlin.test.assertEquals import kotlin.test.assertTrue class GetBreedDetailsUseCaseTest { - private val repository: DogBreedDetailsRepositoryImpl = mockk() + private val repository: DogBreedDetailRepository = mockk() private val subject = GetBreedDetailsUseCase(repository) @Test diff --git a/feature/breedDetails/proguard-rules.pro b/feature/breedDetails/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/feature/breedDetails/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/feature/breedDetails/src/main/AndroidManifest.xml b/feature/breedDetails/src/main/AndroidManifest.xml deleted file mode 100644 index a5918e6..0000000 --- a/feature/breedDetails/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/feature/breedDetails/build.gradle.kts b/feature/breedDetails/ui/build.gradle.kts similarity index 82% rename from feature/breedDetails/build.gradle.kts rename to feature/breedDetails/ui/build.gradle.kts index 140d314..4e495e0 100644 --- a/feature/breedDetails/build.gradle.kts +++ b/feature/breedDetails/ui/build.gradle.kts @@ -40,6 +40,11 @@ android { packaging { resources.excludes.add("META-INF/*") } + testOptions { + unitTests { + isIncludeAndroidResources = true + } + } } dependencies { @@ -47,7 +52,8 @@ dependencies { ksp(libs.hilt.compiler) implementation(libs.kotlin.coroutine) - implementation(projects.domain.breedDetails) + implementation(projects.feature.breedDetails.data) + implementation(projects.feature.breedDetails.domain) implementation(projects.core.designsystem) implementation(projects.core.model) implementation(projects.core.common) @@ -55,9 +61,7 @@ dependencies { testImplementation(projects.core.testing) testImplementation(kotlin("test")) - androidTestImplementation(projects.core.testing) - androidTestImplementation(kotlin("test")) - - androidTestImplementation(libs.compose.ui.test) + implementation(libs.robolectric) + testImplementation(libs.compose.ui.test) debugImplementation(libs.compose.test.manifest) } \ No newline at end of file diff --git a/feature/breedDetails/src/main/java/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailScreen.kt b/feature/breedDetails/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailScreen.kt similarity index 100% rename from feature/breedDetails/src/main/java/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailScreen.kt rename to feature/breedDetails/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailScreen.kt diff --git a/feature/breedDetails/src/main/java/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsUIState.kt b/feature/breedDetails/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsUIState.kt similarity index 100% rename from feature/breedDetails/src/main/java/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsUIState.kt rename to feature/breedDetails/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsUIState.kt diff --git a/feature/breedDetails/src/main/java/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsViewModel.kt b/feature/breedDetails/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsViewModel.kt similarity index 92% rename from feature/breedDetails/src/main/java/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsViewModel.kt rename to feature/breedDetails/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsViewModel.kt index 1f29cb1..2b42a0a 100644 --- a/feature/breedDetails/src/main/java/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsViewModel.kt +++ b/feature/breedDetails/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsViewModel.kt @@ -4,10 +4,10 @@ import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.tobioyelekan.dogbreed.core.common.util.toTitleCase -import com.tobioyelekan.dogbreed.domain.breedDetails.AddFavoriteBreedUseCase -import com.tobioyelekan.dogbreed.domain.breedDetails.DeleteFavoriteBreedUseCase -import com.tobioyelekan.dogbreed.domain.breedDetails.GetBreedDetailsUseCase import com.tobioyelekan.dogbreed.feature.breedDetails.navigation.breedNameArgs +import com.tobioyelekan.dogbreed.feature.breedDetails.usecase.AddFavoriteBreedUseCase +import com.tobioyelekan.dogbreed.feature.breedDetails.usecase.DeleteFavoriteBreedUseCase +import com.tobioyelekan.dogbreed.feature.breedDetails.usecase.GetBreedDetailsUseCase import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers diff --git a/feature/breedDetails/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/di/BreedDetailsUiModule.kt b/feature/breedDetails/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/di/BreedDetailsUiModule.kt new file mode 100644 index 0000000..0abe3e5 --- /dev/null +++ b/feature/breedDetails/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/di/BreedDetailsUiModule.kt @@ -0,0 +1,33 @@ +package com.tobioyelekan.dogbreed.feature.breedDetails.di + +import com.tobioyelekan.dogbreed.feature.breedDetails.repository.DogBreedDetailRepository +import com.tobioyelekan.dogbreed.feature.breedDetails.usecase.AddFavoriteBreedUseCase +import com.tobioyelekan.dogbreed.feature.breedDetails.usecase.DeleteFavoriteBreedUseCase +import com.tobioyelekan.dogbreed.feature.breedDetails.usecase.GetBreedDetailsUseCase +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object BreedDetailsUiModule { + @Provides + @Singleton + fun provideAddFavoriteBreedUseCase( + repository: DogBreedDetailRepository + ): AddFavoriteBreedUseCase = AddFavoriteBreedUseCase(repository) + + @Provides + @Singleton + fun provideDeleteFavoriteBreedUseCase( + repository: DogBreedDetailRepository + ): DeleteFavoriteBreedUseCase = DeleteFavoriteBreedUseCase(repository) + + @Provides + @Singleton + fun provideGetBreedDetailsUseCase( + repository: DogBreedDetailRepository + ): GetBreedDetailsUseCase = GetBreedDetailsUseCase(repository) +} \ No newline at end of file diff --git a/feature/breedDetails/src/main/java/com/tobioyelekan/dogbreed/feature/breedDetails/navigation/BreedDetailsNavigation.kt b/feature/breedDetails/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/navigation/BreedDetailsNavigation.kt similarity index 100% rename from feature/breedDetails/src/main/java/com/tobioyelekan/dogbreed/feature/breedDetails/navigation/BreedDetailsNavigation.kt rename to feature/breedDetails/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/navigation/BreedDetailsNavigation.kt diff --git a/feature/breedDetails/src/androidTest/java/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsScreenTest.kt b/feature/breedDetails/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsScreenTest.kt similarity index 97% rename from feature/breedDetails/src/androidTest/java/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsScreenTest.kt rename to feature/breedDetails/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsScreenTest.kt index 72f1379..18d4e80 100644 --- a/feature/breedDetails/src/androidTest/java/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsScreenTest.kt +++ b/feature/breedDetails/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsScreenTest.kt @@ -9,10 +9,13 @@ import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.compose.ui.test.onAllNodesWithTag import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.onNodeWithText +import androidx.test.ext.junit.runners.AndroidJUnit4 import com.tobioyelekan.dogbreed.testing.data.TestData.dogBreeds import org.junit.Rule import org.junit.Test +import org.junit.runner.RunWith +@RunWith(AndroidJUnit4::class) class DogBreedDetailsScreenTest { @get:Rule val composeTestRule = createAndroidComposeRule() @@ -104,9 +107,6 @@ class DogBreedDetailsScreenTest { composeTestRule.onNodeWithTag("image") .assertIsDisplayed() - composeTestRule.onNodeWithText("Sub breeds") - .assertIsDisplayed() - composeTestRule.onNodeWithText("No sub breeds listed") .assertIsDisplayed() diff --git a/feature/breedDetails/src/test/java/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsViewModelTest.kt b/feature/breedDetails/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsViewModelTest.kt similarity index 94% rename from feature/breedDetails/src/test/java/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsViewModelTest.kt rename to feature/breedDetails/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsViewModelTest.kt index 5c3c84b..e16b7ba 100644 --- a/feature/breedDetails/src/test/java/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsViewModelTest.kt +++ b/feature/breedDetails/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/breedDetails/DogBreedDetailsViewModelTest.kt @@ -3,10 +3,10 @@ package com.tobioyelekan.dogbreed.feature.breedDetails import androidx.lifecycle.SavedStateHandle import app.cash.turbine.test import com.tobioyelekan.dogbreed.core.common.util.toTitleCase -import com.tobioyelekan.dogbreed.domain.breedDetails.AddFavoriteBreedUseCase -import com.tobioyelekan.dogbreed.domain.breedDetails.DeleteFavoriteBreedUseCase -import com.tobioyelekan.dogbreed.domain.breedDetails.GetBreedDetailsUseCase import com.tobioyelekan.dogbreed.feature.breedDetails.DogBreedDetailsViewModel.* +import com.tobioyelekan.dogbreed.feature.breedDetails.usecase.AddFavoriteBreedUseCase +import com.tobioyelekan.dogbreed.feature.breedDetails.usecase.DeleteFavoriteBreedUseCase +import com.tobioyelekan.dogbreed.feature.breedDetails.usecase.GetBreedDetailsUseCase import com.tobioyelekan.dogbreed.testing.data.TestData.dogBreeds import com.tobioyelekan.dogbreed.testing.util.MainDispatcherRule import io.mockk.coEvery @@ -145,5 +145,4 @@ class DogBreedDetailsViewModelTest { ioDispatcher = coroutineTestDispatcher ) } - } \ No newline at end of file diff --git a/feature/favorites/.gitignore b/feature/favorites/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/feature/favorites/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/feature/favorites/consumer-rules.pro b/feature/favorites/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/feature/favorites/domain/build.gradle.kts b/feature/favorites/domain/build.gradle.kts new file mode 100644 index 0000000..d5dc27e --- /dev/null +++ b/feature/favorites/domain/build.gradle.kts @@ -0,0 +1,21 @@ +plugins { + id("java-library") + alias(libs.plugins.jetbrains.kotlin.jvm) +} +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} +kotlin { + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 + } +} + +dependencies { + api(projects.core.model) + implementation(libs.kotlin.coroutine) + implementation(projects.feature.breedDetails.domain) + testImplementation(projects.core.testing) + testImplementation(kotlin("test")) +} \ No newline at end of file diff --git a/domain/favorites/src/main/java/com/tobioyelekan/dogbreed/domain/favorites/GetFavoriteBreedsUseCase.kt b/feature/favorites/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/GetFavoriteBreedsUseCase.kt similarity index 54% rename from domain/favorites/src/main/java/com/tobioyelekan/dogbreed/domain/favorites/GetFavoriteBreedsUseCase.kt rename to feature/favorites/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/GetFavoriteBreedsUseCase.kt index 764558b..f1d4249 100644 --- a/domain/favorites/src/main/java/com/tobioyelekan/dogbreed/domain/favorites/GetFavoriteBreedsUseCase.kt +++ b/feature/favorites/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/GetFavoriteBreedsUseCase.kt @@ -1,11 +1,10 @@ -package com.tobioyelekan.dogbreed.domain.favorites +package com.tobioyelekan.dogbreed.feature.favorites import com.tobioyelekan.dogbreed.core.model.DogBreed -import com.tobioyelekan.dogbreed.data.breeddetails.repository.DogBreedDetailRepository +import com.tobioyelekan.dogbreed.feature.breedDetails.repository.DogBreedDetailRepository import kotlinx.coroutines.flow.Flow -import javax.inject.Inject -class GetFavoriteBreedsUseCase @Inject constructor( +class GetFavoriteBreedsUseCase( private val repository: DogBreedDetailRepository ) { operator fun invoke(): Flow>> { diff --git a/domain/favorites/src/test/java/com/tobioyelekan/dogbreed/domain/favorites/GetFavoriteBreedsUseCaseTest.kt b/feature/favorites/domain/src/test/kotlin/com/tobioyelekan/dogbreed/feature/favorites/GetFavoriteBreedsUseCaseTest.kt similarity index 84% rename from domain/favorites/src/test/java/com/tobioyelekan/dogbreed/domain/favorites/GetFavoriteBreedsUseCaseTest.kt rename to feature/favorites/domain/src/test/kotlin/com/tobioyelekan/dogbreed/feature/favorites/GetFavoriteBreedsUseCaseTest.kt index 5496441..07c9f88 100644 --- a/domain/favorites/src/test/java/com/tobioyelekan/dogbreed/domain/favorites/GetFavoriteBreedsUseCaseTest.kt +++ b/feature/favorites/domain/src/test/kotlin/com/tobioyelekan/dogbreed/feature/favorites/GetFavoriteBreedsUseCaseTest.kt @@ -1,6 +1,6 @@ -package com.tobioyelekan.dogbreed.domain.favorites +package com.tobioyelekan.dogbreed.feature.favorites -import com.tobioyelekan.dogbreed.data.breeddetails.repository.DogBreedDetailsRepositoryImpl +import com.tobioyelekan.dogbreed.feature.breedDetails.repository.DogBreedDetailRepository import com.tobioyelekan.dogbreed.testing.data.TestData.dogBreeds import io.mockk.coEvery import io.mockk.mockk @@ -12,7 +12,7 @@ import org.junit.Test import kotlin.test.assertEquals class GetFavoriteBreedsUseCaseTest { - private val repository: DogBreedDetailsRepositoryImpl = mockk() + private val repository: DogBreedDetailRepository = mockk() private val subject = GetFavoriteBreedsUseCase(repository) @Test diff --git a/feature/favorites/proguard-rules.pro b/feature/favorites/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/feature/favorites/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/feature/favorites/src/main/AndroidManifest.xml b/feature/favorites/src/main/AndroidManifest.xml deleted file mode 100644 index a5918e6..0000000 --- a/feature/favorites/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/feature/favorites/build.gradle.kts b/feature/favorites/ui/build.gradle.kts similarity index 83% rename from feature/favorites/build.gradle.kts rename to feature/favorites/ui/build.gradle.kts index 1b7b008..8992567 100644 --- a/feature/favorites/build.gradle.kts +++ b/feature/favorites/ui/build.gradle.kts @@ -40,6 +40,11 @@ android { packaging { resources.excludes.add("META-INF/*") } + testOptions { + unitTests { + isIncludeAndroidResources = true + } + } } dependencies { @@ -49,7 +54,8 @@ dependencies { implementation(libs.kotlin.coroutine) - implementation(projects.domain.favorites) + implementation(projects.feature.breedDetails.domain) + implementation(projects.feature.favorites.domain) implementation(projects.core.designsystem) implementation(projects.core.model) implementation(projects.core.common) @@ -57,9 +63,7 @@ dependencies { testImplementation(projects.core.testing) testImplementation(kotlin("test")) - androidTestImplementation(projects.core.testing) - androidTestImplementation(kotlin("test")) - - androidTestImplementation(libs.compose.ui.test) + implementation(libs.robolectric) + testImplementation(libs.compose.ui.test) debugImplementation(libs.compose.test.manifest) } \ No newline at end of file diff --git a/feature/favorites/src/main/java/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedScreen.kt b/feature/favorites/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedScreen.kt similarity index 100% rename from feature/favorites/src/main/java/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedScreen.kt rename to feature/favorites/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedScreen.kt diff --git a/feature/favorites/src/main/java/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedUIState.kt b/feature/favorites/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedUIState.kt similarity index 100% rename from feature/favorites/src/main/java/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedUIState.kt rename to feature/favorites/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedUIState.kt diff --git a/feature/favorites/src/main/java/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedViewModel.kt b/feature/favorites/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedViewModel.kt similarity index 93% rename from feature/favorites/src/main/java/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedViewModel.kt rename to feature/favorites/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedViewModel.kt index e0bc9a2..ab1b671 100644 --- a/feature/favorites/src/main/java/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedViewModel.kt +++ b/feature/favorites/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedViewModel.kt @@ -2,7 +2,6 @@ package com.tobioyelekan.dogbreed.feature.favorites import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.tobioyelekan.dogbreed.domain.favorites.GetFavoriteBreedsUseCase import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow diff --git a/feature/favorites/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/di/FavoriteBreedUiModule.kt b/feature/favorites/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/di/FavoriteBreedUiModule.kt new file mode 100644 index 0000000..3f2e7f1 --- /dev/null +++ b/feature/favorites/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/di/FavoriteBreedUiModule.kt @@ -0,0 +1,19 @@ +package com.tobioyelekan.dogbreed.feature.favorites.di + +import com.tobioyelekan.dogbreed.feature.breedDetails.repository.DogBreedDetailRepository +import com.tobioyelekan.dogbreed.feature.favorites.GetFavoriteBreedsUseCase +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object FavoriteBreedUiModule { + @Provides + @Singleton + fun provideGetFavoriteBreedsUseCase( + repository: DogBreedDetailRepository + ): GetFavoriteBreedsUseCase = GetFavoriteBreedsUseCase(repository) +} \ No newline at end of file diff --git a/feature/favorites/src/main/java/com/tobioyelekan/dogbreed/feature/favorites/navigation/FavoriteBreedNavigation.kt b/feature/favorites/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/navigation/FavoriteBreedNavigation.kt similarity index 100% rename from feature/favorites/src/main/java/com/tobioyelekan/dogbreed/feature/favorites/navigation/FavoriteBreedNavigation.kt rename to feature/favorites/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/favorites/navigation/FavoriteBreedNavigation.kt diff --git a/feature/favorites/src/androidTest/java/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedScreenTest.kt b/feature/favorites/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedScreenTest.kt similarity index 92% rename from feature/favorites/src/androidTest/java/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedScreenTest.kt rename to feature/favorites/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedScreenTest.kt index 575cbeb..68a1b47 100644 --- a/feature/favorites/src/androidTest/java/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedScreenTest.kt +++ b/feature/favorites/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedScreenTest.kt @@ -8,10 +8,13 @@ import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.compose.ui.test.onAllNodesWithTag import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.onNodeWithText +import androidx.test.ext.junit.runners.AndroidJUnit4 import com.tobioyelekan.dogbreed.testing.data.TestData.dogBreeds import org.junit.Rule import org.junit.Test +import org.junit.runner.RunWith +@RunWith(AndroidJUnit4::class) class FavoriteBreedScreenTest { @get:Rule val composeTestRule = createAndroidComposeRule() @@ -49,7 +52,7 @@ class FavoriteBreedScreenTest { fun shouldShowEmptyState_when_EmptyStateIsReceived() { composeTestRule.setContent { FavoriteBreedScreenContent( - viewState = FavoriteBreedUIState.Empty, + viewState = FavoriteBreedUIState.Success(emptyList()), onBreedClicked = {} ) } diff --git a/feature/favorites/src/test/java/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedViewModelTest.kt b/feature/favorites/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedViewModelTest.kt similarity index 96% rename from feature/favorites/src/test/java/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedViewModelTest.kt rename to feature/favorites/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedViewModelTest.kt index 6e8bd03..1403cd2 100644 --- a/feature/favorites/src/test/java/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedViewModelTest.kt +++ b/feature/favorites/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/favorites/FavoriteBreedViewModelTest.kt @@ -1,6 +1,5 @@ package com.tobioyelekan.dogbreed.feature.favorites -import com.tobioyelekan.dogbreed.domain.favorites.GetFavoriteBreedsUseCase import com.tobioyelekan.dogbreed.testing.data.TestData.dogBreeds import com.tobioyelekan.dogbreed.testing.util.MainDispatcherRule import io.mockk.coEvery diff --git a/feature/subbreeds/.gitignore b/feature/subbreeds/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/feature/subbreeds/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/feature/subbreeds/consumer-rules.pro b/feature/subbreeds/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/data/breedDetails/build.gradle.kts b/feature/subbreeds/data/build.gradle.kts similarity index 86% rename from data/breedDetails/build.gradle.kts rename to feature/subbreeds/data/build.gradle.kts index ab1ae8d..24fa009 100644 --- a/data/breedDetails/build.gradle.kts +++ b/feature/subbreeds/data/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } android { - namespace = "com.tobioyelekan.dogbreed.data.breeddetails" + namespace = "com.tobioyelekan.dogbreed.data.allbreeds" compileSdk = 34 defaultConfig { @@ -38,9 +38,10 @@ dependencies { implementation(libs.hilt.core) ksp(libs.hilt.compiler) + implementation(projects.core.network) implementation(projects.core.database) implementation(projects.core.common) - implementation(projects.core.model) + implementation(projects.feature.subbreeds.domain) testImplementation(projects.core.testing) testImplementation(kotlin("test")) diff --git a/data/subbreeds/src/main/java/com/tobioyelekan/dogbreed/data/subbreeds/di/SubBreedDataModule.kt b/feature/subbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/di/SubBreedDataModule.kt similarity index 57% rename from data/subbreeds/src/main/java/com/tobioyelekan/dogbreed/data/subbreeds/di/SubBreedDataModule.kt rename to feature/subbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/di/SubBreedDataModule.kt index 225bc02..dad963e 100644 --- a/data/subbreeds/src/main/java/com/tobioyelekan/dogbreed/data/subbreeds/di/SubBreedDataModule.kt +++ b/feature/subbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/di/SubBreedDataModule.kt @@ -1,7 +1,7 @@ -package com.tobioyelekan.dogbreed.data.subbreeds.di +package com.tobioyelekan.dogbreed.feature.subbreeds.di -import com.tobioyelekan.dogbreed.data.subbreeds.repository.DogSubBreedRepository -import com.tobioyelekan.dogbreed.data.subbreeds.repository.DogSubBreedRepositoryImpl +import com.tobioyelekan.dogbreed.feature.subbreeds.repository.DogSubBreedRepository +import com.tobioyelekan.dogbreed.feature.subbreeds.repository.DogSubBreedRepositoryImpl import dagger.Binds import dagger.Module import dagger.hilt.InstallIn diff --git a/data/subbreeds/src/main/java/com/tobioyelekan/dogbreed/data/subbreeds/mapper/SubBreedImageApiMapper.kt b/feature/subbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/mapper/SubBreedImageApiMapper.kt similarity index 80% rename from data/subbreeds/src/main/java/com/tobioyelekan/dogbreed/data/subbreeds/mapper/SubBreedImageApiMapper.kt rename to feature/subbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/mapper/SubBreedImageApiMapper.kt index d3d6d15..157be21 100644 --- a/data/subbreeds/src/main/java/com/tobioyelekan/dogbreed/data/subbreeds/mapper/SubBreedImageApiMapper.kt +++ b/feature/subbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/mapper/SubBreedImageApiMapper.kt @@ -1,4 +1,4 @@ -package com.tobioyelekan.dogbreed.data.subbreeds.mapper +package com.tobioyelekan.dogbreed.feature.subbreeds.mapper import com.tobioyelekan.dogbreed.core.model.SubBreedImage import com.tobioyelekan.dogbreed.core.network.model.SubBreedImageApiModel diff --git a/data/subbreeds/src/main/java/com/tobioyelekan/dogbreed/data/subbreeds/repository/DogSubBreedRepositoryImpl.kt b/feature/subbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/repository/DogSubBreedRepositoryImpl.kt similarity index 82% rename from data/subbreeds/src/main/java/com/tobioyelekan/dogbreed/data/subbreeds/repository/DogSubBreedRepositoryImpl.kt rename to feature/subbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/repository/DogSubBreedRepositoryImpl.kt index 493f8a3..bd10263 100644 --- a/data/subbreeds/src/main/java/com/tobioyelekan/dogbreed/data/subbreeds/repository/DogSubBreedRepositoryImpl.kt +++ b/feature/subbreeds/data/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/repository/DogSubBreedRepositoryImpl.kt @@ -1,8 +1,8 @@ -package com.tobioyelekan.dogbreed.data.subbreeds.repository +package com.tobioyelekan.dogbreed.feature.subbreeds.repository import com.tobioyelekan.dogbreed.core.network.DogBreedApiService import com.tobioyelekan.dogbreed.core.model.SubBreedImage -import com.tobioyelekan.dogbreed.data.subbreeds.mapper.toDomain +import com.tobioyelekan.dogbreed.feature.subbreeds.mapper.toDomain import javax.inject.Inject class DogSubBreedRepositoryImpl @Inject constructor( diff --git a/data/subbreeds/src/test/java/com/tobioyelekan/dogbreed/data/subbreeds/DogSubBreedRepositoryImplTest.kt b/feature/subbreeds/data/src/test/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/DogSubBreedRepositoryImplTest.kt similarity index 88% rename from data/subbreeds/src/test/java/com/tobioyelekan/dogbreed/data/subbreeds/DogSubBreedRepositoryImplTest.kt rename to feature/subbreeds/data/src/test/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/DogSubBreedRepositoryImplTest.kt index 5f42ac0..dde8bca 100644 --- a/data/subbreeds/src/test/java/com/tobioyelekan/dogbreed/data/subbreeds/DogSubBreedRepositoryImplTest.kt +++ b/feature/subbreeds/data/src/test/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/DogSubBreedRepositoryImplTest.kt @@ -1,9 +1,9 @@ -package com.tobioyelekan.dogbreed.data.subbreeds +package com.tobioyelekan.dogbreed.feature.subbreeds import com.tobioyelekan.dogbreed.core.network.DogBreedApiService import com.tobioyelekan.dogbreed.core.network.model.SubBreedImageApiModel -import com.tobioyelekan.dogbreed.data.subbreeds.mapper.toDomain -import com.tobioyelekan.dogbreed.data.subbreeds.repository.DogSubBreedRepositoryImpl +import com.tobioyelekan.dogbreed.feature.subbreeds.mapper.toDomain +import com.tobioyelekan.dogbreed.feature.subbreeds.repository.DogSubBreedRepositoryImpl import io.mockk.coEvery import io.mockk.coVerify import io.mockk.mockk diff --git a/feature/subbreeds/domain/build.gradle.kts b/feature/subbreeds/domain/build.gradle.kts new file mode 100644 index 0000000..0f3fa08 --- /dev/null +++ b/feature/subbreeds/domain/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { + id("java-library") + alias(libs.plugins.jetbrains.kotlin.jvm) +} +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} +kotlin { + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 + } +} + +dependencies { + api(projects.core.model) + implementation(libs.kotlin.coroutine) + testImplementation(projects.core.testing) + testImplementation(kotlin("test")) +} \ No newline at end of file diff --git a/data/subbreeds/src/main/java/com/tobioyelekan/dogbreed/data/subbreeds/repository/DogSubBreedRepository.kt b/feature/subbreeds/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/repository/DogSubBreedRepository.kt similarity index 75% rename from data/subbreeds/src/main/java/com/tobioyelekan/dogbreed/data/subbreeds/repository/DogSubBreedRepository.kt rename to feature/subbreeds/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/repository/DogSubBreedRepository.kt index 843c38a..415d53f 100644 --- a/data/subbreeds/src/main/java/com/tobioyelekan/dogbreed/data/subbreeds/repository/DogSubBreedRepository.kt +++ b/feature/subbreeds/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/repository/DogSubBreedRepository.kt @@ -1,4 +1,4 @@ -package com.tobioyelekan.dogbreed.data.subbreeds.repository +package com.tobioyelekan.dogbreed.feature.subbreeds.repository import com.tobioyelekan.dogbreed.core.model.SubBreedImage diff --git a/domain/subbreeds/src/main/java/com/tobioyelekan/dogbreed/domain/subbreeds/GetSubBreedImageUseCase.kt b/feature/subbreeds/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/usecase/GetSubBreedImageUseCase.kt similarity index 59% rename from domain/subbreeds/src/main/java/com/tobioyelekan/dogbreed/domain/subbreeds/GetSubBreedImageUseCase.kt rename to feature/subbreeds/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/usecase/GetSubBreedImageUseCase.kt index 664da62..d5a8e59 100644 --- a/domain/subbreeds/src/main/java/com/tobioyelekan/dogbreed/domain/subbreeds/GetSubBreedImageUseCase.kt +++ b/feature/subbreeds/domain/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/usecase/GetSubBreedImageUseCase.kt @@ -1,10 +1,9 @@ -package com.tobioyelekan.dogbreed.domain.subbreeds +package com.tobioyelekan.dogbreed.feature.subbreeds.usecase import com.tobioyelekan.dogbreed.core.model.SubBreedImage -import com.tobioyelekan.dogbreed.data.subbreeds.repository.DogSubBreedRepository -import javax.inject.Inject +import com.tobioyelekan.dogbreed.feature.subbreeds.repository.DogSubBreedRepository -class GetSubBreedImageUseCase @Inject constructor( +class GetSubBreedImageUseCase( private val repository: DogSubBreedRepository ) { suspend operator fun invoke( diff --git a/domain/subbreeds/src/test/java/com/tobioyelekan/dogbreed/domain/subbreeds/GetSubBreedImageUseCaseTest.kt b/feature/subbreeds/domain/src/test/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/GetSubBreedImageUseCaseTest.kt similarity index 78% rename from domain/subbreeds/src/test/java/com/tobioyelekan/dogbreed/domain/subbreeds/GetSubBreedImageUseCaseTest.kt rename to feature/subbreeds/domain/src/test/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/GetSubBreedImageUseCaseTest.kt index 42f079f..48706aa 100644 --- a/domain/subbreeds/src/test/java/com/tobioyelekan/dogbreed/domain/subbreeds/GetSubBreedImageUseCaseTest.kt +++ b/feature/subbreeds/domain/src/test/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/GetSubBreedImageUseCaseTest.kt @@ -1,6 +1,7 @@ -package com.tobioyelekan.dogbreed.domain.subbreeds +package com.tobioyelekan.dogbreed.feature.subbreeds -import com.tobioyelekan.dogbreed.data.subbreeds.repository.DogSubBreedRepositoryImpl +import com.tobioyelekan.dogbreed.feature.subbreeds.repository.DogSubBreedRepository +import com.tobioyelekan.dogbreed.feature.subbreeds.usecase.GetSubBreedImageUseCase import com.tobioyelekan.dogbreed.testing.data.TestData.subBreedImages import io.mockk.coEvery import io.mockk.mockk @@ -10,7 +11,7 @@ import org.junit.Test import kotlin.test.assertEquals class GetSubBreedImageUseCaseTest { - private val repository: DogSubBreedRepositoryImpl = mockk() + private val repository: DogSubBreedRepository = mockk() private val subject = GetSubBreedImageUseCase(repository) @Test diff --git a/feature/subbreeds/proguard-rules.pro b/feature/subbreeds/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/feature/subbreeds/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/feature/subbreeds/src/main/AndroidManifest.xml b/feature/subbreeds/src/main/AndroidManifest.xml deleted file mode 100644 index a5918e6..0000000 --- a/feature/subbreeds/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/feature/subbreeds/build.gradle.kts b/feature/subbreeds/ui/build.gradle.kts similarity index 83% rename from feature/subbreeds/build.gradle.kts rename to feature/subbreeds/ui/build.gradle.kts index 08aa6b5..6da1de6 100644 --- a/feature/subbreeds/build.gradle.kts +++ b/feature/subbreeds/ui/build.gradle.kts @@ -40,6 +40,11 @@ android { packaging { resources.excludes.add("META-INF/*") } + testOptions { + unitTests { + isIncludeAndroidResources = true + } + } } dependencies { @@ -49,7 +54,8 @@ dependencies { implementation(libs.kotlin.coroutine) - implementation(projects.domain.subbreeds) + implementation(projects.feature.subbreeds.data) + implementation(projects.feature.subbreeds.domain) implementation(projects.core.designsystem) implementation(projects.core.model) implementation(projects.core.common) @@ -57,9 +63,7 @@ dependencies { testImplementation(projects.core.testing) testImplementation(kotlin("test")) - androidTestImplementation(projects.core.testing) - androidTestImplementation(kotlin("test")) - - androidTestImplementation(libs.compose.ui.test) + implementation(libs.robolectric) + testImplementation(libs.compose.ui.test) debugImplementation(libs.compose.test.manifest) } \ No newline at end of file diff --git a/feature/subbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedUIState.kt b/feature/subbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedUIState.kt similarity index 100% rename from feature/subbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedUIState.kt rename to feature/subbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedUIState.kt diff --git a/feature/subbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedViewModel.kt b/feature/subbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedViewModel.kt similarity index 95% rename from feature/subbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedViewModel.kt rename to feature/subbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedViewModel.kt index 0fe528e..d4b0766 100644 --- a/feature/subbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedViewModel.kt +++ b/feature/subbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedViewModel.kt @@ -3,7 +3,6 @@ package com.tobioyelekan.dogbreed.feature.subbreeds import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.tobioyelekan.dogbreed.domain.subbreeds.GetSubBreedImageUseCase import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -14,6 +13,7 @@ import javax.inject.Inject import com.tobioyelekan.dogbreed.core.common.util.toTitleCase import com.tobioyelekan.dogbreed.feature.subbreeds.navigation.breedNameArgs import com.tobioyelekan.dogbreed.feature.subbreeds.navigation.subBreedNameArgs +import com.tobioyelekan.dogbreed.feature.subbreeds.usecase.GetSubBreedImageUseCase @HiltViewModel class SubBreedViewModel @Inject constructor( diff --git a/feature/subbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedsScreen.kt b/feature/subbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedsScreen.kt similarity index 100% rename from feature/subbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedsScreen.kt rename to feature/subbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedsScreen.kt diff --git a/feature/subbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/di/SubBreedUiModule.kt b/feature/subbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/di/SubBreedUiModule.kt new file mode 100644 index 0000000..5c406fe --- /dev/null +++ b/feature/subbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/di/SubBreedUiModule.kt @@ -0,0 +1,19 @@ +package com.tobioyelekan.dogbreed.feature.subbreeds.di + +import com.tobioyelekan.dogbreed.feature.subbreeds.repository.DogSubBreedRepository +import com.tobioyelekan.dogbreed.feature.subbreeds.usecase.GetSubBreedImageUseCase +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object SubBreedUiModule { + @Provides + @Singleton + fun provideGetSubBreedImageUseCase( + repository: DogSubBreedRepository + ): GetSubBreedImageUseCase = GetSubBreedImageUseCase(repository) +} \ No newline at end of file diff --git a/feature/subbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/subbreeds/navigation/SubBreedNavigation.kt b/feature/subbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/navigation/SubBreedNavigation.kt similarity index 100% rename from feature/subbreeds/src/main/java/com/tobioyelekan/dogbreed/feature/subbreeds/navigation/SubBreedNavigation.kt rename to feature/subbreeds/ui/src/main/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/navigation/SubBreedNavigation.kt diff --git a/feature/subbreeds/src/androidTest/java/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedScreenTest.kt b/feature/subbreeds/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedScreenTest.kt similarity index 94% rename from feature/subbreeds/src/androidTest/java/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedScreenTest.kt rename to feature/subbreeds/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedScreenTest.kt index 9f69ee5..a7874ce 100644 --- a/feature/subbreeds/src/androidTest/java/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedScreenTest.kt +++ b/feature/subbreeds/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedScreenTest.kt @@ -7,10 +7,13 @@ import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.compose.ui.test.onAllNodesWithTag import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.onNodeWithText +import androidx.test.ext.junit.runners.AndroidJUnit4 import com.tobioyelekan.dogbreed.testing.data.TestData.subBreedImages import org.junit.Rule import org.junit.Test +import org.junit.runner.RunWith +@RunWith(AndroidJUnit4::class) class SubBreedScreenTest { @get:Rule val composeTestRule = createAndroidComposeRule() diff --git a/feature/subbreeds/src/test/java/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedViewModelTest.kt b/feature/subbreeds/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedViewModelTest.kt similarity index 97% rename from feature/subbreeds/src/test/java/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedViewModelTest.kt rename to feature/subbreeds/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedViewModelTest.kt index 5875476..fd6df49 100644 --- a/feature/subbreeds/src/test/java/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedViewModelTest.kt +++ b/feature/subbreeds/ui/src/test/kotlin/com/tobioyelekan/dogbreed/feature/subbreeds/SubBreedViewModelTest.kt @@ -3,9 +3,9 @@ package com.tobioyelekan.dogbreed.feature.subbreeds import androidx.lifecycle.SavedStateHandle import app.cash.turbine.test import com.tobioyelekan.dogbreed.core.common.util.toTitleCase -import com.tobioyelekan.dogbreed.domain.subbreeds.GetSubBreedImageUseCase import com.tobioyelekan.dogbreed.feature.subbreeds.navigation.breedNameArgs import com.tobioyelekan.dogbreed.feature.subbreeds.navigation.subBreedNameArgs +import com.tobioyelekan.dogbreed.feature.subbreeds.usecase.GetSubBreedImageUseCase import com.tobioyelekan.dogbreed.testing.data.TestData.subBreedImages import com.tobioyelekan.dogbreed.testing.util.MainDispatcherRule import io.mockk.coEvery diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 68fba45..94ed854 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,6 +31,8 @@ coroutine-test = "1.5.2" androidx-test-core = "1.7.0" androidx-test-runner = "1.7.0" androidx-test = "1.7.0" +jetbrains-kotlin-jvm = "1.9.10" +robolectric = "4.16" [libraries] core = { module = "androidx.core:core-ktx", version.ref = "core" } @@ -93,9 +95,11 @@ turbine = { module = "app.cash.turbine:turbine", version.ref = "turbine" } coroutine-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutine-test" } androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidx-test-runner" } androidx-test-rules = { group = "androidx.test", name = "rules", version.ref = "androidx-test" } +robolectric = { group = "org.robolectric", name = "robolectric", version.ref = "robolectric" } [plugins] android-library = { id = "com.android.library" } kotlin-android = { id = "org.jetbrains.kotlin.android" } dagger-hilt = { id = "com.google.dagger.hilt.android" } kotlin-kapt = { id = "kotlin-kapt" } +jetbrains-kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "jetbrains-kotlin-jvm" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 5c85742..2e59773 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -22,15 +22,15 @@ include(":core:database") include(":core:model") include(":core:common") include(":core:designsystem") -include(":feature:allbreeds") -include(":feature:favorites") -include(":feature:subbreeds") -include(":data:allbreeds") -include(":data:breedDetails") -include(":data:subbreeds") -include(":domain:allbreeds") -include(":domain:breedDetails") -include(":domain:subbreeds") -include(":domain:favorites") -include(":feature:breedDetails") +include(":feature:allbreeds:ui") +include(":feature:allbreeds:data") +include(":feature:allbreeds:domain") +include(":feature:breedDetails:ui") +include(":feature:breedDetails:data") +include(":feature:breedDetails:domain") +include(":feature:favorites:ui") +include(":feature:favorites:domain") +include(":feature:subbreeds:ui") +include(":feature:subbreeds:data") +include(":feature:subbreeds:domain") include(":core:testing")