Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bbc8d689 authored by Nishant Dande's avatar Nishant Dande
Browse files

Added unit test case

parent bcbdf18d
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -133,6 +133,12 @@ android {
    kotlin.sourceSets.all {
        languageSettings.optIn("kotlin.RequiresOptIn")
    }

    testOptions {
        unitTests {
            includeAndroidResources = true
        }
    }
}

kapt {
@@ -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'
@@ -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'
}
+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()
        }
    }

}
+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
+2 −2
Original line number Diff line number Diff line
@@ -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")