ContentResolverHelperIT.kt 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. * Nextcloud - Android Client
  3. *
  4. * SPDX-FileCopyrightText: 2021 Álvaro Brey <alvaro@alvarobrey.com>
  5. * SPDX-FileCopyrightText: 2021 Nextcloud GmbH
  6. * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
  7. */
  8. package com.owncloud.android.datamodel
  9. import android.content.ContentResolver
  10. import android.net.Uri
  11. import android.os.Build
  12. import androidx.test.ext.junit.runners.AndroidJUnit4
  13. import androidx.test.filters.SdkSuppress
  14. import org.junit.Before
  15. import org.junit.Test
  16. import org.junit.runner.RunWith
  17. import org.mockito.Mock
  18. import org.mockito.MockitoAnnotations
  19. import org.mockito.kotlin.argThat
  20. import org.mockito.kotlin.eq
  21. import org.mockito.kotlin.verify
  22. @RunWith(AndroidJUnit4::class)
  23. class ContentResolverHelperIT {
  24. companion object {
  25. private val URI = Uri.parse("http://foo.bar")
  26. private val PROJECTION = arrayOf("Foo")
  27. private const val SELECTION = "selection"
  28. private const val SORT_COLUMN = "sortColumn"
  29. private const val SORT_DIRECTION = ContentResolverHelper.SORT_DIRECTION_ASCENDING
  30. private const val SORT_DIRECTION_INT = ContentResolver.QUERY_SORT_DIRECTION_ASCENDING
  31. private const val LIMIT = 10
  32. }
  33. @Mock
  34. lateinit var resolver: ContentResolver
  35. @Before
  36. fun setUp() {
  37. MockitoAnnotations.initMocks(this)
  38. }
  39. @Test
  40. @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
  41. fun contentResolver_onAndroid26_usesNewAPI() {
  42. ContentResolverHelper
  43. .queryResolver(resolver, URI, PROJECTION, SELECTION, null, SORT_COLUMN, SORT_DIRECTION, LIMIT)
  44. verify(resolver).query(
  45. eq(URI),
  46. eq(PROJECTION),
  47. argThat { bundle ->
  48. bundle.getString(ContentResolver.QUERY_ARG_SQL_SELECTION) == SELECTION &&
  49. bundle.getInt(ContentResolver.QUERY_ARG_LIMIT) == LIMIT &&
  50. bundle.getStringArray(ContentResolver.QUERY_ARG_SORT_COLUMNS)!!
  51. .contentEquals(arrayOf(SORT_COLUMN)) &&
  52. bundle.getInt(ContentResolver.QUERY_ARG_SORT_DIRECTION) == SORT_DIRECTION_INT
  53. },
  54. null
  55. )
  56. }
  57. @Test
  58. @SdkSuppress(maxSdkVersion = Build.VERSION_CODES.N_MR1)
  59. fun contentResolver_onAndroidBelow26_usesOldAPI() {
  60. ContentResolverHelper
  61. .queryResolver(resolver, URI, PROJECTION, SELECTION, null, SORT_COLUMN, SORT_DIRECTION, LIMIT)
  62. verify(resolver).query(
  63. eq(URI),
  64. eq(PROJECTION),
  65. eq(SELECTION),
  66. eq(null),
  67. eq("$SORT_COLUMN $SORT_DIRECTION LIMIT $LIMIT"),
  68. eq(null)
  69. )
  70. }
  71. }