Loading app/build.gradle +12 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,12 @@ android { kotlin.sourceSets.all { languageSettings.optIn("kotlin.RequiresOptIn") } testOptions { unitTests { includeAndroidResources = true } } } kapt { Loading Loading @@ -164,6 +170,7 @@ dependencies { implementation "androidx.datastore:datastore-preferences:1.0.0" implementation 'com.facebook.shimmer:shimmer:0.5.0' implementation 'androidx.core:core-google-shortcuts:1.0.0' implementation 'androidx.test.ext:junit-ktx:1.1.5' debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7' testImplementation "com.google.truth:truth:1.1.3" testImplementation 'junit:junit:4.13.2' Loading Loading @@ -252,4 +259,9 @@ dependencies { // elib implementation 'foundation.e:elib:0.0.1-alpha11' testImplementation 'org.mockito:mockito-core:5.0.0' testImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0' testImplementation 'org.robolectric:robolectric:4.9' } app/src/main/java/foundation/e/apps/domain/login/repository/LoginRepositoryImpl.kt +8 −2 Original line number Diff line number Diff line package foundation.e.apps.domain.login.repository import android.content.Context import app.lounge.model.AnonymousAuthDataRequestBody import app.lounge.model.AuthDataResponse import app.lounge.networking.NetworkFetching import app.lounge.storage.cache.configurations import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject class LoginRepositoryImpl @Inject constructor( private val networkFetching: NetworkFetching private val networkFetching: NetworkFetching, @ApplicationContext val applicationContext: Context ): LoginRepository { override suspend fun anonymousUser(authDataRequestBody: AnonymousAuthDataRequestBody): AuthDataResponse { return networkFetching.requestAuthData( anonymousAuthDataRequestBody = authDataRequestBody ) ).also { applicationContext.configurations.authData = it.toString() } } } app/src/test/java/foundation/e/apps/usecase/repository/LoginRepositoryTest.kt 0 → 100644 +59 −0 Original line number Diff line number Diff line package foundation.e.apps.usecase.repository import android.content.Context import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import app.lounge.model.AnonymousAuthDataRequestBody import app.lounge.model.AuthDataResponse import app.lounge.networking.NetworkFetching import com.aurora.gplayapi.data.models.AuthData import foundation.e.apps.domain.login.repository.LoginRepository import foundation.e.apps.domain.login.repository.LoginRepositoryImpl import kotlinx.coroutines.test.runTest import org.junit.Assert import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.Mockito import org.mockito.MockitoAnnotations import org.robolectric.RobolectricTestRunner import retrofit2.Response import java.util.Properties @RunWith(RobolectricTestRunner::class) class LoginRepositoryTest { @Mock lateinit var networkAPI: NetworkFetching lateinit var instrumentationContext: Context @Before fun setUp() { MockitoAnnotations.openMocks(this) instrumentationContext= ApplicationProvider.getApplicationContext<Context>() } @Test fun testRequestAuthData() = runTest { Mockito.`when`(networkAPI.requestAuthData( requestBodyData )).thenReturn(AuthData("nisdande@murena.io", "")) val sut = LoginRepositoryImpl( networkAPI, instrumentationContext) val result = sut.anonymousUser(requestBodyData) Assert.assertEquals(true, result is AuthDataResponse) Assert.assertEquals("nisdande@murena.io", result.email) } } private val requestBodyData = AnonymousAuthDataRequestBody( properties = Properties(), userAgent = "testUserAgent" ) No newline at end of file modules/src/androidTest/java/app/lounge/NetworkFetchingAPITest.kt +2 −2 Original line number Diff line number Diff line Loading @@ -99,9 +99,9 @@ class NetworkFetchingAPITest { ) } private const val testUserAgent: String = "{\"package\":\"foundation.e.apps.debug\",\"version\":\"2.5.5.debug\",\"device\":\"coral\",\"api\":32,\"os_version\":\"1.11-s-20230511288805-dev-coral\",\"build_id\":\"319e25cd.20230630224839\"}" const val testUserAgent: String = "{\"package\":\"foundation.e.apps.debug\",\"version\":\"2.5.5.debug\",\"device\":\"coral\",\"api\":32,\"os_version\":\"1.11-s-20230511288805-dev-coral\",\"build_id\":\"319e25cd.20230630224839\"}" private val testSystemProperties = Properties().apply { val testSystemProperties = Properties().apply { setProperty("UserReadableName", "coral-default") setProperty("Build.HARDWARE", "coral") setProperty("Build.RADIO", "g8150-00123-220402-B-8399852") Loading Loading
app/build.gradle +12 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,12 @@ android { kotlin.sourceSets.all { languageSettings.optIn("kotlin.RequiresOptIn") } testOptions { unitTests { includeAndroidResources = true } } } kapt { Loading Loading @@ -164,6 +170,7 @@ dependencies { implementation "androidx.datastore:datastore-preferences:1.0.0" implementation 'com.facebook.shimmer:shimmer:0.5.0' implementation 'androidx.core:core-google-shortcuts:1.0.0' implementation 'androidx.test.ext:junit-ktx:1.1.5' debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7' testImplementation "com.google.truth:truth:1.1.3" testImplementation 'junit:junit:4.13.2' Loading Loading @@ -252,4 +259,9 @@ dependencies { // elib implementation 'foundation.e:elib:0.0.1-alpha11' testImplementation 'org.mockito:mockito-core:5.0.0' testImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0' testImplementation 'org.robolectric:robolectric:4.9' }
app/src/main/java/foundation/e/apps/domain/login/repository/LoginRepositoryImpl.kt +8 −2 Original line number Diff line number Diff line package foundation.e.apps.domain.login.repository import android.content.Context import app.lounge.model.AnonymousAuthDataRequestBody import app.lounge.model.AuthDataResponse import app.lounge.networking.NetworkFetching import app.lounge.storage.cache.configurations import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject class LoginRepositoryImpl @Inject constructor( private val networkFetching: NetworkFetching private val networkFetching: NetworkFetching, @ApplicationContext val applicationContext: Context ): LoginRepository { override suspend fun anonymousUser(authDataRequestBody: AnonymousAuthDataRequestBody): AuthDataResponse { return networkFetching.requestAuthData( anonymousAuthDataRequestBody = authDataRequestBody ) ).also { applicationContext.configurations.authData = it.toString() } } }
app/src/test/java/foundation/e/apps/usecase/repository/LoginRepositoryTest.kt 0 → 100644 +59 −0 Original line number Diff line number Diff line package foundation.e.apps.usecase.repository import android.content.Context import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import app.lounge.model.AnonymousAuthDataRequestBody import app.lounge.model.AuthDataResponse import app.lounge.networking.NetworkFetching import com.aurora.gplayapi.data.models.AuthData import foundation.e.apps.domain.login.repository.LoginRepository import foundation.e.apps.domain.login.repository.LoginRepositoryImpl import kotlinx.coroutines.test.runTest import org.junit.Assert import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.Mockito import org.mockito.MockitoAnnotations import org.robolectric.RobolectricTestRunner import retrofit2.Response import java.util.Properties @RunWith(RobolectricTestRunner::class) class LoginRepositoryTest { @Mock lateinit var networkAPI: NetworkFetching lateinit var instrumentationContext: Context @Before fun setUp() { MockitoAnnotations.openMocks(this) instrumentationContext= ApplicationProvider.getApplicationContext<Context>() } @Test fun testRequestAuthData() = runTest { Mockito.`when`(networkAPI.requestAuthData( requestBodyData )).thenReturn(AuthData("nisdande@murena.io", "")) val sut = LoginRepositoryImpl( networkAPI, instrumentationContext) val result = sut.anonymousUser(requestBodyData) Assert.assertEquals(true, result is AuthDataResponse) Assert.assertEquals("nisdande@murena.io", result.email) } } private val requestBodyData = AnonymousAuthDataRequestBody( properties = Properties(), userAgent = "testUserAgent" ) No newline at end of file
modules/src/androidTest/java/app/lounge/NetworkFetchingAPITest.kt +2 −2 Original line number Diff line number Diff line Loading @@ -99,9 +99,9 @@ class NetworkFetchingAPITest { ) } private const val testUserAgent: String = "{\"package\":\"foundation.e.apps.debug\",\"version\":\"2.5.5.debug\",\"device\":\"coral\",\"api\":32,\"os_version\":\"1.11-s-20230511288805-dev-coral\",\"build_id\":\"319e25cd.20230630224839\"}" const val testUserAgent: String = "{\"package\":\"foundation.e.apps.debug\",\"version\":\"2.5.5.debug\",\"device\":\"coral\",\"api\":32,\"os_version\":\"1.11-s-20230511288805-dev-coral\",\"build_id\":\"319e25cd.20230630224839\"}" private val testSystemProperties = Properties().apply { val testSystemProperties = Properties().apply { setProperty("UserReadableName", "coral-default") setProperty("Build.HARDWARE", "coral") setProperty("Build.RADIO", "g8150-00123-220402-B-8399852") Loading