diff --git a/app/src/androidTestAtlasWeather/java/com/appttude/h_mal/atlas_weather/application/TestAppClass.kt b/app/src/androidTestAtlasWeather/java/com/appttude/h_mal/atlas_weather/application/TestAppClass.kt new file mode 100644 index 0000000..2a3d363 --- /dev/null +++ b/app/src/androidTestAtlasWeather/java/com/appttude/h_mal/atlas_weather/application/TestAppClass.kt @@ -0,0 +1,67 @@ +package com.appttude.h_mal.atlas_weather.application + +import androidx.room.Room +import androidx.test.espresso.IdlingRegistry +import androidx.test.espresso.idling.CountingIdlingResource +import androidx.test.platform.app.InstrumentationRegistry +import com.appttude.h_mal.atlas_weather.data.location.LocationProvider +import com.appttude.h_mal.atlas_weather.data.location.MockLocationProvider +import com.appttude.h_mal.atlas_weather.data.network.NetworkModule +import com.appttude.h_mal.atlas_weather.data.network.WeatherApi +import com.appttude.h_mal.atlas_weather.data.network.interceptors.MockingNetworkInterceptor +import com.appttude.h_mal.atlas_weather.data.network.interceptors.NetworkConnectionInterceptor +import com.appttude.h_mal.atlas_weather.data.network.interceptors.QueryParamsInterceptor +import com.appttude.h_mal.atlas_weather.data.network.networkUtils.loggingInterceptor +import com.appttude.h_mal.atlas_weather.data.room.AppDatabase +import com.appttude.h_mal.atlas_weather.data.room.Converter +import java.io.BufferedReader + +class TestAppClass : AtlasApp() { + private val idlingResources = CountingIdlingResource("Data_loader") + private val mockingNetworkInterceptor = MockingNetworkInterceptor(idlingResources) + + lateinit var database: AppDatabase + private val locationProvider: MockLocationProvider = MockLocationProvider() + + override fun onCreate() { + super.onCreate() + IdlingRegistry.getInstance().register(idlingResources) + } + + override fun createNetworkModule(): WeatherApi { + return NetworkModule().invoke( + mockingNetworkInterceptor, + NetworkConnectionInterceptor(this), + QueryParamsInterceptor(), + loggingInterceptor + ) as WeatherApi + } + + override fun createLocationModule(): LocationProvider { + return locationProvider + } + + override fun createRoomDatabase(): AppDatabase { + database = Room.inMemoryDatabaseBuilder(applicationContext, AppDatabase::class.java) + .allowMainThreadQueries() + .addTypeConverter(Converter(this)) + .build() + return database + } + + fun stubUrl(url: String, rawPath: String, code: Int = 200) { + val iStream = + InstrumentationRegistry.getInstrumentation().context.assets.open("$rawPath.json") + val data = iStream.bufferedReader().use(BufferedReader::readText) + mockingNetworkInterceptor.addUrlStub(url = url, data = data, code = code) + } + + fun removeUrlStub(url: String) { + mockingNetworkInterceptor.removeUrlStub(url = url) + } + + fun stubLocation(location: String, lat: Double = 0.00, long: Double = 0.00) { + locationProvider.addLocationToList(location, lat, long) + } + +} \ No newline at end of file diff --git a/app/src/androidTest/java/com/appttude/h_mal/atlas_weather/application/TestAppClass.kt b/app/src/androidTestMonoWeather/java/com/appttude/h_mal/atlas_weather/application/TestAppClass.kt similarity index 100% rename from app/src/androidTest/java/com/appttude/h_mal/atlas_weather/application/TestAppClass.kt rename to app/src/androidTestMonoWeather/java/com/appttude/h_mal/atlas_weather/application/TestAppClass.kt diff --git a/app/src/atlasWeather/AndroidManifest.xml b/app/src/atlasWeather/AndroidManifest.xml index e9829e4..bb3fd3e 100644 --- a/app/src/atlasWeather/AndroidManifest.xml +++ b/app/src/atlasWeather/AndroidManifest.xml @@ -5,7 +5,7 @@