package com.hitherejoe.androidtvboilerplate.test.common.injection.module;
import android.app.Application;
import android.content.Context;
import com.hitherejoe.androidtvboilerplate.data.DataManager;
import com.hitherejoe.androidtvboilerplate.data.local.PreferencesHelper;
import com.hitherejoe.androidtvboilerplate.data.remote.AndroidTvBoilerplateService;
import com.hitherejoe.androidtvboilerplate.injection.ApplicationContext;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import rx.subscriptions.CompositeSubscription;
import static org.mockito.Mockito.mock;
/**
* Provides application-level dependencies for an app running on a testing environment
* This allows injecting mocks if necessary.
*/
@Module
public class ApplicationTestModule {
private final Application mApplication;
public ApplicationTestModule(Application application) {
mApplication = application;
}
@Provides
Application provideApplication() {
return mApplication;
}
@Provides
@ApplicationContext
Context provideContext() {
return mApplication;
}
@Provides
CompositeSubscription provideCompositeSubscription() {
return new CompositeSubscription();
}
/************* MOCKS *************/
@Provides
@Singleton
DataManager provideDataManager() {
return mock(DataManager.class);
}
@Provides
@Singleton
PreferencesHelper providePreferencesHelper() {
return mock(PreferencesHelper.class);
}
@Provides
@Singleton
AndroidTvBoilerplateService provideAndroidTvBoilerplateService() {
return mock(AndroidTvBoilerplateService.class);
}
}