@@ -5,10 +5,12 @@ import io.github.sds100.keymapper.base.repositories.FakePreferenceRepository
55import io.github.sds100.keymapper.base.system.inputmethod.FakeInputMethodAdapter
66import io.github.sds100.keymapper.base.utils.TestBuildConfigProvider
77import io.github.sds100.keymapper.common.utils.KMError
8+ import io.github.sds100.keymapper.common.utils.Success
89import io.github.sds100.keymapper.data.Keys
910import io.github.sds100.keymapper.sysbridge.manager.SystemBridgeConnectionManager
1011import io.github.sds100.keymapper.sysbridge.manager.SystemBridgeConnectionState
1112import io.github.sds100.keymapper.sysbridge.utils.SystemBridgeError
13+ import io.github.sds100.keymapper.system.apps.PackageManagerAdapter
1214import io.github.sds100.keymapper.system.inputmethod.ImeInfo
1315import io.github.sds100.keymapper.system.permissions.Permission
1416import io.github.sds100.keymapper.system.permissions.PermissionAdapter
@@ -59,16 +61,18 @@ class GetActionErrorUseCaseTest {
5961 private lateinit var mockPermissionAdapter: PermissionAdapter
6062 private lateinit var fakePreferenceRepository: FakePreferenceRepository
6163 private lateinit var mockSystemBridgeConnectionManager: SystemBridgeConnectionManager
64+ private lateinit var mockPackageManagerAdapter: PackageManagerAdapter
6265
6366 @Before
6467 fun init () {
6568 fakeInputMethodAdapter = FakeInputMethodAdapter ()
6669 mockPermissionAdapter = mock()
6770 fakePreferenceRepository = FakePreferenceRepository ()
6871 mockSystemBridgeConnectionManager = mock()
72+ mockPackageManagerAdapter = mock()
6973
7074 useCase = GetActionErrorUseCaseImpl (
71- packageManagerAdapter = mock() ,
75+ packageManagerAdapter = mockPackageManagerAdapter ,
7276 inputMethodAdapter = fakeInputMethodAdapter,
7377 switchImeInterface = mock(),
7478 permissionAdapter = mockPermissionAdapter,
@@ -300,4 +304,32 @@ class GetActionErrorUseCaseTest {
300304
301305 assertThat(errors[0 ], `is `(KMError .KeyEventActionError (SystemBridgeError .Disconnected )))
302306 }
307+
308+ @Test
309+ fun `show an error for device assistant action when no device assistant is installed` () =
310+ testScope.runTest {
311+ whenever(
312+ mockPackageManagerAdapter.getDeviceAssistantPackage(),
313+ ).thenReturn(KMError .NoDeviceAssistant )
314+
315+ val action = ActionData .DeviceAssistant
316+
317+ val errors = useCase.actionErrorSnapshot.first().getErrors(listOf (action))
318+
319+ assertThat(errors[action], `is `(KMError .NoDeviceAssistant ))
320+ }
321+
322+ @Test
323+ fun `do not show an error for device assistant action when a device assistant is installed` () =
324+ testScope.runTest {
325+ whenever(
326+ mockPackageManagerAdapter.getDeviceAssistantPackage(),
327+ ).thenReturn(Success (" com.google.android.googlequicksearchbox" ))
328+
329+ val action = ActionData .DeviceAssistant
330+
331+ val errors = useCase.actionErrorSnapshot.first().getErrors(listOf (action))
332+
333+ assertThat(errors[action], nullValue())
334+ }
303335}
0 commit comments