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()
     }
 }