Coverage Summary for Class: ClientsFeaturesModule (com.imecatro.demosales.di)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| ClientsFeaturesModule |
0%
(0/1)
|
0%
(0/13)
|
|
0%
(0/13)
|
0%
(0/59)
|
package com.imecatro.demosales.di
import com.imecatro.demosales.domain.clients.repository.ClientsRepository
import com.imecatro.demosales.domain.clients.usecases.*
import com.imecatro.demosales.domain.core.architecture.coroutine.CoroutineProvider
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ViewModelComponent
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
/**
* Hilt module for providing general Use Case dependencies.
*/
@Module
@InstallIn(ViewModelComponent::class)
class UseCasesModule {
/**
* Provides a standard I/O Coroutine Dispatcher.
*
* @return [Dispatchers.IO]
*/
@Provides
fun provideDispatcher(): CoroutineDispatcher = Dispatchers.IO
}
/**
* Hilt module for providing Use Case dependencies related to Clients.
*/
@Module
@InstallIn(ViewModelComponent::class)
class ClientsFeaturesModule {
/**
* Provides [GetAllClientsUseCase].
*/
@Provides
fun providesGetListOfClientsUseCase(
clientsRepository: ClientsRepository,
appCoroutineDispatcher: CoroutineProvider
): GetAllClientsUseCase = GetAllClientsUseCase(clientsRepository, appCoroutineDispatcher)
/**
* Provides [FilterClientsUseCase].
*/
@Provides
fun providesFilterClientsUseCase(
clientsRepository: ClientsRepository,
appCoroutineDispatcher: CoroutineProvider
): FilterClientsUseCase = FilterClientsUseCase(clientsRepository, appCoroutineDispatcher)
/**
* Provides [AddClientUseCase].
*/
@Provides
fun providesAddClientUseCase(
clientsRepository: ClientsRepository,
appCoroutineDispatcher: CoroutineProvider
): AddClientUseCase = AddClientUseCase(clientsRepository, appCoroutineDispatcher)
/**
* Provides [GetClientDetailsByIdUseCase].
*/
@Provides
fun providesClientDetailsByIdUseCase(
clientsRepository: ClientsRepository,
appCoroutineDispatcher: CoroutineProvider
): GetClientDetailsByIdUseCase =
GetClientDetailsByIdUseCase(clientsRepository, appCoroutineDispatcher)
/**
* Provides [DeleteClientByIdUseCase].
*/
@Provides
fun providesDeleteClientByIdUseCase(
clientsRepository: ClientsRepository,
appCoroutineDispatcher: CoroutineProvider
): DeleteClientByIdUseCase = DeleteClientByIdUseCase(clientsRepository, appCoroutineDispatcher)
/**
* Provides [UpdateClientUseCase].
*/
@Provides
fun providesUpdateClientUseCase(
clientsRepository: ClientsRepository,
appCoroutineDispatcher: CoroutineProvider
): UpdateClientUseCase = UpdateClientUseCase(clientsRepository, appCoroutineDispatcher)
/**
* Provides [SearchClientUseCase].
*/
@Provides
fun providesSearchClientUseCase(
clientsRepository: ClientsRepository,
): SearchClientUseCase = SearchClientUseCase(clientsRepository)
/**
* Provides [GetClientByPhoneNumberUseCase].
*/
@Provides
fun providesGetClientByPhoneNumberUseCase(
clientsRepository: ClientsRepository,
appCoroutineDispatcher: CoroutineProvider
): GetClientByPhoneNumberUseCase = GetClientByPhoneNumberUseCase(clientsRepository, appCoroutineDispatcher)
/**
* Provides [AddPurchaseUseCase].
*/
@Provides
fun providesAddPurchaseUseCase(
clientsRepository: ClientsRepository
): AddPurchaseUseCase = AddPurchaseUseCase(clientsRepository)
/**
* Provides [GetPurchasesByClientIdUseCase].
*/
@Provides
fun providesGetPurchasesByClientIdUseCase(
clientsRepository: ClientsRepository
): GetPurchasesByClientIdUseCase = GetPurchasesByClientIdUseCase(clientsRepository)
/**
* Provides [CancelPurchaseByNumberUseCase].
*/
@Provides
fun providesCancelPurchaseByNumberUseCase(
clientsRepository: ClientsRepository,dispatcher: CoroutineProvider
): CancelPurchaseByNumberUseCase = CancelPurchaseByNumberUseCase(clientsRepository,dispatcher)
/**
* Provides [UpdateFavoriteStatusUseCase].
*/
@Provides
fun providesUpdateFavoriteStatusUseCase(
clientsRepository: ClientsRepository,
dispatcher: CoroutineProvider
): UpdateFavoriteStatusUseCase = UpdateFavoriteStatusUseCase(clientsRepository, dispatcher)
}