/*
* Copyright (C) 2017 MINDORKS NEXTGEN PRIVATE LIMITED
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://mindorks.com/license/apache-v2
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License
*/
package com.mindorks.framework.mvp.di.module;
import android.app.Application;
import android.content.Context;
import com.mindorks.framework.mvp.BuildConfig;
import com.mindorks.framework.mvp.R;
import com.mindorks.framework.mvp.data.AppDataManager;
import com.mindorks.framework.mvp.data.DataManager;
import com.mindorks.framework.mvp.data.db.AppDbHelper;
import com.mindorks.framework.mvp.data.db.DbHelper;
import com.mindorks.framework.mvp.data.network.ApiHeader;
import com.mindorks.framework.mvp.data.network.ApiHelper;
import com.mindorks.framework.mvp.data.network.AppApiHelper;
import com.mindorks.framework.mvp.data.prefs.AppPreferencesHelper;
import com.mindorks.framework.mvp.data.prefs.PreferencesHelper;
import com.mindorks.framework.mvp.di.ApiInfo;
import com.mindorks.framework.mvp.di.ApplicationContext;
import com.mindorks.framework.mvp.di.DatabaseInfo;
import com.mindorks.framework.mvp.di.PreferenceInfo;
import com.mindorks.framework.mvp.utils.AppConstants;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
/**
* Created by amitshekhar on 03/02/17.
*/
@Module
public class ApplicationTestModule {
private final Application mApplication;
public ApplicationTestModule(Application application) {
mApplication = application;
}
@Provides
@ApplicationContext
Context provideContext() {
return mApplication;
}
@Provides
Application provideApplication() {
return mApplication;
}
@Provides
@DatabaseInfo
String provideDatabaseName() {
return AppConstants.DB_NAME;
}
@Provides
@ApiInfo
String provideApiKey() {
return BuildConfig.API_KEY;
}
@Provides
@PreferenceInfo
String providePreferenceName() {
return AppConstants.PREF_NAME;
}
// TODO : Mock all below for UI testing
@Provides
@Singleton
DataManager provideDataManager(AppDataManager appDataManager) {
return appDataManager;
}
@Provides
@Singleton
DbHelper provideDbHelper(AppDbHelper appDbHelper) {
return appDbHelper;
}
@Provides
@Singleton
PreferencesHelper providePreferencesHelper(AppPreferencesHelper appPreferencesHelper) {
return appPreferencesHelper;
}
@Provides
@Singleton
ApiHelper provideApiHelper(AppApiHelper appApiHelper) {
return appApiHelper;
}
@Provides
@Singleton
ApiHeader.ProtectedApiHeader provideProtectedApiHeader(@ApiInfo String apiKey,
PreferencesHelper preferencesHelper) {
return new ApiHeader.ProtectedApiHeader(
apiKey,
preferencesHelper.getCurrentUserId(),
preferencesHelper.getAccessToken());
}
@Provides
@Singleton
CalligraphyConfig provideCalligraphyDefaultConfig() {
return new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/source-sans-pro/SourceSansPro-Regular.ttf")
.setFontAttrId(R.attr.fontPath)
.build();
}
}