Skip to content

Instantly share code, notes, and snippets.

@davidliu
Created November 21, 2019 21:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davidliu/2873eb3ad3515cd5eec055ec84a0792d to your computer and use it in GitHub Desktop.
Save davidliu/2873eb3ad3515cd5eec055ec84a0792d to your computer and use it in GitHub Desktop.
class UserPushSettingsSyncWorkerTest : DonkeyTestCase() {
@get:Rule
var rxRule = RxJavaTestSchedulerRule()
@Mock
lateinit var fetcher: MediumServiceProtos.ObservableMediumService
@Mock
lateinit var notificationManager: NotificationManager
@Mock
lateinit var settingsStore: SettingsStore
@Mock
lateinit var notificationChannel: NotificationChannel
@Mock
lateinit var response: Response2<com.medium.android.common.generated.response.UserProtos.UpdateUserSettingResponse>
@Before
fun setup() {
`when`(fetcher.updateUserSetting(any(), anyLong())).thenReturn(Observable.just(response))
}
@Test
fun testCanRunSuccessfully() {
val work = createWorker().createWork()
rxRule.testScheduler.start()
val result = work.blockingGet()
assertThat(result, `is`(ListenableWorker.Result.success()))
}
fun createWorker(): UserPushSettingsSyncWorker {
return TestListenableWorkerBuilder<UserPushSettingsSyncWorker>(application)
.setWorkerFactory(object : WorkerFactory() {
override fun createWorker(
appContext: Context,
workerClassName: String,
workerParameters: WorkerParameters
): ListenableWorker? {
return UserPushSettingsSyncWorker(
appContext,
workerParameters,
fetcher,
notificationManager,
settingsStore
)
}
})
.build() as UserPushSettingsSyncWorker
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment