• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2018 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 package com.android.settings.wifi;
17 
18 import static com.google.common.truth.Truth.assertThat;
19 
20 import static org.mockito.ArgumentMatchers.anyInt;
21 import static org.mockito.ArgumentMatchers.eq;
22 import static org.mockito.ArgumentMatchers.isNull;
23 import static org.mockito.ArgumentMatchers.nullable;
24 import static org.mockito.Mockito.doReturn;
25 import static org.mockito.Mockito.mock;
26 import static org.mockito.Mockito.never;
27 import static org.mockito.Mockito.spy;
28 import static org.mockito.Mockito.times;
29 import static org.mockito.Mockito.verify;
30 
31 import android.app.AlertDialog;
32 import android.app.Fragment;
33 import android.content.ContentResolver;
34 import android.content.Context;
35 import android.content.DialogInterface;
36 import android.provider.Settings;
37 
38 import com.android.settings.R;
39 import com.android.settings.testutils.SettingsRobolectricTestRunner;
40 import com.android.settings.testutils.shadow.SettingsShadowResources;
41 
42 import org.junit.After;
43 import org.junit.Before;
44 import org.junit.Test;
45 import org.junit.runner.RunWith;
46 import org.mockito.Mock;
47 import org.mockito.MockitoAnnotations;
48 import org.robolectric.RuntimeEnvironment;
49 
50 @RunWith(SettingsRobolectricTestRunner.class)
51 public class WifiScanningRequiredFragmentTest {
52 
53     private WifiScanningRequiredFragment mFragment;
54     private Context mContext;
55     private ContentResolver mResolver;
56     @Mock
57     Fragment mCallbackFragment;
58     @Mock
59     AlertDialog.Builder mBuilder;
60 
61     @Before
setUp()62     public void setUp() {
63         MockitoAnnotations.initMocks(this);
64         mFragment = spy(WifiScanningRequiredFragment.newInstance());
65         mContext = RuntimeEnvironment.application;
66         mResolver = mContext.getContentResolver();
67 
68         doReturn(mContext).when(mFragment).getContext();
69         mFragment.setTargetFragment(mCallbackFragment, 1000);
70         Settings.Global.putInt(mResolver, Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0);
71     }
72 
73     @After
tearDown()74     public void tearDown() {
75         SettingsShadowResources.reset();
76     }
77 
78     @Test
onClick_positiveButtonSetsWifiScanningOn()79     public void onClick_positiveButtonSetsWifiScanningOn()
80             throws Settings.SettingNotFoundException {
81         mFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
82 
83         assertThat(Settings.Global.getInt(mResolver, Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE))
84                 .isEqualTo(1);
85     }
86 
87     @Test
onClick_positiveButtonCallsBackToActivity()88     public void onClick_positiveButtonCallsBackToActivity() {
89         mFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
90 
91         verify(mCallbackFragment).onActivityResult(anyInt(), anyInt(), isNull());
92     }
93 
94     @Test
learnMore_launchesHelpWhenIntentFound()95     public void learnMore_launchesHelpWhenIntentFound() {
96         Context context = mock(Context.class);
97         doReturn(context).when(mFragment).getContext();
98         doReturn("").when(context).getString(eq(R.string.help_uri_wifi_scanning_required));
99         mFragment.addButtonIfNeeded(mBuilder);
100         verify(mBuilder, never())
101                 .setNeutralButton(anyInt(), nullable(DialogInterface.OnClickListener.class));
102 
103         doReturn("help").when(context).getString(eq(R.string.help_uri_wifi_scanning_required));
104         mFragment.addButtonIfNeeded(mBuilder);
105         verify(mBuilder, times(1))
106                 .setNeutralButton(anyInt(), nullable(DialogInterface.OnClickListener.class));
107     }
108 }
109