OSDN Git Service

Merge "Fix search indexing for encryption_and_credential page" into oc-dr1-dev
[android-x86/packages-apps-Settings.git] / tests / robotests / src / com / android / settings / applications / defaultapps / DefaultHomePreferenceControllerTest.java
1 /*
2  * Copyright (C) 2017 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.applications.defaultapps;
18
19
20 import android.content.ComponentName;
21 import android.content.Context;
22 import android.os.UserManager;
23 import android.support.v7.preference.Preference;
24
25 import com.android.settings.testutils.SettingsRobolectricTestRunner;
26 import com.android.settings.TestConfig;
27 import com.android.settings.applications.PackageManagerWrapper;
28
29 import org.junit.Before;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.mockito.Answers;
33 import org.mockito.Mock;
34 import org.mockito.MockitoAnnotations;
35 import org.robolectric.annotation.Config;
36 import org.robolectric.util.ReflectionHelpers;
37
38 import static com.google.common.truth.Truth.assertThat;
39 import static org.mockito.Matchers.anyList;
40 import static org.mockito.Mockito.doReturn;
41 import static org.mockito.Mockito.mock;
42 import static org.mockito.Mockito.spy;
43 import static org.mockito.Mockito.verify;
44 import static org.mockito.Mockito.when;
45
46 @RunWith(SettingsRobolectricTestRunner.class)
47 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
48 public class DefaultHomePreferenceControllerTest {
49
50     @Mock
51     private Context mContext;
52     @Mock
53     private UserManager mUserManager;
54     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
55     private PackageManagerWrapper mPackageManager;
56
57     private DefaultHomePreferenceController mController;
58
59     @Before
60     public void setUp() {
61         MockitoAnnotations.initMocks(this);
62         when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
63
64         mController = spy(new DefaultHomePreferenceController(mContext));
65         ReflectionHelpers.setField(mController, "mPackageManager", mPackageManager);
66     }
67
68     @Test
69     public void isAlwaysAvailable() {
70         assertThat(mController.isAvailable()).isTrue();
71     }
72
73     @Test
74     public void getDefaultApp_shouldGetDefaultBrowserPackage() {
75         assertThat(mController.getDefaultAppInfo()).isNotNull();
76
77         verify(mPackageManager).getHomeActivities(anyList());
78     }
79
80     @Test
81     public void updateState_noDefaultApp_shouldAskPackageManagerForOnlyApp() {
82         doReturn(null).when(mController).getDefaultAppInfo();
83
84         mController.updateState(mock(Preference.class));
85
86         verify(mPackageManager).getHomeActivities(anyList());
87     }
88
89     @Test
90     public void testIsHomeDefault_noDefaultSet_shouldReturnTrue() {
91         when(mPackageManager.getHomeActivities(anyList())).thenReturn(null);
92         assertThat(DefaultHomePreferenceController.isHomeDefault("test.pkg", mPackageManager))
93                 .isTrue();
94     }
95
96     @Test
97     public void testIsHomeDefault_defaultSetToPkg_shouldReturnTrue() {
98         final String pkgName = "test.pkg";
99         final ComponentName defaultHome = new ComponentName(pkgName, "class");
100
101         when(mPackageManager.getHomeActivities(anyList())).thenReturn(defaultHome);
102
103         assertThat(DefaultHomePreferenceController.isHomeDefault(pkgName, mPackageManager))
104                 .isTrue();
105     }
106
107     @Test
108     public void testIsHomeDefault_defaultSetToOtherPkg_shouldReturnFalse() {
109         final String pkgName = "test.pkg";
110         final ComponentName defaultHome = new ComponentName("not" + pkgName, "class");
111
112         when(mPackageManager.getHomeActivities(anyList())).thenReturn(defaultHome);
113
114         assertThat(DefaultHomePreferenceController.isHomeDefault(pkgName, mPackageManager))
115                 .isFalse();
116     }
117 }