From ae8978a7ce31e840b7b6f9b358c3e4a82118acb6 Mon Sep 17 00:00:00 2001 From: Gabriel Bronzatti Moro Date: Sat, 2 Mar 2024 19:18:41 -0300 Subject: [PATCH 1/5] Add domain module + upgrade some dependencies --- src/app/build.gradle.kts | 1 + .../com/gabrielbmoro/moviedb/MovieDBApp.kt | 2 + .../moviedb/navigation/MovieDBNavHost.kt | 2 +- .../moviedb/navigation/NavMovieType.kt | 2 +- .../moviedb/navigation/NavigationItem.kt | 2 +- .../moviedb/navigation/ScreenRoutesBuilder.kt | 2 +- src/data/build.gradle.kts | 3 + .../repository/MoviesRepositoryImpl.kt | 9 +- .../moviedb/repository/di/DataModule.kt | 2 +- .../repository/mappers/FavoriteMovieMapper.kt | 2 +- .../moviedb/repository/mappers/MovieMapper.kt | 2 +- .../repository/mappers/VideoDetailsMapper.kt | 2 +- .../repository/mappers/VideoStreamMapper.kt | 2 +- .../moviedb/repository/model/Page.kt | 28 ------ src/domain/.gitignore | 1 + src/domain/build.gradle.kts | 21 +++++ src/domain/consumer-rules.pro | 0 src/domain/proguard-rules.pro | 21 +++++ src/domain/src/main/AndroidManifest.xml | 4 + .../moviedb/domain}/MoviesRepository.kt | 10 +-- .../moviedb/domain/di/DomainModule.kt | 86 +++++++++++++++++++ .../domain/entities}/DataOrException.kt | 4 +- .../moviedb/domain/entities}/Movie.kt | 4 +- .../moviedb/domain/entities}/MovieDetail.kt | 4 +- .../moviedb/domain/entities/MovieListType.kt} | 4 +- .../moviedb/domain/entities}/VideoStream.kt | 4 +- .../domain/usecases/FavoriteMovieUseCase.kt | 8 +- .../usecases/GetFavoriteMoviesUseCase.kt | 6 +- .../domain/usecases/GetMovieDetailsUseCase.kt | 6 +- .../usecases/GetNowPlayingMoviesUseCase.kt | 6 +- .../usecases/GetPopularMoviesUseCase.kt | 6 +- .../usecases/GetTopRatedMoviesUseCase.kt | 6 +- .../domain/usecases/GetTrailersUseCase.kt | 6 +- .../usecases/GetUpcomingMoviesUseCase.kt | 6 +- .../domain/usecases/IsFavoriteMovieUseCase.kt | 6 +- .../domain/usecases/SearchMoviesUseCase.kt} | 6 +- .../usecases/FavoriteMovieUseCaseImplTest.kt | 10 +-- .../GetFavoriteMoviesUseCaseImplTest.kt | 6 +- .../GetPopularMoviesUseCaseImplTest.kt | 4 +- .../GetTopRatedMoviesUseCaseImplTest.kt | 4 +- .../usecases/GetTrailersUseCaseImplTest.kt | 6 +- .../IsFavoriteMovieUseCaseImplTest.kt | 6 +- src/feature_details/build.gradle.kts | 2 +- .../moviedb/details/di/DetailsModule.kt | 25 ------ .../screens/details/DetailsScreenViewModel.kt | 8 +- src/feature_movies/build.gradle.kts | 2 +- .../moviedb/movies/di/MoviesModule.kt | 25 ------ .../movies/ui/screens/movies/MoviesScreen.kt | 2 +- .../ui/screens/movies/MoviesViewModel.kt | 10 +-- .../movies/ui/widgets/MoviesCarousel.kt | 2 +- src/feature_search/build.gradle.kts | 2 +- .../moviedb/search/di/SearchMovieModule.kt | 7 -- .../moviedb/search/ui/screens/search/Model.kt | 2 +- .../search/ui/screens/search/SearchScreen.kt | 2 +- .../ui/screens/search/SearchViewModel.kt | 5 +- .../moviedb/search/ui/widgets/MoviesResult.kt | 2 +- src/feature_wishlist/build.gradle.kts | 2 +- .../moviedb/wishlist/di/WishlistModule.kt | 15 +--- .../domain/usecases/DeleteMovieUseCase.kt | 15 ---- .../wishlist/ui/screens/wishlist/Model.kt | 2 +- .../ui/screens/wishlist/WishlistScreen.kt | 2 +- .../ui/screens/wishlist/WishlistViewModel.kt | 10 +-- .../moviedb/wishlist/ui/widgets/MovieList.kt | 2 +- .../screens/wishlist/WishlistViewModelTest.kt | 6 +- src/gradle/libs.versions.toml | 19 ++-- src/gradle/wrapper/gradle-wrapper.properties | 4 +- src/settings.gradle.kts | 2 + 67 files changed, 259 insertions(+), 238 deletions(-) delete mode 100644 src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/Page.kt create mode 100644 src/domain/.gitignore create mode 100644 src/domain/build.gradle.kts create mode 100644 src/domain/consumer-rules.pro create mode 100644 src/domain/proguard-rules.pro create mode 100644 src/domain/src/main/AndroidManifest.xml rename src/{data/src/main/java/com/gabrielbmoro/moviedb/repository => domain/src/main/java/com/gabrielbmoro/moviedb/domain}/MoviesRepository.kt (74%) create mode 100644 src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/di/DomainModule.kt rename src/{data/src/main/java/com/gabrielbmoro/moviedb/repository/model => domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities}/DataOrException.kt (66%) rename src/{data/src/main/java/com/gabrielbmoro/moviedb/repository/model => domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities}/Movie.kt (97%) rename src/{data/src/main/java/com/gabrielbmoro/moviedb/repository/model => domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities}/MovieDetail.kt (84%) rename src/{data/src/main/java/com/gabrielbmoro/moviedb/repository/model/MoviesListType.kt => domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/MovieListType.kt} (77%) rename src/{data/src/main/java/com/gabrielbmoro/moviedb/repository/model => domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities}/VideoStream.kt (95%) rename src/{feature_details/src/main/java/com/gabrielbmoro/moviedb/details => domain/src/main/java/com/gabrielbmoro/moviedb}/domain/usecases/FavoriteMovieUseCase.kt (82%) rename src/{feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist => domain/src/main/java/com/gabrielbmoro/moviedb}/domain/usecases/GetFavoriteMoviesUseCase.kt (65%) rename src/{feature_details/src/main/java/com/gabrielbmoro/moviedb/details => domain/src/main/java/com/gabrielbmoro/moviedb}/domain/usecases/GetMovieDetailsUseCase.kt (78%) rename src/{feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies => domain/src/main/java/com/gabrielbmoro/moviedb}/domain/usecases/GetNowPlayingMoviesUseCase.kt (67%) rename src/{feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies => domain/src/main/java/com/gabrielbmoro/moviedb}/domain/usecases/GetPopularMoviesUseCase.kt (67%) rename src/{feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies => domain/src/main/java/com/gabrielbmoro/moviedb}/domain/usecases/GetTopRatedMoviesUseCase.kt (66%) rename src/{feature_details/src/main/java/com/gabrielbmoro/moviedb/details => domain/src/main/java/com/gabrielbmoro/moviedb}/domain/usecases/GetTrailersUseCase.kt (80%) rename src/{feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies => domain/src/main/java/com/gabrielbmoro/moviedb}/domain/usecases/GetUpcomingMoviesUseCase.kt (66%) rename src/{feature_details/src/main/java/com/gabrielbmoro/moviedb/details => domain/src/main/java/com/gabrielbmoro/moviedb}/domain/usecases/IsFavoriteMovieUseCase.kt (69%) rename src/{feature_search/src/main/java/com/gabrielbmoro/moviedb/search/domain/SearchMovieUseCase.kt => domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/SearchMoviesUseCase.kt} (69%) rename src/{feature_details/src/test/java/com/gabrielbmoro/moviedb/details => domain/src/test/java/com/gabrielbmoro/moviedb}/domain/usecases/FavoriteMovieUseCaseImplTest.kt (86%) rename src/{feature_wishlist/src/test/java/com/gabrielbmoro/moviedb/wishlist => domain/src/test/java/com/gabrielbmoro/moviedb}/domain/usecases/GetFavoriteMoviesUseCaseImplTest.kt (86%) rename src/{feature_movies/src/test/java/com/gabrielbmoro/moviedb/movies => domain/src/test/java/com/gabrielbmoro/moviedb}/domain/usecases/GetPopularMoviesUseCaseImplTest.kt (88%) rename src/{feature_movies/src/test/java/com/gabrielbmoro/moviedb/movies => domain/src/test/java/com/gabrielbmoro/moviedb}/domain/usecases/GetTopRatedMoviesUseCaseImplTest.kt (88%) rename src/{feature_details/src/test/java/com/gabrielbmoro/moviedb/details => domain/src/test/java/com/gabrielbmoro/moviedb}/domain/usecases/GetTrailersUseCaseImplTest.kt (95%) rename src/{feature_details/src/test/java/com/gabrielbmoro/moviedb/details => domain/src/test/java/com/gabrielbmoro/moviedb}/domain/usecases/IsFavoriteMovieUseCaseImplTest.kt (85%) delete mode 100644 src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/domain/usecases/DeleteMovieUseCase.kt diff --git a/src/app/build.gradle.kts b/src/app/build.gradle.kts index d3174f08..211b0b4c 100644 --- a/src/app/build.gradle.kts +++ b/src/app/build.gradle.kts @@ -17,6 +17,7 @@ dependencies { implementation(projects.data) implementation(projects.core) + implementation(projects.domain) implementation(projects.featureWishlist) implementation(projects.featureMovies) implementation(projects.featureDetails) diff --git a/src/app/src/main/java/com/gabrielbmoro/moviedb/MovieDBApp.kt b/src/app/src/main/java/com/gabrielbmoro/moviedb/MovieDBApp.kt index c981d9c0..305685dc 100644 --- a/src/app/src/main/java/com/gabrielbmoro/moviedb/MovieDBApp.kt +++ b/src/app/src/main/java/com/gabrielbmoro/moviedb/MovieDBApp.kt @@ -4,6 +4,7 @@ import android.app.Application import com.gabrielbmoro.moviedb.core.di.coreModule import com.gabrielbmoro.moviedb.details.di.featureDetailsModule import com.gabrielbmoro.moviedb.di.appModule +import com.gabrielbmoro.moviedb.domain.di.domainModule import com.gabrielbmoro.moviedb.movies.di.featureMoviesModule import com.gabrielbmoro.moviedb.repository.di.dataModule import com.gabrielbmoro.moviedb.search.di.featureSearchMovieModule @@ -33,6 +34,7 @@ class MovieDBApp : Application() { modules( appModule, coreModule, + domainModule, dataModule, featureDetailsModule, featureMoviesModule, diff --git a/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/MovieDBNavHost.kt b/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/MovieDBNavHost.kt index a4ee79a5..63f497d6 100644 --- a/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/MovieDBNavHost.kt +++ b/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/MovieDBNavHost.kt @@ -9,7 +9,7 @@ import com.gabrielbmoro.moviedb.core.ui.parcelableOf import com.gabrielbmoro.moviedb.details.ui.screens.details.DetailsScreen import com.gabrielbmoro.moviedb.details.ui.screens.details.DetailsScreenViewModel import com.gabrielbmoro.moviedb.movies.ui.screens.movies.MovieScreen -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.entities.Movie import com.gabrielbmoro.moviedb.search.ui.screens.search.SearchScreen import com.gabrielbmoro.moviedb.wishlist.ui.screens.wishlist.WishlistScreen import org.koin.androidx.compose.koinViewModel diff --git a/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/NavMovieType.kt b/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/NavMovieType.kt index c6cf4b03..c05d4213 100644 --- a/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/NavMovieType.kt +++ b/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/NavMovieType.kt @@ -3,7 +3,7 @@ package com.gabrielbmoro.moviedb.navigation import android.os.Bundle import androidx.navigation.NavType import com.gabrielbmoro.moviedb.core.ui.parcelableOf -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.entities.Movie import com.google.gson.Gson class NavMovieType : NavType(false) { diff --git a/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/NavigationItem.kt b/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/NavigationItem.kt index 700785b6..52fff5be 100644 --- a/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/NavigationItem.kt +++ b/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/NavigationItem.kt @@ -3,7 +3,7 @@ package com.gabrielbmoro.moviedb.navigation import androidx.annotation.DrawableRes import androidx.annotation.StringRes import com.gabrielbmoro.moviedb.R -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.entities.Movie sealed class NavigationItem( open val route: String diff --git a/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/ScreenRoutesBuilder.kt b/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/ScreenRoutesBuilder.kt index c0e6c2b6..18e6e2b8 100644 --- a/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/ScreenRoutesBuilder.kt +++ b/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/ScreenRoutesBuilder.kt @@ -1,7 +1,7 @@ package com.gabrielbmoro.moviedb.navigation import android.net.Uri -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.entities.Movie import com.google.gson.Gson object ScreenRoutesBuilder { diff --git a/src/data/build.gradle.kts b/src/data/build.gradle.kts index 122aedce..56e97673 100644 --- a/src/data/build.gradle.kts +++ b/src/data/build.gradle.kts @@ -10,6 +10,9 @@ android { } dependencies { + + implementation(projects.domain) + implementation(libs.preferences.ktx) implementation(libs.timber) implementation(libs.bundles.retrofit) diff --git a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/MoviesRepositoryImpl.kt b/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/MoviesRepositoryImpl.kt index eda2b52a..ce38a435 100644 --- a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/MoviesRepositoryImpl.kt +++ b/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/MoviesRepositoryImpl.kt @@ -3,7 +3,11 @@ package com.gabrielbmoro.moviedb.repository import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.PagingData -import com.gabrielbmoro.moviedb.domain.model.DataOrException +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.DataOrException +import com.gabrielbmoro.moviedb.domain.entities.Movie +import com.gabrielbmoro.moviedb.domain.entities.MovieDetail +import com.gabrielbmoro.moviedb.domain.entities.VideoStream import com.gabrielbmoro.moviedb.repository.datasources.paging.MoviesDataSource import com.gabrielbmoro.moviedb.repository.datasources.retrofit.ApiRepository import com.gabrielbmoro.moviedb.repository.datasources.room.FavoriteMoviesDAO @@ -12,9 +16,6 @@ import com.gabrielbmoro.moviedb.repository.mappers.MovieMapper import com.gabrielbmoro.moviedb.repository.mappers.PageMapper import com.gabrielbmoro.moviedb.repository.mappers.VideoDetailsMapper import com.gabrielbmoro.moviedb.repository.mappers.VideoStreamMapper -import com.gabrielbmoro.moviedb.repository.model.Movie -import com.gabrielbmoro.moviedb.repository.model.MovieDetail -import com.gabrielbmoro.moviedb.repository.model.VideoStream import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.map diff --git a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/di/DataModule.kt b/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/di/DataModule.kt index 9a9e907b..6bc1f555 100644 --- a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/di/DataModule.kt +++ b/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/di/DataModule.kt @@ -1,7 +1,7 @@ package com.gabrielbmoro.moviedb.repository.di import androidx.room.Room -import com.gabrielbmoro.moviedb.repository.MoviesRepository +import com.gabrielbmoro.moviedb.domain.MoviesRepository import com.gabrielbmoro.moviedb.repository.MoviesRepositoryImpl import com.gabrielbmoro.moviedb.repository.datasources.retrofit.ApiRepository import com.gabrielbmoro.moviedb.repository.datasources.retrofit.interceptors.AuthenticationInterceptor diff --git a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/FavoriteMovieMapper.kt b/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/FavoriteMovieMapper.kt index fc7f1e72..1cba8d3f 100644 --- a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/FavoriteMovieMapper.kt +++ b/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/FavoriteMovieMapper.kt @@ -1,7 +1,7 @@ package com.gabrielbmoro.moviedb.repository.mappers +import com.gabrielbmoro.moviedb.domain.entities.Movie import com.gabrielbmoro.moviedb.repository.datasources.room.dto.FavoriteMovieDTO -import com.gabrielbmoro.moviedb.repository.model.Movie class FavoriteMovieMapper { diff --git a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/MovieMapper.kt b/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/MovieMapper.kt index 29e63c48..b66b1bf0 100644 --- a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/MovieMapper.kt +++ b/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/MovieMapper.kt @@ -1,8 +1,8 @@ package com.gabrielbmoro.moviedb.repository.mappers +import com.gabrielbmoro.moviedb.domain.entities.Movie import com.gabrielbmoro.moviedb.repository.datasources.retrofit.responses.MovieResponse import com.gabrielbmoro.moviedb.repository.datasources.room.dto.FavoriteMovieDTO -import com.gabrielbmoro.moviedb.repository.model.Movie class MovieMapper { diff --git a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/VideoDetailsMapper.kt b/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/VideoDetailsMapper.kt index 29d28b74..c7a9a483 100644 --- a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/VideoDetailsMapper.kt +++ b/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/VideoDetailsMapper.kt @@ -1,7 +1,7 @@ package com.gabrielbmoro.moviedb.repository.mappers +import com.gabrielbmoro.moviedb.domain.entities.MovieDetail import com.gabrielbmoro.moviedb.repository.datasources.retrofit.responses.MovieDetailResponse -import com.gabrielbmoro.moviedb.repository.model.MovieDetail class VideoDetailsMapper { diff --git a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/VideoStreamMapper.kt b/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/VideoStreamMapper.kt index d3e701ca..6ffe3f02 100644 --- a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/VideoStreamMapper.kt +++ b/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/mappers/VideoStreamMapper.kt @@ -1,7 +1,7 @@ package com.gabrielbmoro.moviedb.repository.mappers +import com.gabrielbmoro.moviedb.domain.entities.VideoStream import com.gabrielbmoro.moviedb.repository.datasources.retrofit.responses.VideoStreamsResponse -import com.gabrielbmoro.moviedb.repository.model.VideoStream class VideoStreamMapper { diff --git a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/Page.kt b/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/Page.kt deleted file mode 100644 index 21fb7580..00000000 --- a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/Page.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.gabrielbmoro.moviedb.repository.model - -data class Page( - val movies: List, - val pageNumber: Int, - val totalPages: Int -) { - companion object { - fun mockPageWithWhiteDragonMovieOnly() = Page( - listOf( - Movie( - id = 12L, - 2f, - "Dragão branco", - "https://dragaobranco.png", - "https://dragaobranco.png", - "Movie where Vandame shows how a good Karate fighter fights", - "2002-02-21", - language = "pt-br", - popularity = 2f, - isFavorite = false - ) - ), - 1, - 1 - ) - } -} diff --git a/src/domain/.gitignore b/src/domain/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/src/domain/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/src/domain/build.gradle.kts b/src/domain/build.gradle.kts new file mode 100644 index 00000000..ea55aa10 --- /dev/null +++ b/src/domain/build.gradle.kts @@ -0,0 +1,21 @@ +@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed +plugins { + id("android-library-plugin") + alias(libs.plugins.ksp) + alias(libs.plugins.kover) +} + +android { + namespace = "com.gabrielbmoro.moviedb.domain" +} + +dependencies { + implementation(libs.paging.compose) + + // Test + testImplementation(libs.bundles.test) + + // Koin + implementation(platform(libs.koin.bom)) + implementation(libs.bundles.koin.impl) +} \ No newline at end of file diff --git a/src/domain/consumer-rules.pro b/src/domain/consumer-rules.pro new file mode 100644 index 00000000..e69de29b diff --git a/src/domain/proguard-rules.pro b/src/domain/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/src/domain/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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/src/domain/src/main/AndroidManifest.xml b/src/domain/src/main/AndroidManifest.xml new file mode 100644 index 00000000..a5918e68 --- /dev/null +++ b/src/domain/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/MoviesRepository.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/MoviesRepository.kt similarity index 74% rename from src/data/src/main/java/com/gabrielbmoro/moviedb/repository/MoviesRepository.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/MoviesRepository.kt index bc49660b..3b496578 100644 --- a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/MoviesRepository.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/MoviesRepository.kt @@ -1,10 +1,10 @@ -package com.gabrielbmoro.moviedb.repository +package com.gabrielbmoro.moviedb.domain import androidx.paging.PagingData -import com.gabrielbmoro.moviedb.domain.model.DataOrException -import com.gabrielbmoro.moviedb.repository.model.Movie -import com.gabrielbmoro.moviedb.repository.model.MovieDetail -import com.gabrielbmoro.moviedb.repository.model.VideoStream +import com.gabrielbmoro.moviedb.domain.entities.DataOrException +import com.gabrielbmoro.moviedb.domain.entities.Movie +import com.gabrielbmoro.moviedb.domain.entities.MovieDetail +import com.gabrielbmoro.moviedb.domain.entities.VideoStream import kotlinx.coroutines.flow.Flow interface MoviesRepository { diff --git a/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/di/DomainModule.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/di/DomainModule.kt new file mode 100644 index 00000000..01203247 --- /dev/null +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/di/DomainModule.kt @@ -0,0 +1,86 @@ +package com.gabrielbmoro.moviedb.domain.di + +import com.gabrielbmoro.moviedb.domain.usecases.FavoriteMovieUseCase +import com.gabrielbmoro.moviedb.domain.usecases.FavoriteMovieUseCaseImpl +import com.gabrielbmoro.moviedb.domain.usecases.GetFavoriteMoviesUseCase +import com.gabrielbmoro.moviedb.domain.usecases.GetFavoriteMoviesUseCaseImpl +import com.gabrielbmoro.moviedb.domain.usecases.GetMovieDetailsUseCase +import com.gabrielbmoro.moviedb.domain.usecases.GetMovieDetailsUseCaseImpl +import com.gabrielbmoro.moviedb.domain.usecases.GetNowPlayingMoviesUseCase +import com.gabrielbmoro.moviedb.domain.usecases.GetNowPlayingMoviesUseCaseImpl +import com.gabrielbmoro.moviedb.domain.usecases.GetPopularMoviesUseCase +import com.gabrielbmoro.moviedb.domain.usecases.GetPopularMoviesUseCaseImpl +import com.gabrielbmoro.moviedb.domain.usecases.GetTopRatedMoviesUseCase +import com.gabrielbmoro.moviedb.domain.usecases.GetTopRatedMoviesUseCaseImpl +import com.gabrielbmoro.moviedb.domain.usecases.GetTrailersUseCase +import com.gabrielbmoro.moviedb.domain.usecases.GetTrailersUseCaseImpl +import com.gabrielbmoro.moviedb.domain.usecases.GetUpcomingMoviesUseCase +import com.gabrielbmoro.moviedb.domain.usecases.GetUpcomingMoviesUseCaseImpl +import com.gabrielbmoro.moviedb.domain.usecases.IsFavoriteMovieUseCase +import com.gabrielbmoro.moviedb.domain.usecases.IsFavoriteMovieUseCaseImpl +import com.gabrielbmoro.moviedb.domain.usecases.SearchMovieUseCase +import com.gabrielbmoro.moviedb.domain.usecases.SearchMovieUseCaseImpl +import org.koin.dsl.module + +val domainModule = module { + factory { + FavoriteMovieUseCaseImpl( + repository = get() + ) + } + + factory { + GetFavoriteMoviesUseCaseImpl( + repository = get() + ) + } + + factory { + GetMovieDetailsUseCaseImpl( + repository = get(), + getTrailersUseCase = get() + ) + } + + factory { + GetNowPlayingMoviesUseCaseImpl( + repository = get() + ) + } + + factory { + GetPopularMoviesUseCaseImpl( + repository = get() + ) + } + + factory { + GetTopRatedMoviesUseCaseImpl( + repository = get() + ) + } + + factory { + GetTrailersUseCaseImpl( + repository = get() + ) + } + + factory { + GetUpcomingMoviesUseCaseImpl( + repository = get() + ) + } + + factory { + IsFavoriteMovieUseCaseImpl( + repository = get() + ) + } + + factory { + SearchMovieUseCaseImpl( + repository = get() + ) + } +} \ No newline at end of file diff --git a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/DataOrException.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/DataOrException.kt similarity index 66% rename from src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/DataOrException.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/DataOrException.kt index b8da1a28..5b99738e 100644 --- a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/DataOrException.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/DataOrException.kt @@ -1,6 +1,6 @@ -package com.gabrielbmoro.moviedb.domain.model +package com.gabrielbmoro.moviedb.domain.entities data class DataOrException( val data: T? = null, val exception: E? = null -) +) \ No newline at end of file diff --git a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/Movie.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/Movie.kt similarity index 97% rename from src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/Movie.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/Movie.kt index eb87a573..3b729cc6 100644 --- a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/Movie.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/Movie.kt @@ -1,4 +1,4 @@ -package com.gabrielbmoro.moviedb.repository.model +package com.gabrielbmoro.moviedb.domain.entities import android.os.Parcelable import kotlinx.parcelize.Parcelize @@ -57,4 +57,4 @@ data class Movie( popularity = 1f ) } -} +} \ No newline at end of file diff --git a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/MovieDetail.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/MovieDetail.kt similarity index 84% rename from src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/MovieDetail.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/MovieDetail.kt index 84b73da3..3c27af2a 100644 --- a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/MovieDetail.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/MovieDetail.kt @@ -1,4 +1,4 @@ -package com.gabrielbmoro.moviedb.repository.model +package com.gabrielbmoro.moviedb.domain.entities import android.os.Parcelable import kotlinx.parcelize.Parcelize @@ -14,4 +14,4 @@ data class MovieDetail( val tagline: String, val productionCompanies: List, var videoId: String? = null -) : Parcelable +) : Parcelable \ No newline at end of file diff --git a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/MoviesListType.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/MovieListType.kt similarity index 77% rename from src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/MoviesListType.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/MovieListType.kt index 463776c2..6e6f5808 100644 --- a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/MoviesListType.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/MovieListType.kt @@ -1,4 +1,4 @@ -package com.gabrielbmoro.moviedb.repository.model +package com.gabrielbmoro.moviedb.domain.entities enum class MovieListType(val value: Int) { TOP_RATED(TOP_RATED_MOVIES_VALUE), @@ -13,5 +13,5 @@ const val POPULAR_MOVIES_VALUE = 3 const val UPCOMING_MOVIES_VALUE = 4 fun Int.convertToMovieListType(): MovieListType? { - return MovieListType.values().firstOrNull { it.value == this } + return MovieListType.entries.firstOrNull { it.value == this } } diff --git a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/VideoStream.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/VideoStream.kt similarity index 95% rename from src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/VideoStream.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/VideoStream.kt index 787f3261..4e29dae4 100644 --- a/src/data/src/main/java/com/gabrielbmoro/moviedb/repository/model/VideoStream.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/entities/VideoStream.kt @@ -1,4 +1,4 @@ -package com.gabrielbmoro.moviedb.repository.model +package com.gabrielbmoro.moviedb.domain.entities import android.os.Parcelable import kotlinx.parcelize.Parcelize @@ -45,4 +45,4 @@ data class VideoStream( size = 1024 ) } -} +} \ No newline at end of file diff --git a/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/domain/usecases/FavoriteMovieUseCase.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/FavoriteMovieUseCase.kt similarity index 82% rename from src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/domain/usecases/FavoriteMovieUseCase.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/FavoriteMovieUseCase.kt index 25577e1f..65c2b15a 100644 --- a/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/domain/usecases/FavoriteMovieUseCase.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/FavoriteMovieUseCase.kt @@ -1,8 +1,8 @@ -package com.gabrielbmoro.moviedb.details.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases -import com.gabrielbmoro.moviedb.domain.model.DataOrException -import com.gabrielbmoro.moviedb.repository.MoviesRepository -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.DataOrException +import com.gabrielbmoro.moviedb.domain.entities.Movie import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext diff --git a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/domain/usecases/GetFavoriteMoviesUseCase.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetFavoriteMoviesUseCase.kt similarity index 65% rename from src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/domain/usecases/GetFavoriteMoviesUseCase.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetFavoriteMoviesUseCase.kt index 80784ca5..1a6cc11f 100644 --- a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/domain/usecases/GetFavoriteMoviesUseCase.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetFavoriteMoviesUseCase.kt @@ -1,7 +1,7 @@ -package com.gabrielbmoro.moviedb.wishlist.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases -import com.gabrielbmoro.moviedb.repository.MoviesRepository -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.Movie import kotlinx.coroutines.flow.Flow interface GetFavoriteMoviesUseCase { diff --git a/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/domain/usecases/GetMovieDetailsUseCase.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetMovieDetailsUseCase.kt similarity index 78% rename from src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/domain/usecases/GetMovieDetailsUseCase.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetMovieDetailsUseCase.kt index fb717efe..9adcf498 100644 --- a/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/domain/usecases/GetMovieDetailsUseCase.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetMovieDetailsUseCase.kt @@ -1,7 +1,7 @@ -package com.gabrielbmoro.moviedb.details.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases -import com.gabrielbmoro.moviedb.repository.MoviesRepository -import com.gabrielbmoro.moviedb.repository.model.MovieDetail +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.MovieDetail import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.zip diff --git a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetNowPlayingMoviesUseCase.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetNowPlayingMoviesUseCase.kt similarity index 67% rename from src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetNowPlayingMoviesUseCase.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetNowPlayingMoviesUseCase.kt index 3c471d9d..e6eec28f 100644 --- a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetNowPlayingMoviesUseCase.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetNowPlayingMoviesUseCase.kt @@ -1,8 +1,8 @@ -package com.gabrielbmoro.moviedb.movies.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases import androidx.paging.PagingData -import com.gabrielbmoro.moviedb.repository.MoviesRepository -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.Movie import kotlinx.coroutines.flow.Flow interface GetNowPlayingMoviesUseCase { diff --git a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetPopularMoviesUseCase.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetPopularMoviesUseCase.kt similarity index 67% rename from src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetPopularMoviesUseCase.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetPopularMoviesUseCase.kt index 9149df0d..a58920af 100644 --- a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetPopularMoviesUseCase.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetPopularMoviesUseCase.kt @@ -1,8 +1,8 @@ -package com.gabrielbmoro.moviedb.movies.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases import androidx.paging.PagingData -import com.gabrielbmoro.moviedb.repository.MoviesRepository -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.Movie import kotlinx.coroutines.flow.Flow interface GetPopularMoviesUseCase { diff --git a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetTopRatedMoviesUseCase.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetTopRatedMoviesUseCase.kt similarity index 66% rename from src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetTopRatedMoviesUseCase.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetTopRatedMoviesUseCase.kt index 91326b6a..a6fc362b 100644 --- a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetTopRatedMoviesUseCase.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetTopRatedMoviesUseCase.kt @@ -1,8 +1,8 @@ -package com.gabrielbmoro.moviedb.movies.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases import androidx.paging.PagingData -import com.gabrielbmoro.moviedb.repository.MoviesRepository -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.Movie import kotlinx.coroutines.flow.Flow interface GetTopRatedMoviesUseCase { diff --git a/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/domain/usecases/GetTrailersUseCase.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetTrailersUseCase.kt similarity index 80% rename from src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/domain/usecases/GetTrailersUseCase.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetTrailersUseCase.kt index 5f083e48..af9ef5ae 100644 --- a/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/domain/usecases/GetTrailersUseCase.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetTrailersUseCase.kt @@ -1,7 +1,7 @@ -package com.gabrielbmoro.moviedb.details.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases -import com.gabrielbmoro.moviedb.repository.MoviesRepository -import com.gabrielbmoro.moviedb.repository.model.VideoStream +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.VideoStream import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.transform diff --git a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetUpcomingMoviesUseCase.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetUpcomingMoviesUseCase.kt similarity index 66% rename from src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetUpcomingMoviesUseCase.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetUpcomingMoviesUseCase.kt index 93b28d2b..4f61b49d 100644 --- a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetUpcomingMoviesUseCase.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/GetUpcomingMoviesUseCase.kt @@ -1,8 +1,8 @@ -package com.gabrielbmoro.moviedb.movies.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases import androidx.paging.PagingData -import com.gabrielbmoro.moviedb.repository.MoviesRepository -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.Movie import kotlinx.coroutines.flow.Flow interface GetUpcomingMoviesUseCase { diff --git a/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/domain/usecases/IsFavoriteMovieUseCase.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/IsFavoriteMovieUseCase.kt similarity index 69% rename from src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/domain/usecases/IsFavoriteMovieUseCase.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/IsFavoriteMovieUseCase.kt index cca047f3..34ade2f6 100644 --- a/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/domain/usecases/IsFavoriteMovieUseCase.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/IsFavoriteMovieUseCase.kt @@ -1,7 +1,7 @@ -package com.gabrielbmoro.moviedb.details.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases -import com.gabrielbmoro.moviedb.domain.model.DataOrException -import com.gabrielbmoro.moviedb.repository.MoviesRepository +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.DataOrException interface IsFavoriteMovieUseCase { suspend operator fun invoke(movieTitle: String): DataOrException diff --git a/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/domain/SearchMovieUseCase.kt b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/SearchMoviesUseCase.kt similarity index 69% rename from src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/domain/SearchMovieUseCase.kt rename to src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/SearchMoviesUseCase.kt index ddb9740f..caf1d773 100644 --- a/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/domain/SearchMovieUseCase.kt +++ b/src/domain/src/main/java/com/gabrielbmoro/moviedb/domain/usecases/SearchMoviesUseCase.kt @@ -1,7 +1,7 @@ -package com.gabrielbmoro.moviedb.search.domain +package com.gabrielbmoro.moviedb.domain.usecases -import com.gabrielbmoro.moviedb.repository.MoviesRepository -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.Movie import kotlinx.coroutines.flow.first interface SearchMovieUseCase { diff --git a/src/feature_details/src/test/java/com/gabrielbmoro/moviedb/details/domain/usecases/FavoriteMovieUseCaseImplTest.kt b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/FavoriteMovieUseCaseImplTest.kt similarity index 86% rename from src/feature_details/src/test/java/com/gabrielbmoro/moviedb/details/domain/usecases/FavoriteMovieUseCaseImplTest.kt rename to src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/FavoriteMovieUseCaseImplTest.kt index 344585cd..684e7d8c 100644 --- a/src/feature_details/src/test/java/com/gabrielbmoro/moviedb/details/domain/usecases/FavoriteMovieUseCaseImplTest.kt +++ b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/FavoriteMovieUseCaseImplTest.kt @@ -1,18 +1,16 @@ -package com.gabrielbmoro.moviedb.details.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases -import com.gabrielbmoro.moviedb.domain.model.DataOrException -import com.gabrielbmoro.moviedb.repository.MoviesRepository -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.DataOrException +import com.gabrielbmoro.moviedb.domain.entities.Movie import com.google.common.truth.Truth.assertThat import io.mockk.coEvery import io.mockk.coVerify import io.mockk.mockk -import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test -@OptIn(ExperimentalCoroutinesApi::class) class FavoriteMovieUseCaseImplTest { private lateinit var repository: MoviesRepository diff --git a/src/feature_wishlist/src/test/java/com/gabrielbmoro/moviedb/wishlist/domain/usecases/GetFavoriteMoviesUseCaseImplTest.kt b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/GetFavoriteMoviesUseCaseImplTest.kt similarity index 86% rename from src/feature_wishlist/src/test/java/com/gabrielbmoro/moviedb/wishlist/domain/usecases/GetFavoriteMoviesUseCaseImplTest.kt rename to src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/GetFavoriteMoviesUseCaseImplTest.kt index 7ae2ac8a..26a2c065 100644 --- a/src/feature_wishlist/src/test/java/com/gabrielbmoro/moviedb/wishlist/domain/usecases/GetFavoriteMoviesUseCaseImplTest.kt +++ b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/GetFavoriteMoviesUseCaseImplTest.kt @@ -1,7 +1,7 @@ -package com.gabrielbmoro.moviedb.wishlist.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases -import com.gabrielbmoro.moviedb.repository.MoviesRepository -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.Movie import io.mockk.every import io.mockk.mockk import io.mockk.verify diff --git a/src/feature_movies/src/test/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetPopularMoviesUseCaseImplTest.kt b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/GetPopularMoviesUseCaseImplTest.kt similarity index 88% rename from src/feature_movies/src/test/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetPopularMoviesUseCaseImplTest.kt rename to src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/GetPopularMoviesUseCaseImplTest.kt index 4ba8c88c..bc195c15 100644 --- a/src/feature_movies/src/test/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetPopularMoviesUseCaseImplTest.kt +++ b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/GetPopularMoviesUseCaseImplTest.kt @@ -1,6 +1,6 @@ -package com.gabrielbmoro.moviedb.movies.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases -import com.gabrielbmoro.moviedb.repository.MoviesRepository +import com.gabrielbmoro.moviedb.domain.MoviesRepository import io.mockk.every import io.mockk.mockk import io.mockk.verify diff --git a/src/feature_movies/src/test/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetTopRatedMoviesUseCaseImplTest.kt b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/GetTopRatedMoviesUseCaseImplTest.kt similarity index 88% rename from src/feature_movies/src/test/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetTopRatedMoviesUseCaseImplTest.kt rename to src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/GetTopRatedMoviesUseCaseImplTest.kt index a5d80c9a..4c03a9b0 100644 --- a/src/feature_movies/src/test/java/com/gabrielbmoro/moviedb/movies/domain/usecases/GetTopRatedMoviesUseCaseImplTest.kt +++ b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/GetTopRatedMoviesUseCaseImplTest.kt @@ -1,6 +1,6 @@ -package com.gabrielbmoro.moviedb.movies.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases -import com.gabrielbmoro.moviedb.repository.MoviesRepository +import com.gabrielbmoro.moviedb.domain.MoviesRepository import io.mockk.every import io.mockk.mockk import io.mockk.verify diff --git a/src/feature_details/src/test/java/com/gabrielbmoro/moviedb/details/domain/usecases/GetTrailersUseCaseImplTest.kt b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/GetTrailersUseCaseImplTest.kt similarity index 95% rename from src/feature_details/src/test/java/com/gabrielbmoro/moviedb/details/domain/usecases/GetTrailersUseCaseImplTest.kt rename to src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/GetTrailersUseCaseImplTest.kt index 0484bd1c..271c14a2 100644 --- a/src/feature_details/src/test/java/com/gabrielbmoro/moviedb/details/domain/usecases/GetTrailersUseCaseImplTest.kt +++ b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/GetTrailersUseCaseImplTest.kt @@ -1,7 +1,7 @@ -package com.gabrielbmoro.moviedb.details.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases -import com.gabrielbmoro.moviedb.repository.MoviesRepository -import com.gabrielbmoro.moviedb.repository.model.VideoStream +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.VideoStream import com.google.common.truth.Truth import io.mockk.coVerify import io.mockk.every diff --git a/src/feature_details/src/test/java/com/gabrielbmoro/moviedb/details/domain/usecases/IsFavoriteMovieUseCaseImplTest.kt b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/IsFavoriteMovieUseCaseImplTest.kt similarity index 85% rename from src/feature_details/src/test/java/com/gabrielbmoro/moviedb/details/domain/usecases/IsFavoriteMovieUseCaseImplTest.kt rename to src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/IsFavoriteMovieUseCaseImplTest.kt index be982f26..5595f527 100644 --- a/src/feature_details/src/test/java/com/gabrielbmoro/moviedb/details/domain/usecases/IsFavoriteMovieUseCaseImplTest.kt +++ b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/usecases/IsFavoriteMovieUseCaseImplTest.kt @@ -1,7 +1,7 @@ -package com.gabrielbmoro.moviedb.details.domain.usecases +package com.gabrielbmoro.moviedb.domain.usecases -import com.gabrielbmoro.moviedb.domain.model.DataOrException -import com.gabrielbmoro.moviedb.repository.MoviesRepository +import com.gabrielbmoro.moviedb.domain.MoviesRepository +import com.gabrielbmoro.moviedb.domain.entities.DataOrException import io.mockk.coEvery import io.mockk.coVerify import io.mockk.mockk diff --git a/src/feature_details/build.gradle.kts b/src/feature_details/build.gradle.kts index cde0a41d..0cd06e82 100644 --- a/src/feature_details/build.gradle.kts +++ b/src/feature_details/build.gradle.kts @@ -10,7 +10,7 @@ android { } dependencies { - implementation(projects.data) + implementation(projects.domain) implementation(projects.core) // Player diff --git a/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/di/DetailsModule.kt b/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/di/DetailsModule.kt index 7dbf8ee3..dc092a5d 100644 --- a/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/di/DetailsModule.kt +++ b/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/di/DetailsModule.kt @@ -1,16 +1,7 @@ package com.gabrielbmoro.moviedb.details.di -import com.gabrielbmoro.moviedb.details.domain.usecases.FavoriteMovieUseCase -import com.gabrielbmoro.moviedb.details.domain.usecases.FavoriteMovieUseCaseImpl -import com.gabrielbmoro.moviedb.details.domain.usecases.GetMovieDetailsUseCase -import com.gabrielbmoro.moviedb.details.domain.usecases.GetMovieDetailsUseCaseImpl -import com.gabrielbmoro.moviedb.details.domain.usecases.GetTrailersUseCase -import com.gabrielbmoro.moviedb.details.domain.usecases.GetTrailersUseCaseImpl -import com.gabrielbmoro.moviedb.details.domain.usecases.IsFavoriteMovieUseCase -import com.gabrielbmoro.moviedb.details.domain.usecases.IsFavoriteMovieUseCaseImpl import com.gabrielbmoro.moviedb.details.ui.screens.details.DetailsScreenViewModel import org.koin.androidx.viewmodel.dsl.viewModel -import org.koin.dsl.bind import org.koin.dsl.module val featureDetailsModule = module { @@ -22,20 +13,4 @@ val featureDetailsModule = module { movie = params.get() ) } - - factory { FavoriteMovieUseCaseImpl(repository = get()) }.bind( - FavoriteMovieUseCase::class - ) - - factory { IsFavoriteMovieUseCaseImpl(repository = get()) }.bind( - IsFavoriteMovieUseCase::class - ) - - factory { GetMovieDetailsUseCaseImpl(getTrailersUseCase = get(), repository = get()) }.bind( - GetMovieDetailsUseCase::class - ) - - factory { - GetTrailersUseCaseImpl(repository = get()) - }.bind(GetTrailersUseCase::class) } diff --git a/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/ui/screens/details/DetailsScreenViewModel.kt b/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/ui/screens/details/DetailsScreenViewModel.kt index 3ffb89fd..bb56ea2b 100644 --- a/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/ui/screens/details/DetailsScreenViewModel.kt +++ b/src/feature_details/src/main/java/com/gabrielbmoro/moviedb/details/ui/screens/details/DetailsScreenViewModel.kt @@ -2,10 +2,10 @@ package com.gabrielbmoro.moviedb.details.ui.screens.details import androidx.lifecycle.viewModelScope import com.gabrielbmoro.moviedb.core.ui.mvi.ViewModelMVI -import com.gabrielbmoro.moviedb.details.domain.usecases.FavoriteMovieUseCase -import com.gabrielbmoro.moviedb.details.domain.usecases.GetMovieDetailsUseCase -import com.gabrielbmoro.moviedb.details.domain.usecases.IsFavoriteMovieUseCase -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.usecases.FavoriteMovieUseCase +import com.gabrielbmoro.moviedb.domain.usecases.GetMovieDetailsUseCase +import com.gabrielbmoro.moviedb.domain.usecases.IsFavoriteMovieUseCase +import com.gabrielbmoro.moviedb.domain.entities.Movie import kotlinx.coroutines.flow.catch import kotlinx.coroutines.launch diff --git a/src/feature_movies/build.gradle.kts b/src/feature_movies/build.gradle.kts index 88d4cafb..b76c6d2b 100644 --- a/src/feature_movies/build.gradle.kts +++ b/src/feature_movies/build.gradle.kts @@ -10,7 +10,7 @@ android { } dependencies { - implementation(projects.data) + implementation(projects.domain) implementation(projects.core) implementation(libs.core.ktx) diff --git a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/di/MoviesModule.kt b/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/di/MoviesModule.kt index 41406757..a0ca9fbb 100644 --- a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/di/MoviesModule.kt +++ b/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/di/MoviesModule.kt @@ -1,16 +1,7 @@ package com.gabrielbmoro.moviedb.movies.di -import com.gabrielbmoro.moviedb.movies.domain.usecases.GetNowPlayingMoviesUseCase -import com.gabrielbmoro.moviedb.movies.domain.usecases.GetNowPlayingMoviesUseCaseImpl -import com.gabrielbmoro.moviedb.movies.domain.usecases.GetPopularMoviesUseCase -import com.gabrielbmoro.moviedb.movies.domain.usecases.GetPopularMoviesUseCaseImpl -import com.gabrielbmoro.moviedb.movies.domain.usecases.GetTopRatedMoviesUseCase -import com.gabrielbmoro.moviedb.movies.domain.usecases.GetTopRatedMoviesUseCaseImpl -import com.gabrielbmoro.moviedb.movies.domain.usecases.GetUpcomingMoviesUseCase -import com.gabrielbmoro.moviedb.movies.domain.usecases.GetUpcomingMoviesUseCaseImpl import com.gabrielbmoro.moviedb.movies.ui.screens.movies.MoviesViewModel import org.koin.androidx.viewmodel.dsl.viewModel -import org.koin.dsl.bind import org.koin.dsl.module val featureMoviesModule = module { @@ -23,20 +14,4 @@ val featureMoviesModule = module { resourcesProvider = get() ) } - - factory { - GetPopularMoviesUseCaseImpl(repository = get()) - }.bind(GetPopularMoviesUseCase::class) - - factory { - GetNowPlayingMoviesUseCaseImpl(repository = get()) - }.bind(GetNowPlayingMoviesUseCase::class) - - factory { - GetTopRatedMoviesUseCaseImpl(repository = get()) - }.bind(GetTopRatedMoviesUseCase::class) - - factory { - GetUpcomingMoviesUseCaseImpl(repository = get()) - }.bind(GetUpcomingMoviesUseCase::class) } diff --git a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/ui/screens/movies/MoviesScreen.kt b/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/ui/screens/movies/MoviesScreen.kt index f4c83a12..c2d0f7de 100644 --- a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/ui/screens/movies/MoviesScreen.kt +++ b/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/ui/screens/movies/MoviesScreen.kt @@ -17,9 +17,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.gabrielbmoro.moviedb.core.ui.widgets.ScreenScaffold +import com.gabrielbmoro.moviedb.domain.entities.Movie import com.gabrielbmoro.moviedb.feature.movies.R import com.gabrielbmoro.moviedb.movies.ui.widgets.MoviesCarousel -import com.gabrielbmoro.moviedb.repository.model.Movie import org.koin.androidx.compose.koinViewModel @Composable diff --git a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/ui/screens/movies/MoviesViewModel.kt b/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/ui/screens/movies/MoviesViewModel.kt index bffdda78..def96f6e 100644 --- a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/ui/screens/movies/MoviesViewModel.kt +++ b/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/ui/screens/movies/MoviesViewModel.kt @@ -4,14 +4,14 @@ import androidx.lifecycle.viewModelScope import androidx.paging.cachedIn import com.gabrielbmoro.moviedb.core.providers.resources.ResourcesProvider import com.gabrielbmoro.moviedb.core.ui.mvi.ViewModelMVI +import com.gabrielbmoro.moviedb.domain.usecases.GetNowPlayingMoviesUseCase +import com.gabrielbmoro.moviedb.domain.usecases.GetPopularMoviesUseCase +import com.gabrielbmoro.moviedb.domain.usecases.GetTopRatedMoviesUseCase +import com.gabrielbmoro.moviedb.domain.usecases.GetUpcomingMoviesUseCase import com.gabrielbmoro.moviedb.feature.movies.R -import com.gabrielbmoro.moviedb.movies.domain.usecases.GetNowPlayingMoviesUseCase -import com.gabrielbmoro.moviedb.movies.domain.usecases.GetPopularMoviesUseCase -import com.gabrielbmoro.moviedb.movies.domain.usecases.GetTopRatedMoviesUseCase -import com.gabrielbmoro.moviedb.movies.domain.usecases.GetUpcomingMoviesUseCase import com.gabrielbmoro.moviedb.movies.ui.widgets.MoviesCarouselContent -class MoviesViewModel constructor( +class MoviesViewModel( private val resourcesProvider: ResourcesProvider, private val getUpcomingMoviesUseCase: GetUpcomingMoviesUseCase, private val getPopularMoviesUseCase: GetPopularMoviesUseCase, diff --git a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/ui/widgets/MoviesCarousel.kt b/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/ui/widgets/MoviesCarousel.kt index 69b619b3..38c7a6f9 100644 --- a/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/ui/widgets/MoviesCarousel.kt +++ b/src/feature_movies/src/main/java/com/gabrielbmoro/moviedb/movies/ui/widgets/MoviesCarousel.kt @@ -27,7 +27,7 @@ import androidx.paging.compose.itemContentType import androidx.paging.compose.itemKey import com.gabrielbmoro.moviedb.core.ui.widgets.BubbleLoader import com.gabrielbmoro.moviedb.core.ui.widgets.MovieImage -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.entities.Movie import kotlinx.coroutines.flow.Flow data class MoviesCarouselContent( diff --git a/src/feature_search/build.gradle.kts b/src/feature_search/build.gradle.kts index d15a97e3..4911399d 100644 --- a/src/feature_search/build.gradle.kts +++ b/src/feature_search/build.gradle.kts @@ -11,7 +11,7 @@ android { dependencies { - implementation(projects.data) + implementation(projects.domain) implementation(projects.core) implementation(libs.core.ktx) diff --git a/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/di/SearchMovieModule.kt b/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/di/SearchMovieModule.kt index 4d2f782d..018e6b11 100644 --- a/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/di/SearchMovieModule.kt +++ b/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/di/SearchMovieModule.kt @@ -1,10 +1,7 @@ package com.gabrielbmoro.moviedb.search.di -import com.gabrielbmoro.moviedb.search.domain.SearchMovieUseCase -import com.gabrielbmoro.moviedb.search.domain.SearchMovieUseCaseImpl import com.gabrielbmoro.moviedb.search.ui.screens.search.SearchViewModel import org.koin.androidx.viewmodel.dsl.viewModel -import org.koin.dsl.bind import org.koin.dsl.module val featureSearchMovieModule = module { @@ -13,8 +10,4 @@ val featureSearchMovieModule = module { searchMovieUseCase = get() ) } - - factory { SearchMovieUseCaseImpl(repository = get()) }.bind( - SearchMovieUseCase::class - ) } \ No newline at end of file diff --git a/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/screens/search/Model.kt b/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/screens/search/Model.kt index 3da6ed81..55d529fa 100644 --- a/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/screens/search/Model.kt +++ b/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/screens/search/Model.kt @@ -1,7 +1,7 @@ package com.gabrielbmoro.moviedb.search.ui.screens.search import androidx.compose.ui.text.input.TextFieldValue -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.entities.Movie sealed class SearchUserIntent { data class SearchBy(val query: TextFieldValue): SearchUserIntent() diff --git a/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/screens/search/SearchScreen.kt b/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/screens/search/SearchScreen.kt index d367d17c..efeb9cd5 100644 --- a/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/screens/search/SearchScreen.kt +++ b/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/screens/search/SearchScreen.kt @@ -15,7 +15,7 @@ import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.gabrielbmoro.moviedb.core.ui.widgets.CustomAppToolbar -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.entities.Movie import com.gabrielbmoro.moviedb.search.ui.widgets.MoviesResult import com.gabrielbmoro.moviedb.search.ui.widgets.SearchInputText import kotlinx.coroutines.delay diff --git a/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/screens/search/SearchViewModel.kt b/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/screens/search/SearchViewModel.kt index 540f011a..90e84139 100644 --- a/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/screens/search/SearchViewModel.kt +++ b/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/screens/search/SearchViewModel.kt @@ -2,10 +2,9 @@ package com.gabrielbmoro.moviedb.search.ui.screens.search import androidx.compose.ui.text.input.TextFieldValue import com.gabrielbmoro.moviedb.core.ui.mvi.ViewModelMVI -import com.gabrielbmoro.moviedb.search.domain.SearchMovieUseCase +import com.gabrielbmoro.moviedb.domain.usecases.SearchMovieUseCase - -class SearchViewModel constructor( +class SearchViewModel( private val searchMovieUseCase: SearchMovieUseCase ) : ViewModelMVI() { diff --git a/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/widgets/MoviesResult.kt b/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/widgets/MoviesResult.kt index ee04bc73..e30177f3 100644 --- a/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/widgets/MoviesResult.kt +++ b/src/feature_search/src/main/java/com/gabrielbmoro/moviedb/search/ui/widgets/MoviesResult.kt @@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.gabrielbmoro.moviedb.core.ui.widgets.MovieCard -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.entities.Movie @Composable fun MoviesResult( diff --git a/src/feature_wishlist/build.gradle.kts b/src/feature_wishlist/build.gradle.kts index b261d41b..d4e5d348 100644 --- a/src/feature_wishlist/build.gradle.kts +++ b/src/feature_wishlist/build.gradle.kts @@ -10,7 +10,7 @@ android { } dependencies { - implementation(projects.data) + implementation(projects.domain) implementation(projects.core) implementation(libs.core.ktx) diff --git a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/di/WishlistModule.kt b/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/di/WishlistModule.kt index e2bba661..67650eba 100644 --- a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/di/WishlistModule.kt +++ b/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/di/WishlistModule.kt @@ -1,28 +1,15 @@ package com.gabrielbmoro.moviedb.wishlist.di -import com.gabrielbmoro.moviedb.wishlist.domain.usecases.DeleteMovieUseCase -import com.gabrielbmoro.moviedb.wishlist.domain.usecases.DeleteMovieUseCaseImpl -import com.gabrielbmoro.moviedb.wishlist.domain.usecases.GetFavoriteMoviesUseCase -import com.gabrielbmoro.moviedb.wishlist.domain.usecases.GetFavoriteMoviesUseCaseImpl import com.gabrielbmoro.moviedb.wishlist.ui.screens.wishlist.WishlistViewModel import org.koin.androidx.viewmodel.dsl.viewModel -import org.koin.dsl.bind import org.koin.dsl.module val featureWishlistModule = module { viewModel { WishlistViewModel( - deleteMovieUseCase = get(), + favoriteMovieUseCase = get(), getFavoriteMoviesUseCase = get(), resourcesProvider = get() ) } - - factory { - DeleteMovieUseCaseImpl(repository = get()) - }.bind(DeleteMovieUseCase::class) - - factory { - GetFavoriteMoviesUseCaseImpl(repository = get()) - }.bind(GetFavoriteMoviesUseCase::class) } diff --git a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/domain/usecases/DeleteMovieUseCase.kt b/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/domain/usecases/DeleteMovieUseCase.kt deleted file mode 100644 index 6c882c5f..00000000 --- a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/domain/usecases/DeleteMovieUseCase.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.gabrielbmoro.moviedb.wishlist.domain.usecases - -import com.gabrielbmoro.moviedb.repository.MoviesRepository - -interface DeleteMovieUseCase { - suspend operator fun invoke(movieTitle: String): Boolean? -} - -class DeleteMovieUseCaseImpl( - private val repository: MoviesRepository -) : DeleteMovieUseCase { - override suspend fun invoke(movieTitle: String): Boolean? { - return repository.unFavorite(movieTitle).data - } -} \ No newline at end of file diff --git a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/Model.kt b/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/Model.kt index 94afefb2..712a1509 100644 --- a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/Model.kt +++ b/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/Model.kt @@ -1,6 +1,6 @@ package com.gabrielbmoro.moviedb.wishlist.ui.screens.wishlist -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.entities.Movie sealed class WishlistUserIntent { data class DeleteMovie(val movie: Movie) : WishlistUserIntent() diff --git a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistScreen.kt b/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistScreen.kt index 67882686..70949255 100644 --- a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistScreen.kt +++ b/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistScreen.kt @@ -16,7 +16,7 @@ import com.gabrielbmoro.moviedb.core.ui.widgets.BubbleLoader import com.gabrielbmoro.moviedb.core.ui.widgets.EmptyState import com.gabrielbmoro.moviedb.core.ui.widgets.ScreenScaffold import com.gabrielbmoro.moviedb.feature.wishlist.R -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.entities.Movie import com.gabrielbmoro.moviedb.wishlist.ui.widgets.MovieList import org.koin.androidx.compose.koinViewModel diff --git a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistViewModel.kt b/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistViewModel.kt index 89159f96..c667551e 100644 --- a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistViewModel.kt +++ b/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistViewModel.kt @@ -4,14 +4,14 @@ import androidx.lifecycle.viewModelScope import com.gabrielbmoro.moviedb.core.providers.resources.ResourcesProvider import com.gabrielbmoro.moviedb.core.ui.mvi.ViewModelMVI import com.gabrielbmoro.moviedb.feature.wishlist.R -import com.gabrielbmoro.moviedb.wishlist.domain.usecases.DeleteMovieUseCase -import com.gabrielbmoro.moviedb.wishlist.domain.usecases.GetFavoriteMoviesUseCase +import com.gabrielbmoro.moviedb.domain.usecases.FavoriteMovieUseCase +import com.gabrielbmoro.moviedb.domain.usecases.GetFavoriteMoviesUseCase import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch class WishlistViewModel( private val getFavoriteMoviesUseCase: GetFavoriteMoviesUseCase, - private val deleteMovieUseCase: DeleteMovieUseCase, + private val favoriteMovieUseCase: FavoriteMovieUseCase, private val resourcesProvider: ResourcesProvider ) : ViewModelMVI() { fun load() = viewModelScope.launch { @@ -27,8 +27,8 @@ class WishlistViewModel( override suspend fun execute(intent: WishlistUserIntent): WishlistUIState { return when (intent) { is WishlistUserIntent.DeleteMovie -> { - val result = deleteMovieUseCase(intent.movie.title) - if (result == true) { + val result = favoriteMovieUseCase(intent.movie, false) + if (result.data == true) { uiState.value.copy( favoriteMovies = getFavoriteMoviesUseCase().first(), resultMessage = resourcesProvider.getString( diff --git a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/widgets/MovieList.kt b/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/widgets/MovieList.kt index 2bb531a7..689535c5 100644 --- a/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/widgets/MovieList.kt +++ b/src/feature_wishlist/src/main/java/com/gabrielbmoro/moviedb/wishlist/ui/widgets/MovieList.kt @@ -10,7 +10,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.gabrielbmoro.moviedb.core.ui.widgets.MovieCard -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.entities.Movie @Composable fun MovieList( diff --git a/src/feature_wishlist/src/test/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistViewModelTest.kt b/src/feature_wishlist/src/test/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistViewModelTest.kt index c4fd3f88..44eb718c 100644 --- a/src/feature_wishlist/src/test/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistViewModelTest.kt +++ b/src/feature_wishlist/src/test/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistViewModelTest.kt @@ -55,7 +55,7 @@ class WishlistViewModelTest { every { getFavoriteMoviesUseCase.invoke() }.returns(expected) val viewModel = WishlistViewModel( getFavoriteMoviesUseCase = getFavoriteMoviesUseCase, - deleteMovieUseCase = deleteMovieUseCase, + favoriteMovieUseCase = deleteMovieUseCase, resourcesProvider = resourcesProvider ) @@ -79,7 +79,7 @@ class WishlistViewModelTest { val viewModel = WishlistViewModel( getFavoriteMoviesUseCase = getFavoriteMoviesUseCase, - deleteMovieUseCase = deleteMovieUseCase, + favoriteMovieUseCase = deleteMovieUseCase, resourcesProvider = resourcesProvider ) @@ -111,7 +111,7 @@ class WishlistViewModelTest { val viewModel = WishlistViewModel( getFavoriteMoviesUseCase = getFavoriteMoviesUseCase, - deleteMovieUseCase = deleteMovieUseCase, + favoriteMovieUseCase = deleteMovieUseCase, resourcesProvider = resourcesProvider ) diff --git a/src/gradle/libs.versions.toml b/src/gradle/libs.versions.toml index 6763142d..a2f1d8e6 100644 --- a/src/gradle/libs.versions.toml +++ b/src/gradle/libs.versions.toml @@ -1,12 +1,12 @@ [versions] firebase-crashlytics-gradle = "2.9.9" google-services = "4.4.0" -kotlin = "1.9.20" -compose_bom = "2024.02.00" -compose_compiler = "1.5.4" -compose_material_3 = "1.1.2" +kotlin = "1.9.22" +compose_bom = "2024.02.01" +compose_compiler = "1.5.10" +compose_material_3 = "1.2.0" multidex = "2.0.1" -nav_compose_integration = "2.7.6" +nav_compose_integration = "2.7.7" coil = "2.3.0" appcompat = "1.6.1" swipe_refresh = "1.2.0-alpha01" @@ -15,30 +15,25 @@ room = "2.6.1" lifecycle = "2.7.0" preference = "1.2.1" timber = "5.0.1" -gson = "2.10" +gson = "2.10.1" retrofit = "2.9.0" junit = "4.13.2" -android_test = "1.1.3" truth = "1.1.3" test_core = "1.5.0" arch_core = "2.2.0" mockk = "1.13.8" coroutines = "1.6.4" -espresso = "3.3.0" -test_rules_version = "1.3.0" gradle = "8.2.2" paging_compose = "3.2.1" firebase-crashlytics-ktx = "18.6.0" firebase-analytics-ktx = "21.5.0" android_youtube_player_version = "12.0.0" -agp = "8.0.2" -kotlin1810 = "1.8.10" core-ktx = "1.12.0" androidx-test-ext-junit = "1.1.5" espresso-core = "3.5.1" material = "1.11.0" ktlint_plugin = "11.5.1" -ksp = "1.9.20-1.0.13" +ksp = "1.9.22-1.0.17" kover = "0.7.5" koin_bom = "3.6.0-wasm-alpha2" diff --git a/src/gradle/wrapper/gradle-wrapper.properties b/src/gradle/wrapper/gradle-wrapper.properties index ad047d40..fc250111 100644 --- a/src/gradle/wrapper/gradle-wrapper.properties +++ b/src/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Dec 03 21:43:58 BRT 2023 +#Sat Mar 02 19:00:38 BRT 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/settings.gradle.kts b/src/settings.gradle.kts index 6a7bd6a5..2eaf0ec1 100644 --- a/src/settings.gradle.kts +++ b/src/settings.gradle.kts @@ -1,5 +1,7 @@ @file:Suppress("UnstableApiUsage") +include(":domain") + enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") pluginManagement { From 0330ae445d9244db8757af95d366bbd3553f83c3 Mon Sep 17 00:00:00 2001 From: Gabriel Bronzatti Moro Date: Sat, 2 Mar 2024 19:24:29 -0300 Subject: [PATCH 2/5] Fix unit test issue - WishlistViewModelTest --- .../screens/wishlist/WishlistViewModelTest.kt | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/feature_wishlist/src/test/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistViewModelTest.kt b/src/feature_wishlist/src/test/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistViewModelTest.kt index 44eb718c..07026f04 100644 --- a/src/feature_wishlist/src/test/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistViewModelTest.kt +++ b/src/feature_wishlist/src/test/java/com/gabrielbmoro/moviedb/wishlist/ui/screens/wishlist/WishlistViewModelTest.kt @@ -2,9 +2,10 @@ package com.gabrielbmoro.moviedb.wishlist.ui.screens.wishlist import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.gabrielbmoro.moviedb.core.providers.resources.ResourcesProvider -import com.gabrielbmoro.moviedb.repository.model.Movie -import com.gabrielbmoro.moviedb.wishlist.domain.usecases.DeleteMovieUseCase -import com.gabrielbmoro.moviedb.wishlist.domain.usecases.GetFavoriteMoviesUseCase +import com.gabrielbmoro.moviedb.domain.entities.DataOrException +import com.gabrielbmoro.moviedb.domain.entities.Movie +import com.gabrielbmoro.moviedb.domain.usecases.FavoriteMovieUseCase +import com.gabrielbmoro.moviedb.domain.usecases.GetFavoriteMoviesUseCase import com.google.common.truth.Truth import io.mockk.coEvery import io.mockk.coVerify @@ -28,7 +29,7 @@ import org.junit.Test class WishlistViewModelTest { private lateinit var getFavoriteMoviesUseCase: GetFavoriteMoviesUseCase - private lateinit var deleteMovieUseCase: DeleteMovieUseCase + private lateinit var favoriteMovieUseCase: FavoriteMovieUseCase private lateinit var resourcesProvider: ResourcesProvider @get:Rule @@ -39,7 +40,7 @@ class WishlistViewModelTest { Dispatchers.setMain(StandardTestDispatcher()) getFavoriteMoviesUseCase = mockk() - deleteMovieUseCase = mockk() + favoriteMovieUseCase = mockk() resourcesProvider = mockk() } @@ -55,7 +56,7 @@ class WishlistViewModelTest { every { getFavoriteMoviesUseCase.invoke() }.returns(expected) val viewModel = WishlistViewModel( getFavoriteMoviesUseCase = getFavoriteMoviesUseCase, - favoriteMovieUseCase = deleteMovieUseCase, + favoriteMovieUseCase = favoriteMovieUseCase, resourcesProvider = resourcesProvider ) @@ -79,7 +80,7 @@ class WishlistViewModelTest { val viewModel = WishlistViewModel( getFavoriteMoviesUseCase = getFavoriteMoviesUseCase, - favoriteMovieUseCase = deleteMovieUseCase, + favoriteMovieUseCase = favoriteMovieUseCase, resourcesProvider = resourcesProvider ) @@ -104,14 +105,19 @@ class WishlistViewModelTest { ) ) every { resourcesProvider.getString(any()) }.returns("Chuck norris") - coEvery { deleteMovieUseCase.invoke(Movie.mockChuckNorrisVsVandammeMovie().title) }.returns( - true + coEvery { + favoriteMovieUseCase.invoke( + Movie.mockChuckNorrisVsVandammeMovie(), + toFavorite = false + ) + }.returns( + DataOrException(data = false) ) every { getFavoriteMoviesUseCase() }.returns(expected) val viewModel = WishlistViewModel( getFavoriteMoviesUseCase = getFavoriteMoviesUseCase, - favoriteMovieUseCase = deleteMovieUseCase, + favoriteMovieUseCase = favoriteMovieUseCase, resourcesProvider = resourcesProvider ) @@ -120,6 +126,6 @@ class WishlistViewModelTest { // assert advanceUntilIdle() - coVerify(exactly = 1) { deleteMovieUseCase.invoke(Movie.mockChuckNorrisVsVandammeMovie().title) } + coVerify(exactly = 1) { favoriteMovieUseCase.invoke(Movie.mockChuckNorrisVsVandammeMovie(), false) } } } From 161bb0a277b6fe0ad4d4f54c77a55b4a2514aad9 Mon Sep 17 00:00:00 2001 From: Gabriel Bronzatti Moro Date: Sat, 2 Mar 2024 19:25:35 -0300 Subject: [PATCH 3/5] Fix unit test issue - SearchViewModelTest --- .../moviedb/search/ui/screens/search/SearchViewModelTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/feature_search/src/test/java/com/gabrielbmoro/moviedb/search/ui/screens/search/SearchViewModelTest.kt b/src/feature_search/src/test/java/com/gabrielbmoro/moviedb/search/ui/screens/search/SearchViewModelTest.kt index 673f90e3..23906105 100644 --- a/src/feature_search/src/test/java/com/gabrielbmoro/moviedb/search/ui/screens/search/SearchViewModelTest.kt +++ b/src/feature_search/src/test/java/com/gabrielbmoro/moviedb/search/ui/screens/search/SearchViewModelTest.kt @@ -2,8 +2,8 @@ package com.gabrielbmoro.moviedb.search.ui.screens.search import androidx.arch.core.executor.testing.InstantTaskExecutorRule import androidx.compose.ui.text.input.TextFieldValue -import com.gabrielbmoro.moviedb.repository.model.Movie -import com.gabrielbmoro.moviedb.search.domain.SearchMovieUseCase +import com.gabrielbmoro.moviedb.domain.entities.Movie +import com.gabrielbmoro.moviedb.domain.usecases.SearchMovieUseCase import com.google.common.truth.Truth import io.mockk.coEvery import io.mockk.mockk From 324b0a1112bacb4351ee4034878307053f747114 Mon Sep 17 00:00:00 2001 From: Gabriel Bronzatti Moro Date: Sat, 2 Mar 2024 20:25:51 -0300 Subject: [PATCH 4/5] Fix Lint issue --- .../java/com/gabrielbmoro/moviedb/navigation/MovieDBNavHost.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/MovieDBNavHost.kt b/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/MovieDBNavHost.kt index 63f497d6..9e888ceb 100644 --- a/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/MovieDBNavHost.kt +++ b/src/app/src/main/java/com/gabrielbmoro/moviedb/navigation/MovieDBNavHost.kt @@ -8,8 +8,8 @@ import androidx.navigation.navArgument import com.gabrielbmoro.moviedb.core.ui.parcelableOf import com.gabrielbmoro.moviedb.details.ui.screens.details.DetailsScreen import com.gabrielbmoro.moviedb.details.ui.screens.details.DetailsScreenViewModel -import com.gabrielbmoro.moviedb.movies.ui.screens.movies.MovieScreen import com.gabrielbmoro.moviedb.domain.entities.Movie +import com.gabrielbmoro.moviedb.movies.ui.screens.movies.MovieScreen import com.gabrielbmoro.moviedb.search.ui.screens.search.SearchScreen import com.gabrielbmoro.moviedb.wishlist.ui.screens.wishlist.WishlistScreen import org.koin.androidx.compose.koinViewModel From 36c6e32214a455059170ed3122ecb7b46ddba553 Mon Sep 17 00:00:00 2001 From: Gabriel Bronzatti Moro Date: Sat, 2 Mar 2024 20:34:26 -0300 Subject: [PATCH 5/5] Update unit tests --- .../moviedb/repository/mappers/FavoriteMovieMapperTest.kt | 2 +- .../gabrielbmoro/moviedb/domain/entities}/MoviesListTypeTest.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/{data/src/test/java/com/gabrielbmoro/moviedb/repository/model => domain/src/test/java/com/gabrielbmoro/moviedb/domain/entities}/MoviesListTypeTest.kt (96%) diff --git a/src/data/src/test/java/com/gabrielbmoro/moviedb/repository/mappers/FavoriteMovieMapperTest.kt b/src/data/src/test/java/com/gabrielbmoro/moviedb/repository/mappers/FavoriteMovieMapperTest.kt index 328b8f18..afa8bcfe 100644 --- a/src/data/src/test/java/com/gabrielbmoro/moviedb/repository/mappers/FavoriteMovieMapperTest.kt +++ b/src/data/src/test/java/com/gabrielbmoro/moviedb/repository/mappers/FavoriteMovieMapperTest.kt @@ -1,6 +1,6 @@ package com.gabrielbmoro.moviedb.repository.mappers -import com.gabrielbmoro.moviedb.repository.model.Movie +import com.gabrielbmoro.moviedb.domain.entities.Movie import com.google.common.truth.Truth import kotlinx.coroutines.ExperimentalCoroutinesApi import org.junit.Test diff --git a/src/data/src/test/java/com/gabrielbmoro/moviedb/repository/model/MoviesListTypeTest.kt b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/entities/MoviesListTypeTest.kt similarity index 96% rename from src/data/src/test/java/com/gabrielbmoro/moviedb/repository/model/MoviesListTypeTest.kt rename to src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/entities/MoviesListTypeTest.kt index bd1ec2bd..d93d3566 100644 --- a/src/data/src/test/java/com/gabrielbmoro/moviedb/repository/model/MoviesListTypeTest.kt +++ b/src/domain/src/test/java/com/gabrielbmoro/moviedb/domain/entities/MoviesListTypeTest.kt @@ -1,4 +1,4 @@ -package com.gabrielbmoro.moviedb.repository.model +package com.gabrielbmoro.moviedb.domain.entities import com.google.common.truth.Truth import org.junit.Test