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