Skip to content

Commit 03a2ab5

Browse files
committed
Fixed UserRepository mocking in UI tests
1 parent 2af5b6b commit 03a2ab5

File tree

6 files changed

+40
-24
lines changed

6 files changed

+40
-24
lines changed

app/src/androidTest/java/com/example/tamaskozmer/kotlinrxexample/mocks/di/components/MockApplicationComponent.kt renamed to app/src/androidTest/java/com/example/tamaskozmer/kotlinrxexample/mocks/di/components/TestApplicationComponent.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
package com.example.tamaskozmer.kotlinrxexample.mocks.di.components
22

33
import com.example.tamaskozmer.kotlinrxexample.di.modules.FragmentModule
4-
import com.example.tamaskozmer.kotlinrxexample.mocks.di.modules.MockApplicationModule
4+
import com.example.tamaskozmer.kotlinrxexample.mocks.di.modules.TestApplicationModule
55
import com.example.tamaskozmer.kotlinrxexample.testutil.TestApplication
66
import dagger.Component
77
import dagger.android.AndroidInjector
88
import dagger.android.support.AndroidSupportInjectionModule
99
import javax.inject.Singleton
1010

1111
@Singleton
12-
@Component(modules = [MockApplicationModule::class, FragmentModule::class, AndroidSupportInjectionModule::class])
13-
interface MockApplicationComponent : AndroidInjector<TestApplication> {
12+
@Component(modules = [TestApplicationModule::class, FragmentModule::class, AndroidSupportInjectionModule::class])
13+
interface TestApplicationComponent : AndroidInjector<TestApplication> {
1414

1515
@Component.Builder
1616
abstract class Builder : AndroidInjector.Builder<TestApplication>() {
17-
abstract fun appModule(appModule: MockApplicationModule): Builder
17+
abstract fun appModule(appModule: TestApplicationModule): Builder
1818
}
1919
}

app/src/androidTest/java/com/example/tamaskozmer/kotlinrxexample/mocks/di/modules/MockApplicationModule.kt renamed to app/src/androidTest/java/com/example/tamaskozmer/kotlinrxexample/mocks/di/modules/TestApplicationModule.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.example.tamaskozmer.kotlinrxexample.mocks.di.modules
22

3-
import com.example.tamaskozmer.kotlinrxexample.mocks.model.repositories.MockDetailsRepository
4-
import com.example.tamaskozmer.kotlinrxexample.mocks.model.repositories.MockUserRepository
3+
import com.example.tamaskozmer.kotlinrxexample.mocks.model.repositories.FakeDetailsRepository
54
import com.example.tamaskozmer.kotlinrxexample.model.repositories.DetailsRepository
65
import com.example.tamaskozmer.kotlinrxexample.model.repositories.UserRepository
76
import com.example.tamaskozmer.kotlinrxexample.util.AppSchedulerProvider
@@ -11,18 +10,18 @@ import dagger.Provides
1110
import javax.inject.Singleton
1211

1312
@Module
14-
class MockApplicationModule {
13+
class TestApplicationModule(private val userRepository: UserRepository) {
1514

1615
@Provides
1716
@Singleton
1817
fun provideUserRepository(): UserRepository {
19-
return MockUserRepository()
18+
return userRepository
2019
}
2120

2221
@Provides
2322
@Singleton
2423
fun provideDetailsRepository(): DetailsRepository {
25-
return MockDetailsRepository()
24+
return FakeDetailsRepository()
2625
}
2726

2827
@Provides

app/src/androidTest/java/com/example/tamaskozmer/kotlinrxexample/mocks/model/repositories/MockDetailsRepository.kt renamed to app/src/androidTest/java/com/example/tamaskozmer/kotlinrxexample/mocks/model/repositories/FakeDetailsRepository.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@ import com.example.tamaskozmer.kotlinrxexample.model.repositories.DetailsReposit
66
import io.reactivex.Single
77
import io.reactivex.SingleEmitter
88

9-
/**
10-
* Created by Tamas_Kozmer on 8/8/2017.
11-
*/
12-
class MockDetailsRepository : DetailsRepository {
9+
class FakeDetailsRepository : DetailsRepository {
1310
override fun getQuestionsByUser(userId: Long, forced: Boolean): Single<List<Question>> {
1411
return createSingle(emptyList())
1512
}

app/src/androidTest/java/com/example/tamaskozmer/kotlinrxexample/mocks/model/repositories/MockUserRepository.kt renamed to app/src/androidTest/java/com/example/tamaskozmer/kotlinrxexample/mocks/model/repositories/FakeUserRepository.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@ import com.example.tamaskozmer.kotlinrxexample.model.repositories.UserRepository
66
import io.reactivex.Single
77
import io.reactivex.SingleEmitter
88

9-
/**
10-
* Created by Tamas_Kozmer on 8/8/2017.
11-
*/
12-
class MockUserRepository : UserRepository {
9+
class FakeUserRepository : UserRepository {
1310

1411
override fun getUsers(page: Int, forced: Boolean): Single<UserListModel> {
1512
val users = (1..10L).map {
Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
11
package com.example.tamaskozmer.kotlinrxexample.testutil
22

3-
import com.example.tamaskozmer.kotlinrxexample.mocks.di.components.DaggerMockApplicationComponent
4-
import dagger.android.AndroidInjector
5-
import dagger.android.support.DaggerApplication
3+
import android.app.Application
4+
import android.support.v4.app.Fragment
5+
import dagger.android.DispatchingAndroidInjector
6+
import dagger.android.support.HasSupportFragmentInjector
7+
import javax.inject.Inject
68

79

8-
class TestApplication : DaggerApplication() {
10+
class TestApplication : Application(), HasSupportFragmentInjector {
911

10-
override fun applicationInjector(): AndroidInjector<out DaggerApplication> {
11-
return DaggerMockApplicationComponent.builder().create(this)
12-
}
12+
@Inject
13+
lateinit var fragmentInjector: DispatchingAndroidInjector<Fragment>
14+
15+
override fun supportFragmentInjector() = fragmentInjector
16+
17+
// override fun applicationInjector(): AndroidInjector<out DaggerApplication> {
18+
// return DaggerMockApplicationComponent
19+
// .builder()
20+
// .appModule(MockApplicationModule(userRepository))
21+
// .create(this)
22+
// }
1323
}

app/src/androidTest/java/com/example/tamaskozmer/kotlinrxexample/view/fragments/UserListFragmentTest.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.example.tamaskozmer.kotlinrxexample.view.fragments
22

33
import android.content.Intent
4+
import android.support.test.InstrumentationRegistry
45
import android.support.test.espresso.Espresso
56
import android.support.test.espresso.Espresso.onView
67
import android.support.test.espresso.action.ViewActions
@@ -13,10 +14,13 @@ import android.support.test.rule.ActivityTestRule
1314
import android.support.test.runner.AndroidJUnit4
1415
import android.support.v7.widget.RecyclerView
1516
import com.example.tamaskozmer.kotlinrxexample.R
17+
import com.example.tamaskozmer.kotlinrxexample.mocks.di.components.DaggerMockApplicationComponent
18+
import com.example.tamaskozmer.kotlinrxexample.mocks.di.modules.TestApplicationModule
1619
import com.example.tamaskozmer.kotlinrxexample.model.entities.User
1720
import com.example.tamaskozmer.kotlinrxexample.model.entities.UserListModel
1821
import com.example.tamaskozmer.kotlinrxexample.model.repositories.UserRepository
1922
import com.example.tamaskozmer.kotlinrxexample.testutil.RecyclerViewMatcher
23+
import com.example.tamaskozmer.kotlinrxexample.testutil.TestApplication
2024
import com.example.tamaskozmer.kotlinrxexample.view.activities.MainActivity
2125
import io.reactivex.Single
2226
import io.reactivex.SingleEmitter
@@ -47,6 +51,15 @@ class UserListFragmentTest {
4751
@Before
4852
fun setUp() {
4953
MockitoAnnotations.initMocks(this)
54+
55+
val instrumentation = InstrumentationRegistry.getInstrumentation()
56+
val app = instrumentation.targetContext.applicationContext as TestApplication
57+
58+
DaggerMockApplicationComponent
59+
.builder()
60+
.appModule(TestApplicationModule(mockUserRepository))
61+
.create(app)
62+
.inject(app)
5063
}
5164

5265
@Test

0 commit comments

Comments
 (0)