135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang/*
235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * Copyright (C) 2017 The Android Open Source Project
335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang *
435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License");
535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * you may not use this file except in compliance with the License.
635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * You may obtain a copy of the License at
735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang *
835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang *      http://www.apache.org/licenses/LICENSE-2.0
935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang *
1035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * Unless required by applicable law or agreed to in writing, software
1135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS,
1235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * See the License for the specific language governing permissions and
1435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * limitations under the License.
1535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang */
1635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
1735692cf439fe1067ea742174033f5748a08a5d66Fan Zhangpackage com.android.settings.applications.defaultapps;
1835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
1935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
2035692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport android.app.Activity;
2135692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport android.content.Context;
2235692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport android.os.UserManager;
2335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
249f1e911759dc6fedaac9fa65afb79f6a93022bf4Andrew Sappersteinimport com.android.settings.testutils.SettingsRobolectricTestRunner;
2535692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport com.android.settings.TestConfig;
2635692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport com.android.settings.applications.PackageManagerWrapper;
2735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
2835692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.junit.Before;
2935692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.junit.Test;
3035692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.junit.runner.RunWith;
3135692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.mockito.Answers;
3235692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.mockito.Mock;
3335692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.mockito.MockitoAnnotations;
3435692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.robolectric.RuntimeEnvironment;
3535692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.robolectric.annotation.Config;
3635692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport org.robolectric.util.ReflectionHelpers;
3735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
3835692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Matchers.any;
3935692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Matchers.anyInt;
4035692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Matchers.eq;
4135692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Mockito.doReturn;
4235692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Mockito.spy;
4335692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Mockito.verify;
4435692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport static org.mockito.Mockito.when;
4535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
4635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang@RunWith(SettingsRobolectricTestRunner.class)
4735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
4835692cf439fe1067ea742174033f5748a08a5d66Fan Zhangpublic class DefaultPhonePickerTest {
4935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
5035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    private static final String TEST_APP_KEY = "com.android.settings/PickerTest";
5135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
5235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
5335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    private Activity mActivity;
5435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    @Mock
5535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    private UserManager mUserManager;
5635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    @Mock
5735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    private DefaultPhonePicker.DefaultKeyUpdater mDefaultKeyUpdater;
5835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    @Mock
5935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    private PackageManagerWrapper mPackageManager;
6035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
6135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    private DefaultPhonePicker mPicker;
6235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
6335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    @Before
6435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    public void setUp() {
6535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang        MockitoAnnotations.initMocks(this);
6635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang        when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
6735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang        when(mActivity.getSystemService(Context.TELECOM_SERVICE)).thenReturn(null);
6835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang        mPicker = spy(new DefaultPhonePicker());
6935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang        mPicker.onAttach((Context) mActivity);
7035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
7135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang        ReflectionHelpers.setField(mPicker, "mPm", mPackageManager);
7235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang        ReflectionHelpers.setField(mPicker, "mDefaultKeyUpdater", mDefaultKeyUpdater);
7335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang        doReturn(RuntimeEnvironment.application).when(mPicker).getContext();
7435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    }
7535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
7635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    @Test
7735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    public void getSystemDefaultPackage_shouldAskDefaultKeyUpdater() {
78a278962dbc545f69ca3712159d438f2e50dab0a5Fan Zhang        mPicker.getSystemDefaultKey();
7935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
8035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang        verify(mDefaultKeyUpdater).getSystemDialerPackage();
8135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    }
8235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
8335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    @Test
8435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    public void setDefaultAppKey_shouldUpdateDefault() {
85a278962dbc545f69ca3712159d438f2e50dab0a5Fan Zhang        mPicker.setDefaultKey(TEST_APP_KEY);
8635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
8735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang        verify(mDefaultKeyUpdater).setDefaultDialerApplication(
8835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang                any(Context.class), eq(TEST_APP_KEY), anyInt());
8935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    }
9035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang
9135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    @Test
9235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    public void getDefaultAppKey_shouldReturnDefault() {
93a278962dbc545f69ca3712159d438f2e50dab0a5Fan Zhang        mPicker.getDefaultKey();
9435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang        verify(mDefaultKeyUpdater).getDefaultDialerApplication(any(Context.class), anyInt());
9535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang    }
9635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang}
97