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 mockCursornull12fun mockCursor(cursorResults: CursorResults): RoboCursor { 13 val cursor = RoboCursor() 14 cursor.setColumnNames(ASSET_PROJECTION.toMutableList()) 15 cursor.setResults(cursorResults) 16 return cursor 17 } 18 mockContentResolvernull19fun 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 mockContentResolverForResultnull30fun 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