|
1 | 1 | package com.x8bit.bitwarden.data.autofill.accessibility.manager
|
2 | 2 |
|
3 |
| -import android.view.accessibility.AccessibilityManager |
4 |
| -import app.cash.turbine.test |
| 3 | +import android.content.Context |
| 4 | +import com.x8bit.bitwarden.data.autofill.accessibility.util.isAccessibilityServiceEnabled |
5 | 5 | import io.mockk.every
|
6 | 6 | import io.mockk.mockk
|
7 |
| -import io.mockk.slot |
| 7 | +import io.mockk.mockkStatic |
| 8 | +import io.mockk.unmockkAll |
8 | 9 | import kotlinx.coroutines.test.runTest
|
| 10 | +import org.junit.jupiter.api.AfterEach |
9 | 11 | import org.junit.jupiter.api.Assertions.assertFalse
|
10 | 12 | import org.junit.jupiter.api.Assertions.assertTrue
|
| 13 | +import org.junit.jupiter.api.BeforeEach |
11 | 14 | import org.junit.jupiter.api.Test
|
12 | 15 |
|
13 | 16 | class AccessibilityEnabledManagerTest {
|
| 17 | + private val context: Context = mockk() |
14 | 18 |
|
15 |
| - private val accessibilityStateChangeListener = |
16 |
| - slot<AccessibilityManager.AccessibilityStateChangeListener>() |
17 |
| - private val accessibilityManager = mockk<AccessibilityManager> { |
18 |
| - every { isEnabled } returns false |
19 |
| - every { |
20 |
| - addAccessibilityStateChangeListener(capture(accessibilityStateChangeListener)) |
21 |
| - } returns true |
| 19 | + private lateinit var accessibilityEnabledManager: AccessibilityEnabledManager |
| 20 | + |
| 21 | + @BeforeEach |
| 22 | + fun setUp() { |
| 23 | + mockkStatic(Context::isAccessibilityServiceEnabled) |
| 24 | + every { context.isAccessibilityServiceEnabled } returns false |
| 25 | + accessibilityEnabledManager = AccessibilityEnabledManagerImpl(context) |
22 | 26 | }
|
23 | 27 |
|
24 |
| - private val accessibilityEnabledManager: AccessibilityEnabledManager = |
25 |
| - AccessibilityEnabledManagerImpl( |
26 |
| - accessibilityManager = accessibilityManager, |
27 |
| - ) |
| 28 | + @AfterEach |
| 29 | + fun tearDown() { |
| 30 | + unmockkAll() |
| 31 | + } |
28 | 32 |
|
29 |
| - @Suppress("MaxLineLength") |
30 | 33 | @Test
|
31 |
| - fun `isAccessibilityEnabledStateFlow should emit whenever accessibilityStateChangeListener emits a unique value`() = |
| 34 | + fun `isAccessibilityEnabled returns false when setting does not contain our service`() = |
32 | 35 | runTest {
|
33 |
| - accessibilityEnabledManager.isAccessibilityEnabledStateFlow.test { |
34 |
| - assertFalse(awaitItem()) |
35 |
| - |
36 |
| - accessibilityStateChangeListener.captured.onAccessibilityStateChanged(true) |
37 |
| - assertTrue(awaitItem()) |
38 |
| - |
39 |
| - accessibilityStateChangeListener.captured.onAccessibilityStateChanged(true) |
40 |
| - expectNoEvents() |
| 36 | + every { context.isAccessibilityServiceEnabled } returns false |
| 37 | + accessibilityEnabledManager.refreshAccessibilityEnabledFromSettings() |
| 38 | + val result = accessibilityEnabledManager.isAccessibilityEnabledStateFlow.value |
| 39 | + assertFalse(result) |
| 40 | + } |
41 | 41 |
|
42 |
| - accessibilityStateChangeListener.captured.onAccessibilityStateChanged(false) |
43 |
| - assertFalse(awaitItem()) |
44 |
| - } |
| 42 | + @Test |
| 43 | + fun `isAccessibilityEnabled returns true when setting contains the defined service`() = |
| 44 | + runTest { |
| 45 | + every { context.isAccessibilityServiceEnabled } returns true |
| 46 | + accessibilityEnabledManager.refreshAccessibilityEnabledFromSettings() |
| 47 | + val result = accessibilityEnabledManager.isAccessibilityEnabledStateFlow.value |
| 48 | + assertTrue(result) |
45 | 49 | }
|
46 | 50 | }
|
0 commit comments