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
This commit is contained in:
Aleksander Morgado
2025-02-06 17:19:22 +00:00
parent e8afedea91
commit 616fbc4f93

View File

@@ -25,20 +25,27 @@ import androidx.preference.PreferenceCategory
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import androidx.test.core.app.ApplicationProvider import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.dx.mockito.inline.extended.ExtendedMockito
import com.android.settings.R 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 com.google.common.truth.Truth.assertThat
import org.junit.After
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.MockitoSession
import org.mockito.kotlin.any import org.mockito.kotlin.any
import org.mockito.kotlin.doReturn import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock import org.mockito.kotlin.mock
import org.mockito.kotlin.spy import org.mockito.kotlin.spy
import org.mockito.kotlin.verify import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever import org.mockito.kotlin.whenever
import org.mockito.quality.Strictness
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)
class PhoneNumberPreferenceControllerTest { class PhoneNumberPreferenceControllerTest {
private lateinit var mockSession: MockitoSession
private val mockTelephonyManager = mock<TelephonyManager>() private val mockTelephonyManager = mock<TelephonyManager>()
private val mockSubscriptionManager = mock<SubscriptionManager>() private val mockSubscriptionManager = mock<SubscriptionManager>()
@@ -61,6 +68,15 @@ class PhoneNumberPreferenceControllerTest {
@Before @Before
fun setup() { 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.setKey(controller.preferenceKey)
preference.isVisible = true preference.isVisible = true
preferenceScreen.addPreference(preference) preferenceScreen.addPreference(preference)
@@ -70,6 +86,11 @@ class PhoneNumberPreferenceControllerTest {
doReturn(secondPreference).whenever(controller).createNewPreference(context) doReturn(secondPreference).whenever(controller).createNewPreference(context)
} }
@After
fun teardown() {
mockSession.finishMocking()
}
@Test @Test
fun displayPreference_multiSim_shouldAddSecondPreference() { fun displayPreference_multiSim_shouldAddSecondPreference() {
whenever(mockTelephonyManager.phoneCount).thenReturn(2) whenever(mockTelephonyManager.phoneCount).thenReturn(2)
@@ -132,4 +153,19 @@ class PhoneNumberPreferenceControllerTest {
verify(preference).summary = context.getString(R.string.device_info_not_available) 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)
}
} }