Loading modules/build.gradle +6 −0 Original line number Original line Diff line number Diff line Loading @@ -93,4 +93,10 @@ dependencies { testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' testImplementation "org.mockito:mockito-core:5.0.0" // Optional -- mockito-kotlin testImplementation "org.mockito.kotlin:mockito-kotlin:4.1.0" testImplementation 'org.mockito:mockito-inline:5.0.0' testImplementation "io.mockk:mockk:1.12.3" } } No newline at end of file modules/src/androidTest/java/app/lounge/FakeGplayHttpClient.kt→modules/src/test/java/FakeGplayHttpClient.kt +7 −3 Original line number Original line Diff line number Diff line package app.lounge import com.aurora.gplayapi.data.models.PlayResponse import com.aurora.gplayapi.data.models.PlayResponse import com.aurora.gplayapi.network.IHttpClient import com.aurora.gplayapi.network.IHttpClient class FakeGplayHttpClient : IHttpClient { class FakeGplayHttpClient : IHttpClient { var shouldThrowException = false override fun get(url: String, headers: Map<String, String>): PlayResponse { override fun get(url: String, headers: Map<String, String>): PlayResponse { TODO("Not yet implemented") TODO("Not yet implemented") } } Loading @@ -25,7 +26,10 @@ class FakeGplayHttpClient : IHttpClient { } } override fun post(url: String, headers: Map<String, String>, body: ByteArray): PlayResponse { override fun post(url: String, headers: Map<String, String>, body: ByteArray): PlayResponse { TODO("Not yet implemented") if (shouldThrowException) { throw RuntimeException() } return PlayResponse() } } override fun post( override fun post( Loading modules/src/androidTest/java/app/lounge/GoogleLoginApiTest.kt→modules/src/test/java/GoogleLoginApiTest.kt +34 −0 Original line number Original line Diff line number Diff line package app.lounge import app.lounge.login.google.GoogleLoginApi import app.lounge.login.google.GoogleLoginApi import app.lounge.login.google.GoogleLoginApiImpl import app.lounge.login.google.GoogleLoginApiImpl import app.lounge.networking.GplayHttpClient import app.lounge.networking.GplayHttpClient import app.lounge.networking.NetworkResult import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.helpers.AuthHelper import com.aurora.gplayapi.helpers.AuthValidator import io.mockk.every import io.mockk.mockkObject import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking import okhttp3.OkHttpClient import okhttp3.OkHttpClient import org.junit.Test import org.junit.Test import org.mockito.Mockito import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit class GoogleLoginApiTest { class GoogleLoginApiTest { private val gplayHttpClient = GplayHttpClient(getOkHttpClient()) private val gplayHttpClient = FakeGplayHttpClient() private fun getOkHttpClient( timeoutInMillisecond: Long = 10000L ): OkHttpClient = OkHttpClient.Builder() .callTimeout(timeoutInMillisecond, TimeUnit.MILLISECONDS) .build() private val googleLoginApi: GoogleLoginApi = GoogleLoginApiImpl(gplayHttpClient) private var googleLoginApi: GoogleLoginApi = GoogleLoginApiImpl(gplayHttpClient) @Test @Test fun testFetchAASTokenSuccess() = runBlocking { fun testFetchAASTokenSuccess() = runBlocking { val result = googleLoginApi.fetchAASToken("aa@aa.com", "123432w3") assert(result is NetworkResult.Success) } @Test fun testFetchAASTokenError() = runBlocking { gplayHttpClient.shouldThrowException = true val result = googleLoginApi.fetchAASToken("aa@aa.com", "123432w3") assert(result is NetworkResult.Error) } } } } No newline at end of file Loading
modules/build.gradle +6 −0 Original line number Original line Diff line number Diff line Loading @@ -93,4 +93,10 @@ dependencies { testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' testImplementation "org.mockito:mockito-core:5.0.0" // Optional -- mockito-kotlin testImplementation "org.mockito.kotlin:mockito-kotlin:4.1.0" testImplementation 'org.mockito:mockito-inline:5.0.0' testImplementation "io.mockk:mockk:1.12.3" } } No newline at end of file
modules/src/androidTest/java/app/lounge/FakeGplayHttpClient.kt→modules/src/test/java/FakeGplayHttpClient.kt +7 −3 Original line number Original line Diff line number Diff line package app.lounge import com.aurora.gplayapi.data.models.PlayResponse import com.aurora.gplayapi.data.models.PlayResponse import com.aurora.gplayapi.network.IHttpClient import com.aurora.gplayapi.network.IHttpClient class FakeGplayHttpClient : IHttpClient { class FakeGplayHttpClient : IHttpClient { var shouldThrowException = false override fun get(url: String, headers: Map<String, String>): PlayResponse { override fun get(url: String, headers: Map<String, String>): PlayResponse { TODO("Not yet implemented") TODO("Not yet implemented") } } Loading @@ -25,7 +26,10 @@ class FakeGplayHttpClient : IHttpClient { } } override fun post(url: String, headers: Map<String, String>, body: ByteArray): PlayResponse { override fun post(url: String, headers: Map<String, String>, body: ByteArray): PlayResponse { TODO("Not yet implemented") if (shouldThrowException) { throw RuntimeException() } return PlayResponse() } } override fun post( override fun post( Loading
modules/src/androidTest/java/app/lounge/GoogleLoginApiTest.kt→modules/src/test/java/GoogleLoginApiTest.kt +34 −0 Original line number Original line Diff line number Diff line package app.lounge import app.lounge.login.google.GoogleLoginApi import app.lounge.login.google.GoogleLoginApi import app.lounge.login.google.GoogleLoginApiImpl import app.lounge.login.google.GoogleLoginApiImpl import app.lounge.networking.GplayHttpClient import app.lounge.networking.GplayHttpClient import app.lounge.networking.NetworkResult import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.helpers.AuthHelper import com.aurora.gplayapi.helpers.AuthValidator import io.mockk.every import io.mockk.mockkObject import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking import okhttp3.OkHttpClient import okhttp3.OkHttpClient import org.junit.Test import org.junit.Test import org.mockito.Mockito import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit class GoogleLoginApiTest { class GoogleLoginApiTest { private val gplayHttpClient = GplayHttpClient(getOkHttpClient()) private val gplayHttpClient = FakeGplayHttpClient() private fun getOkHttpClient( timeoutInMillisecond: Long = 10000L ): OkHttpClient = OkHttpClient.Builder() .callTimeout(timeoutInMillisecond, TimeUnit.MILLISECONDS) .build() private val googleLoginApi: GoogleLoginApi = GoogleLoginApiImpl(gplayHttpClient) private var googleLoginApi: GoogleLoginApi = GoogleLoginApiImpl(gplayHttpClient) @Test @Test fun testFetchAASTokenSuccess() = runBlocking { fun testFetchAASTokenSuccess() = runBlocking { val result = googleLoginApi.fetchAASToken("aa@aa.com", "123432w3") assert(result is NetworkResult.Success) } @Test fun testFetchAASTokenError() = runBlocking { gplayHttpClient.shouldThrowException = true val result = googleLoginApi.fetchAASToken("aa@aa.com", "123432w3") assert(result is NetworkResult.Error) } } } } No newline at end of file