summaryrefslogtreecommitdiff
path: root/apk/tests/src/com/android/healthconnect/controller/tests/permissiontypes/api/LoadPriorityListUseCaseTest.kt
diff options
context:
space:
mode:
Diffstat (limited to 'apk/tests/src/com/android/healthconnect/controller/tests/permissiontypes/api/LoadPriorityListUseCaseTest.kt')
-rw-r--r--apk/tests/src/com/android/healthconnect/controller/tests/permissiontypes/api/LoadPriorityListUseCaseTest.kt81
1 files changed, 81 insertions, 0 deletions
diff --git a/apk/tests/src/com/android/healthconnect/controller/tests/permissiontypes/api/LoadPriorityListUseCaseTest.kt b/apk/tests/src/com/android/healthconnect/controller/tests/permissiontypes/api/LoadPriorityListUseCaseTest.kt
new file mode 100644
index 00000000..75dbf0bd
--- /dev/null
+++ b/apk/tests/src/com/android/healthconnect/controller/tests/permissiontypes/api/LoadPriorityListUseCaseTest.kt
@@ -0,0 +1,81 @@
+package com.android.healthconnect.controller.tests.permissiontypes.api
+
+import android.content.Context
+import android.health.connect.FetchDataOriginsPriorityOrderResponse
+import android.health.connect.HealthConnectManager
+import android.health.connect.HealthDataCategory
+import android.os.OutcomeReceiver
+import androidx.test.platform.app.InstrumentationRegistry
+import com.android.healthconnect.controller.permissiontypes.api.LoadPriorityListUseCase
+import com.android.healthconnect.controller.shared.app.AppInfoReader
+import com.android.healthconnect.controller.tests.utils.CoroutineTestRule
+import com.android.healthconnect.controller.tests.utils.TEST_APP_PACKAGE_NAME
+import com.android.healthconnect.controller.tests.utils.TEST_APP_PACKAGE_NAME_2
+import com.android.healthconnect.controller.tests.utils.getDataOrigin
+import com.google.common.truth.Truth
+import dagger.hilt.android.testing.HiltAndroidRule
+import dagger.hilt.android.testing.HiltAndroidTest
+import javax.inject.Inject
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.mockito.Matchers
+import org.mockito.Mockito
+import org.mockito.invocation.InvocationOnMock
+
+@ExperimentalCoroutinesApi
+@HiltAndroidTest
+class LoadPriorityListUseCaseTest {
+ @get:Rule val hiltRule = HiltAndroidRule(this)
+ @get:Rule val coroutineTestRule = CoroutineTestRule()
+
+ private val manager: HealthConnectManager = Mockito.mock(HealthConnectManager::class.java)
+ @Inject lateinit var appInfoReader: AppInfoReader
+ private lateinit var usecase: LoadPriorityListUseCase
+ private lateinit var context: Context
+
+ @Before
+ fun setup() {
+ hiltRule.inject()
+ context = InstrumentationRegistry.getInstrumentation().context
+ usecase = LoadPriorityListUseCase(manager, appInfoReader, Dispatchers.Main)
+ }
+
+ @Test
+ fun loadPriorityList_listOfAppsInPriorityListReturnedCorrectly() = runTest {
+ val dataOriginsPriorityOrderResponse =
+ FetchDataOriginsPriorityOrderResponse(
+ mutableListOf(
+ getDataOrigin(TEST_APP_PACKAGE_NAME), getDataOrigin(TEST_APP_PACKAGE_NAME_2)))
+
+ Mockito.doAnswer(prepareAnswer(dataOriginsPriorityOrderResponse))
+ .`when`(manager)
+ .fetchDataOriginsPriorityOrder(
+ Matchers.eq(HealthDataCategory.ACTIVITY), Matchers.any(), Matchers.any())
+
+ val loadedAppsPriorityList = usecase.execute(HealthDataCategory.ACTIVITY)
+
+ Truth.assertThat(loadedAppsPriorityList.size).isEqualTo(2)
+
+ Truth.assertThat(loadedAppsPriorityList)
+ .contains(appInfoReader.getAppMetadata(TEST_APP_PACKAGE_NAME))
+
+ Truth.assertThat(loadedAppsPriorityList)
+ .contains(appInfoReader.getAppMetadata(TEST_APP_PACKAGE_NAME_2))
+ }
+
+ private fun prepareAnswer(
+ fetchDataOriginsPriorityOrderResponse: FetchDataOriginsPriorityOrderResponse
+ ): (InvocationOnMock) -> Nothing? {
+ val answer = { args: InvocationOnMock ->
+ val receiver =
+ args.arguments[2] as OutcomeReceiver<FetchDataOriginsPriorityOrderResponse, *>
+ receiver.onResult(fetchDataOriginsPriorityOrderResponse)
+ null
+ }
+ return answer
+ }
+}