Skip to content

Commit

Permalink
Merge pull request #291 from wealthfront/sample-mockk
Browse files Browse the repository at this point in the history
Use MockK in sample app tests
  • Loading branch information
cmathew committed Oct 27, 2023
2 parents e5fb29f + 9001148 commit a987f4e
Show file tree
Hide file tree
Showing 7 changed files with 22 additions and 69 deletions.
2 changes: 1 addition & 1 deletion magellan-sample-migration/build.gradle
Expand Up @@ -70,7 +70,7 @@ dependencies {
testImplementation Libs.junit
testImplementation Libs.testCore
testImplementation Libs.truth
testImplementation Libs.mockito
testImplementation Libs.mockK
testImplementation Libs.robolectric
testImplementation Libs.truth

Expand Down
Expand Up @@ -3,7 +3,7 @@ package com.wealthfront.magellan.sample.migration
import com.wealthfront.magellan.sample.migration.api.DogApi
import dagger.Module
import dagger.Provides
import org.mockito.Mockito
import io.mockk.mockk
import javax.inject.Singleton

@Module
Expand All @@ -12,6 +12,6 @@ object TestDogApiModule {
@Provides
@Singleton
fun provideDogApi(): DogApi {
return Mockito.mock(DogApi::class.java)
return mockk<DogApi>(relaxed = true)
}
}

This file was deleted.

Expand Up @@ -3,7 +3,7 @@ package com.wealthfront.magellan.sample.migration
import com.wealthfront.magellan.sample.migration.toolbar.ToolbarHelper
import dagger.Module
import dagger.Provides
import org.mockito.Mockito.mock
import io.mockk.mockk
import javax.inject.Singleton

@Module
Expand All @@ -12,6 +12,6 @@ object TestToolbarHelperModule {
@Provides
@Singleton
fun provideToolbarHelper(): ToolbarHelper {
return mock(ToolbarHelper::class.java)
return mockk<ToolbarHelper>(relaxed = true)
}
}
Expand Up @@ -10,33 +10,27 @@ import com.wealthfront.magellan.lifecycle.transitionToState
import com.wealthfront.magellan.sample.migration.AppComponentContainer
import com.wealthfront.magellan.sample.migration.TestAppComponent
import com.wealthfront.magellan.sample.migration.api.DogImageResponse
import com.wealthfront.magellan.sample.migration.coWhen
import io.mockk.coEvery
import io.mockk.coVerify
import io.mockk.mockk
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.verify
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.mockito.quality.Strictness
import org.robolectric.Robolectric.buildActivity
import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows.shadowOf

@RunWith(RobolectricTestRunner::class)
class DogDetailsScreenTest {

private lateinit var screen: DogDetailsScreen
private val activity = buildActivity(ComponentActivity::class.java).get()
private val breedData = DogImageResponse(
message = "image-url",
status = "success"
)

@Mock lateinit var dogDetailsView: DogDetailsView

@Rule @JvmField
val mockitoRule: MockitoRule = MockitoJUnit.rule().strictness(Strictness.WARN)
private val dogDetailsView = mockk<DogDetailsView>(relaxed = true)

@Before
fun setup() {
Expand All @@ -54,13 +48,13 @@ class DogDetailsScreenTest {
}
}

coWhen { component.api.getRandomImageForBreed("robotic") }.thenReturn(breedData)
coEvery { component.api.getRandomImageForBreed("robotic") } returns breedData
}

@Test
fun fetchesDogBreedOnShow() {
screen.transitionToState(LifecycleState.Shown(activity))
shadowOf(getMainLooper()).idle()
verify(dogDetailsView).setDogPic("image-url")
coVerify { dogDetailsView.setDogPic("image-url") }
}
}
Expand Up @@ -6,46 +6,38 @@ import android.os.Looper.getMainLooper
import androidx.test.core.app.ApplicationProvider
import com.bumptech.glide.RequestBuilder
import com.bumptech.glide.RequestManager
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyString
import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.mockito.quality.Strictness
import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows.shadowOf

@RunWith(RobolectricTestRunner::class)
class DogDetailsViewTest {

@Mock lateinit var glideRequest: RequestManager
@Mock lateinit var drawableRequest: RequestBuilder<Drawable>
private val glideRequest = mockk<RequestManager>(relaxed = true)
private val drawableRequest = mockk<RequestBuilder<Drawable>>(relaxed = true)

private lateinit var view: DogDetailsView
private lateinit var context: Context

@Rule @JvmField
val mockitoRule: MockitoRule = MockitoJUnit.rule().strictness(Strictness.WARN)

@Before
fun setup() {
context = ApplicationProvider.getApplicationContext()
view = DogDetailsView(context).apply {
glideBuilder = glideRequest
}

`when`(glideRequest.load(anyString())).thenReturn(drawableRequest)
every { glideRequest.load(ofType(String::class)) } returns drawableRequest
}

@Test
fun fetchesDogPicOnShow() {
view.setDogPic("https://dailybeagle.com/latest-picture")
shadowOf(getMainLooper()).idle()
verify(drawableRequest).into(view.viewBinding.dogImage)
verify { drawableRequest.into(view.viewBinding.dogImage) }
}
}
Expand Up @@ -9,7 +9,7 @@ import com.wealthfront.magellan.lifecycle.setContentScreen
import com.wealthfront.magellan.sample.migration.AppComponentContainer
import com.wealthfront.magellan.sample.migration.TestAppComponent
import com.wealthfront.magellan.sample.migration.api.DogBreedsResponse
import com.wealthfront.magellan.sample.migration.coWhen
import io.mockk.coEvery
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
Expand All @@ -33,8 +33,8 @@ class DogListStepTest {
val component = ((context as AppComponentContainer).injector() as TestAppComponent)
component.inject(this)
dogListStep = dogListStepFactory.create { chosenBreed = it }
coWhen { component.api.getAllBreeds() }
.thenReturn(DogBreedsResponse(message = mapOf("akita" to emptyList()), status = "success"))
coEvery { component.api.getAllBreeds() } returns
DogBreedsResponse(message = mapOf("akita" to emptyList()), status = "success")
}

@Test
Expand Down

0 comments on commit a987f4e

Please sign in to comment.