1 package expo.modules.medialibrary
2 
3 import android.content.ContentResolver
4 import android.content.Context
5 import android.database.Cursor
6 import io.mockk.every
7 import io.mockk.mockk
8 import org.robolectric.fakes.RoboCursor
9 
10 typealias CursorResults = Array<Array<out Any?>>
11 
mockCursornull12 fun mockCursor(cursorResults: CursorResults): RoboCursor {
13   val cursor = RoboCursor()
14   cursor.setColumnNames(ASSET_PROJECTION.toMutableList())
15   cursor.setResults(cursorResults)
16   return cursor
17 }
18 
mockContentResolvernull19 fun mockContentResolver(cursor: Cursor?): ContentResolver {
20   val contentResolver = mockk<ContentResolver>()
21   every {
22     contentResolver.query(
23       EXTERNAL_CONTENT_URI,
24       any(), any(), any(), any()
25     )
26   } returns cursor
27   return contentResolver
28 }
29 
mockContentResolverForResultnull30 fun mockContentResolverForResult(cursorResults: CursorResults) =
31   mockContentResolver(mockCursor(cursorResults))
32 
33 fun throwableContentResolver(throwable: Throwable): ContentResolver {
34   val contentResolver = mockk<ContentResolver>()
35   every { contentResolver.query(any(), any(), any(), any(), any()) } throws throwable
36   return contentResolver
37 }
38 
39 class MockContext {
40   private val context = mockk<Context>()
41 
withnull42   infix fun with(contentResolver: ContentResolver): Context {
43     every { context.contentResolver } returns contentResolver
44     return context
45   }
46 
getnull47   fun get() = context
48 }
49