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.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<TelephonyManager>()
private val mockSubscriptionManager = mock<SubscriptionManager>()
@@ -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)
}
}