1 /*
2  * Copyright (C) 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.systemui.education.domain.ui.view
18 
19 import android.testing.TestableLooper
20 import android.view.accessibility.AccessibilityEvent
21 import android.view.accessibility.AccessibilityManager
22 import androidx.test.ext.junit.rules.ActivityScenarioRule
23 import androidx.test.ext.junit.runners.AndroidJUnit4
24 import androidx.test.filters.SmallTest
25 import com.android.systemui.SysuiTestCase
26 import com.android.systemui.activity.EmptyTestActivity
27 import com.android.systemui.education.ui.view.ContextualEduDialog
28 import com.android.systemui.education.ui.viewmodel.ContextualEduToastViewModel
29 import kotlin.test.assertEquals
30 import org.junit.Before
31 import org.junit.Rule
32 import org.junit.Test
33 import org.junit.runner.RunWith
34 import org.mockito.ArgumentCaptor
35 import org.mockito.Mock
36 import org.mockito.junit.MockitoJUnit
37 import org.mockito.kotlin.firstValue
38 import org.mockito.kotlin.verify
39 import org.mockito.kotlin.whenever
40 
41 @SmallTest
42 @RunWith(AndroidJUnit4::class)
43 @TestableLooper.RunWithLooper
44 class ContextualEduDialogTest : SysuiTestCase() {
45     @Rule
46     @JvmField
47     val activityRule: ActivityScenarioRule<EmptyTestActivity> =
48         ActivityScenarioRule(EmptyTestActivity::class.java)
49     @get:Rule val mockitoRule = MockitoJUnit.rule()
50 
51     @Mock private lateinit var accessibilityManager: AccessibilityManager
52     private lateinit var underTest: ContextualEduDialog
53 
54     @Before
setUpnull55     fun setUp() {
56         whenever(accessibilityManager.isEnabled).thenReturn(true)
57     }
58 
59     @Test
sendAccessibilityInfonull60     fun sendAccessibilityInfo() {
61         val message = "Testing message"
62         val viewModel = ContextualEduToastViewModel(message, icon = 0, userId = 0)
63         activityRule.scenario.onActivity {
64             underTest = ContextualEduDialog(context, viewModel, accessibilityManager)
65             underTest.show()
66         }
67 
68         val eventCaptor = ArgumentCaptor.forClass(AccessibilityEvent::class.java)
69         verify(accessibilityManager).sendAccessibilityEvent(eventCaptor.capture())
70         assertEquals(message, eventCaptor.firstValue.text[0])
71     }
72 }
73