/
ImageLoaderMock.kt
49 lines (42 loc) · 1.63 KB
/
ImageLoaderMock.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.reactnativenavigation.mocks
import android.graphics.Canvas
import android.graphics.ColorFilter
import android.graphics.drawable.Drawable
import com.reactnativenavigation.utils.ImageLoader
import com.reactnativenavigation.utils.ImageLoader.ImagesLoadingListener
import org.mockito.Mockito.doAnswer
import org.mockito.kotlin.any
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
import java.util.*
object ImageLoaderMock {
val mockDrawable: Drawable = object : Drawable() {
override fun draw(canvas: Canvas) {}
override fun setAlpha(alpha: Int) {}
override fun setColorFilter(colorFilter: ColorFilter?) {}
override fun getOpacity(): Int {
return 0
}
}
private val backIcon: Drawable = BackDrawable()
@JvmStatic
fun mock(): ImageLoader {
return this.mock(mockDrawable)
}
@JvmStatic
fun mock(returnDrawable: Drawable = mockDrawable): ImageLoader {
val imageLoader = mock<ImageLoader>()
doAnswer { invocation ->
val urlCount = (invocation.arguments[1] as Collection<*>).size
val drawables = Collections.nCopies(urlCount, returnDrawable)
(invocation.arguments[2] as ImagesLoadingListener).onComplete(drawables)
null
}.`when`(imageLoader).loadIcons(any(), any(), any())
doAnswer { invocation ->
(invocation.arguments[2] as ImagesLoadingListener).onComplete(returnDrawable)
null
}.`when`(imageLoader).loadIcon(any(), any(), any())
whenever(imageLoader.getBackButtonIcon(any())).thenReturn(backIcon)
return imageLoader
}
}