Skip to content

Instantly share code, notes, and snippets.

@emartynov
Created September 11, 2019 21:10
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 emartynov/ec156721bceab1d3e020d6487ff11850 to your computer and use it in GitHub Desktop.
Save emartynov/ec156721bceab1d3e020d6487ff11850 to your computer and use it in GitHub Desktop.
Mock glide fetcher
inline fun <reified T : Key> Glide.registerMockStreamModelLoader() = registerMockStreamModelLoader(T::class.java)
fun <T : Key> Glide.registerMockStreamModelLoader(modelClass: Class<T>) {
val modelLoaderFactory: ModelLoaderFactory<T, InputStream> = mock()
val modelLoader = mockStreamModelLoader(modelClass)
whenever(modelLoaderFactory.build(any())).thenReturn(modelLoader)
this.registry.append(modelClass, InputStream::class.java, modelLoaderFactory)
}
private fun <T : Key> mockStreamModelLoader(modelClass: Class<T>): ModelLoader<T, InputStream> {
val modelLoader: ModelLoader<T, InputStream> = mock()
val fetcher: DataFetcher<InputStream> = mock()
doAnswer { invocation ->
val callback: DataFetcher.DataCallback<InputStream> = invocation.getArgument(1)
callback.onDataReady(ByteArrayInputStream(ByteArray(0)))
}.whenever(fetcher).loadData(any(), any())
doAnswer { invocation ->
val obj: T = invocation.getArgument(0)
ModelLoader.LoadData(obj, fetcher)
}.whenever(modelLoader).buildLoadData(Mockito.any(modelClass), anyInt(), anyInt(), any())
return modelLoader
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment