• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 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.settings.accessibility;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 
21 import static org.mockito.Mockito.spy;
22 import static org.mockito.Mockito.when;
23 import static org.robolectric.Shadows.shadowOf;
24 
25 import android.content.DialogInterface;
26 import android.content.Intent;
27 import android.os.Bundle;
28 
29 import androidx.appcompat.app.AlertDialog;
30 import androidx.fragment.app.FragmentActivity;
31 
32 import com.android.settings.SettingsActivity;
33 import com.android.settings.bluetooth.BluetoothPairingDetail;
34 import com.android.settings.bluetooth.HearingAidPairingDialogFragment;
35 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
36 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
37 import com.android.settingslib.bluetooth.HearingAidProfile;
38 
39 import org.junit.Before;
40 import org.junit.Rule;
41 import org.junit.Test;
42 import org.junit.runner.RunWith;
43 import org.mockito.Mock;
44 import org.mockito.junit.MockitoJUnit;
45 import org.mockito.junit.MockitoRule;
46 import org.robolectric.Robolectric;
47 import org.robolectric.RobolectricTestRunner;
48 import org.robolectric.annotation.Config;
49 
50 /** Tests for {@link HearingAidPairingDialogFragment}. */
51 @RunWith(RobolectricTestRunner.class)
52 @Config(shadows = ShadowAlertDialogCompat.class)
53 public class HearingAidPairingDialogFragmentTest {
54 
55     @Rule
56     public final MockitoRule mockito = MockitoJUnit.rule();
57 
58     private static final String KEY_CACHED_DEVICE_SIDE = "cached_device_side";
59 
60     @Mock
61     private CachedBluetoothDevice mCachedBluetoothDevice;
62     private FragmentActivity mActivity;
63     private HearingAidPairingDialogFragment mFragment;
64 
65     @Before
setUp()66     public void setUp() {
67         mFragment = spy(HearingAidPairingDialogFragment.newInstance(mCachedBluetoothDevice));
68         mActivity = Robolectric.setupActivity(FragmentActivity.class);
69         when(mFragment.getActivity()).thenReturn(mActivity);
70     }
71 
72     @Test
newInstance_deviceSideRight_argumentSideRight()73     public void newInstance_deviceSideRight_argumentSideRight() {
74         when(mCachedBluetoothDevice.getDeviceSide()).thenReturn(
75                 HearingAidProfile.DeviceSide.SIDE_RIGHT);
76 
77         mFragment = HearingAidPairingDialogFragment.newInstance(mCachedBluetoothDevice);
78 
79         final Bundle bundle = mFragment.getArguments();
80         assertThat(bundle.getInt(KEY_CACHED_DEVICE_SIDE)).isEqualTo(
81                 HearingAidProfile.DeviceSide.SIDE_RIGHT);
82     }
83 
84     @Test
dialogPositiveButtonClick_intentToExpectedClass()85     public void dialogPositiveButtonClick_intentToExpectedClass() {
86         final AlertDialog dialog = (AlertDialog) mFragment.onCreateDialog(Bundle.EMPTY);
87         dialog.show();
88 
89         dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
90 
91         final Intent intent = shadowOf(mActivity).getNextStartedActivity();
92         assertThat(intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
93                 .isEqualTo(BluetoothPairingDetail.class.getName());
94     }
95 
96     @Test
dialogNegativeButtonClick_dismissDialog()97     public void dialogNegativeButtonClick_dismissDialog() {
98         final AlertDialog dialog = (AlertDialog) mFragment.onCreateDialog(Bundle.EMPTY);
99         dialog.show();
100 
101         dialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();
102 
103         assertThat(dialog.isShowing()).isFalse();
104     }
105 }
106