From 1377e554df3576dd7bc946cf7e327efbdc0fbbd0 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Thu, 14 Mar 2024 14:05:48 +0800 Subject: [PATCH] Fix simOnboardingLabelSimImpl_showItem_show3Items Bug: 318310357 Test: unit test Change-Id: I189f71d49a866660a1055576b39841db09fa1520 --- .../spa/network/SimOnboardingLabelSimTest.kt | 49 +++++++++++++++---- 1 file changed, 39 insertions(+), 10 deletions(-) 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 44a5037e576..43270c2433d 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 @@ package com.android.settings.spa.network 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 @@ class SimOnboardingLabelSimTest { @get:Rule val composeTestRule = createComposeRule() - private val context: Context = ApplicationProvider.getApplicationContext() + private val mockSubscriptionManager = mock { + 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 { on { targetSubId }.doReturn(-1) on { targetSubInfo }.doReturn(null) @@ -85,7 +108,7 @@ class SimOnboardingLabelSimTest { composeTestRule.onNodeWithText(context.getString(R.string.sim_onboarding_next)) .performClick() - verify(nextAction) + verify(nextAction)() } @Test @@ -97,7 +120,7 @@ class SimOnboardingLabelSimTest { composeTestRule.onNodeWithText(context.getString(R.string.cancel)) .performClick() - verify(cancelAction) + verify(cancelAction)() } @Test @@ -120,15 +143,20 @@ class SimOnboardingLabelSimTest { } 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 @@ class SimOnboardingLabelSimTest { 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() } }