Fix simOnboardingLabelSimImpl_showItem_show3Items
Bug: 318310357
Test: unit test
Change-Id: I189f71d49a866660a1055576b39841db09fa1520
diff --git a/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingLabelSimTest.kt b/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingLabelSimTest.kt
index 44a5037..43270c2 100644
--- a/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingLabelSimTest.kt
+++ b/tests/spa_unit/src/com/android/settings/spa/network/SimOnboardingLabelSimTest.kt
@@ -18,19 +18,29 @@
import android.content.Context
import android.telephony.SubscriptionInfo
+import android.telephony.SubscriptionManager
+import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.compose.ui.test.assertIsDisplayed
+import androidx.compose.ui.test.hasText
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
+import androidx.lifecycle.testing.TestLifecycleOwner
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.R
import com.android.settings.network.SimOnboardingService
+import com.android.settingslib.spa.testutils.waitUntilExists
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doAnswer
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
+import org.mockito.kotlin.spy
import org.mockito.kotlin.stub
import org.mockito.kotlin.verify
@@ -39,7 +49,20 @@
@get:Rule
val composeTestRule = createComposeRule()
- private val context: Context = ApplicationProvider.getApplicationContext()
+ private val mockSubscriptionManager = mock<SubscriptionManager> {
+ on { addOnSubscriptionsChangedListener(any(), any()) } doAnswer {
+ val listener = it.arguments[1] as SubscriptionManager.OnSubscriptionsChangedListener
+ listener.onSubscriptionsChanged()
+ }
+ on { getPhoneNumber(SUB_ID_1) } doReturn NUMBER_1
+ on { getPhoneNumber(SUB_ID_2) } doReturn NUMBER_2
+ on { getPhoneNumber(SUB_ID_3) } doReturn NUMBER_3
+ }
+
+ private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
+ on { getSystemService(SubscriptionManager::class.java) } doReturn mockSubscriptionManager
+ }
+
private var mockSimOnboardingService = mock<SimOnboardingService> {
on { targetSubId }.doReturn(-1)
on { targetSubInfo }.doReturn(null)
@@ -85,7 +108,7 @@
composeTestRule.onNodeWithText(context.getString(R.string.sim_onboarding_next))
.performClick()
- verify(nextAction)
+ verify(nextAction)()
}
@Test
@@ -97,7 +120,7 @@
composeTestRule.onNodeWithText(context.getString(R.string.cancel))
.performClick()
- verify(cancelAction)
+ verify(cancelAction)()
}
@Test
@@ -120,15 +143,20 @@
}
composeTestRule.setContent {
- SimOnboardingLabelSimImpl(nextAction, cancelAction, mockSimOnboardingService)
+ CompositionLocalProvider(
+ LocalContext provides context,
+ LocalLifecycleOwner provides TestLifecycleOwner(),
+ ) {
+ SimOnboardingLabelSimImpl(nextAction, cancelAction, mockSimOnboardingService)
+ }
}
composeTestRule.onNodeWithText(DISPLAY_NAME_1).assertIsDisplayed()
- composeTestRule.onNodeWithText(NUMBER_1).assertIsDisplayed()
+ composeTestRule.waitUntilExists(hasText(NUMBER_1))
composeTestRule.onNodeWithText(DISPLAY_NAME_2).assertIsDisplayed()
- composeTestRule.onNodeWithText(NUMBER_2).assertIsDisplayed()
+ composeTestRule.waitUntilExists(hasText(NUMBER_2))
composeTestRule.onNodeWithText(DISPLAY_NAME_3).assertIsDisplayed()
- composeTestRule.onNodeWithText(NUMBER_3).assertIsDisplayed()
+ composeTestRule.waitUntilExists(hasText(NUMBER_3))
}
@Test
@@ -173,24 +201,25 @@
const val NUMBER_1 = "000000001"
const val NUMBER_2 = "000000002"
const val NUMBER_3 = "000000003"
+ const val MCC = "310"
const val PRIMARY_SIM_ASK_EVERY_TIME = -1
val SUB_INFO_1: SubscriptionInfo = SubscriptionInfo.Builder().apply {
setId(SUB_ID_1)
setDisplayName(DISPLAY_NAME_1)
- setNumber(NUMBER_1)
+ setMcc(MCC)
}.build()
val SUB_INFO_2: SubscriptionInfo = SubscriptionInfo.Builder().apply {
setId(SUB_ID_2)
setDisplayName(DISPLAY_NAME_2)
- setNumber(NUMBER_2)
+ setMcc(MCC)
}.build()
val SUB_INFO_3: SubscriptionInfo = SubscriptionInfo.Builder().apply {
setId(SUB_ID_3)
setDisplayName(DISPLAY_NAME_3)
- setNumber(NUMBER_3)
+ setMcc(MCC)
}.build()
}
}