From b9770d6637c540ec1b93088803cce1c77e9d2fc7 Mon Sep 17 00:00:00 2001 From: jeffreyhuang Date: Tue, 5 Dec 2017 14:08:13 -0800 Subject: [PATCH] Fix broken test in sdk 26 - Create a new shadow because ImsManager is no longer hidden in sdk 26 Test: make RunSettingsRoboTests -j40 Change-Id: I9f21bd3a9e0c08d1f2302dcff8fe2f6ebb256de2 --- .../src/com/android/ims/ImsManager.java | 44 ------------ .../WifiCallingPreferenceControllerTest.java | 70 +++++++++++++------ 2 files changed, 48 insertions(+), 66 deletions(-) delete mode 100644 tests/robotests/src/com/android/ims/ImsManager.java diff --git a/tests/robotests/src/com/android/ims/ImsManager.java b/tests/robotests/src/com/android/ims/ImsManager.java deleted file mode 100644 index a4d97b5a64b..00000000000 --- a/tests/robotests/src/com/android/ims/ImsManager.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.ims; - -import android.content.Context; - -/** - * Fake test class to com.android.ims.ImsManager - */ -public class ImsManager { - - public static boolean wfcEnabledByPlatform; - public static boolean wfcProvisioned; - - public static boolean isWfcEnabledByPlatform(Context context) { - return wfcEnabledByPlatform; - } - - public static boolean isWfcProvisionedOnDevice(Context context) { - return wfcProvisioned; - } - - public static int getWfcMode(Context context, boolean roaming) { - return 0; - } - - public static boolean isWfcEnabledByUser(Context context) { - return false; - } -} diff --git a/tests/robotests/src/com/android/settings/network/WifiCallingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/WifiCallingPreferenceControllerTest.java index 4d6a0be5098..bb1e67e5901 100644 --- a/tests/robotests/src/com/android/settings/network/WifiCallingPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/WifiCallingPreferenceControllerTest.java @@ -16,56 +16,59 @@ package com.android.settings.network; +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Matchers.anyInt; +import static org.mockito.Mockito.verify; + import android.content.Context; import android.support.v7.preference.Preference; -import android.telephony.CarrierConfigManager; -import android.telephony.TelephonyManager; import com.android.ims.ImsManager; -import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; +import com.android.settings.network.WifiCallingPreferenceControllerTest.ShadowImsManager; +import com.android.settings.testutils.SettingsRobolectricTestRunner; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; - -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Matchers.anyInt; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; @RunWith(SettingsRobolectricTestRunner.class) -@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION_O) +@Config(manifest = TestConfig.MANIFEST_PATH, + sdk = TestConfig.SDK_VERSION_O, + shadows = {ShadowImsManager.class}) public class WifiCallingPreferenceControllerTest { - @Mock - private Context mContext; - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private CarrierConfigManager mCarrierConfigManager; - @Mock - private TelephonyManager mTelephonyManager; @Mock private Preference mPreference; + + private Context mContext; private WifiCallingPreferenceController mController; @Before public void setUp() { + mContext = RuntimeEnvironment.application; MockitoAnnotations.initMocks(this); - when(mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE)) - .thenReturn(mCarrierConfigManager); - when(mContext.getSystemService(Context.TELEPHONY_SERVICE)) - .thenReturn(mTelephonyManager); + mController = new WifiCallingPreferenceController(mContext); } + @After + public void teardown() { + ShadowImsManager.reset(); + } + @Test public void isAvailable_platformEnabledAndProvisioned_shouldReturnTrue() { - ImsManager.wfcEnabledByPlatform = true; - ImsManager.wfcProvisioned = true; + ShadowImsManager.wfcProvisioned = true; + ShadowImsManager.wfcEnabledByPlatform = true; assertThat(mController.isAvailable()).isTrue(); } @@ -76,4 +79,27 @@ public class WifiCallingPreferenceControllerTest { verify(mPreference).setSummary(anyInt()); } + + @Implements(ImsManager.class) + public static class ShadowImsManager { + + public static boolean wfcEnabledByPlatform; + public static boolean wfcProvisioned; + + public static void reset() { + wfcEnabledByPlatform = false; + wfcProvisioned = false; + } + + @Implementation + public static boolean isWfcEnabledByPlatform(Context context) { + return wfcEnabledByPlatform; + } + + @Implementation + public static boolean isWfcProvisionedOnDevice(Context context) { + return wfcProvisioned; + } + } + }