From 616fbc4f937e3bdff1b26abe13b0ec74f2c3c445 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Thu, 6 Feb 2025 17:19:22 +0000 Subject: [PATCH] Added unit tests for PhoneNumberPreferenceController visibility The tests check whether the item is available based on the result of the SubscriptionUtil.isSimHardwareVisible() method, which is the one allowing to check the value of the config_show_sim_info boolean flag on non-test runtime. Bug: 392808943 Flag: EXEMPT test only Test: atest PhoneNumberPreferenceControllerTest Change-Id: I2d1361ecef8a9c1083b4fd6fd4462c7815574827 --- .../PhoneNumberPreferenceControllerTest.kt | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/spa_unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.kt index 8524ef462fd..bde92507dc3 100644 --- a/tests/spa_unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.kt +++ b/tests/spa_unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.kt @@ -25,20 +25,27 @@ import androidx.preference.PreferenceCategory import androidx.preference.PreferenceManager import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.android.dx.mockito.inline.extended.ExtendedMockito import com.android.settings.R +import com.android.settings.core.BasePreferenceController +import com.android.settings.network.SubscriptionUtil import com.google.common.truth.Truth.assertThat +import org.junit.After import org.junit.Before import org.junit.Test import org.junit.runner.RunWith +import org.mockito.MockitoSession import org.mockito.kotlin.any import org.mockito.kotlin.doReturn import org.mockito.kotlin.mock import org.mockito.kotlin.spy import org.mockito.kotlin.verify import org.mockito.kotlin.whenever +import org.mockito.quality.Strictness @RunWith(AndroidJUnit4::class) class PhoneNumberPreferenceControllerTest { + private lateinit var mockSession: MockitoSession private val mockTelephonyManager = mock() private val mockSubscriptionManager = mock() @@ -61,6 +68,15 @@ class PhoneNumberPreferenceControllerTest { @Before fun setup() { + mockSession = + ExtendedMockito.mockitoSession() + .mockStatic(SubscriptionUtil::class.java) + .strictness(Strictness.LENIENT) + .startMocking() + + // By default, available + whenever(SubscriptionUtil.isSimHardwareVisible(context)).thenReturn(true) + preference.setKey(controller.preferenceKey) preference.isVisible = true preferenceScreen.addPreference(preference) @@ -70,6 +86,11 @@ class PhoneNumberPreferenceControllerTest { doReturn(secondPreference).whenever(controller).createNewPreference(context) } + @After + fun teardown() { + mockSession.finishMocking() + } + @Test fun displayPreference_multiSim_shouldAddSecondPreference() { whenever(mockTelephonyManager.phoneCount).thenReturn(2) @@ -132,4 +153,19 @@ class PhoneNumberPreferenceControllerTest { verify(preference).summary = context.getString(R.string.device_info_not_available) } + + @Test + fun getAvailabilityStatus_simHardwareVisible_displayed() { + // Use defaults from setup() + val availabilityStatus = controller.availabilityStatus + assertThat(availabilityStatus).isEqualTo(BasePreferenceController.AVAILABLE) + } + + @Test + fun getAvailabilityStatus_notSimHardwareVisible_notDisplayed() { + whenever(SubscriptionUtil.isSimHardwareVisible(context)).thenReturn(false) + + val availabilityStatus = controller.availabilityStatus + assertThat(availabilityStatus).isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE) + } }