Fix SubscriptionInfoListViewModelTest

Fix: 329160337
Test: unit test
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:10f5bdabb468b806d634a2b9061b9908b2e8d430)
Merged-In: I7a3d27cb53c930a56ab0f0896b545807bf4f9dc0
Change-Id: I7a3d27cb53c930a56ab0f0896b545807bf4f9dc0
This commit is contained in:
Chaohui Wang
2024-06-18 06:59:56 +00:00
committed by Android Build Cherrypicker Worker
parent 76d7864bc6
commit e01855dcdb

View File

@@ -23,12 +23,9 @@ import android.content.Context
import android.platform.test.flag.junit.SetFlagsRule import android.platform.test.flag.junit.SetFlagsRule
import android.telephony.SubscriptionInfo import android.telephony.SubscriptionInfo
import android.telephony.SubscriptionManager import android.telephony.SubscriptionManager
import android.telephony.TelephonyCallback
import android.telephony.TelephonyManager
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.internal.telephony.flags.Flags import com.android.internal.telephony.flags.Flags
import com.android.settings.network.telephony.CallStateFlowTest
import com.android.settingslib.spa.testutils.toListWithTimeout import com.android.settingslib.spa.testutils.toListWithTimeout
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.async import kotlinx.coroutines.async
@@ -42,7 +39,6 @@ import org.mockito.kotlin.doAnswer
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.stub
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)
class SubscriptionInfoListViewModelTest { class SubscriptionInfoListViewModelTest {
@@ -62,8 +58,7 @@ class SubscriptionInfoListViewModelTest {
on { getSystemService(SubscriptionManager::class.java) } doReturn mockSubscriptionManager on { getSystemService(SubscriptionManager::class.java) } doReturn mockSubscriptionManager
} }
private val subscriptionInfoListViewModel: SubscriptionInfoListViewModel = private fun createViewModel() = SubscriptionInfoListViewModel(context as Application)
SubscriptionInfoListViewModel(context as Application);
private var activeSubscriptionInfoList: List<SubscriptionInfo>? = null private var activeSubscriptionInfoList: List<SubscriptionInfo>? = null
@@ -72,7 +67,7 @@ class SubscriptionInfoListViewModelTest {
activeSubscriptionInfoList = listOf(SUB_INFO_1, SUB_INFO_2) activeSubscriptionInfoList = listOf(SUB_INFO_1, SUB_INFO_2)
val listDeferred = async { val listDeferred = async {
subscriptionInfoListViewModel.subscriptionInfoListFlow.toListWithTimeout() createViewModel().subscriptionInfoListFlow.toListWithTimeout()
} }
delay(100) delay(100)
subInfoListener?.onSubscriptionsChanged() subInfoListener?.onSubscriptionsChanged()
@@ -83,49 +78,44 @@ class SubscriptionInfoListViewModelTest {
@Test @Test
fun onSubscriptionsChanged_hasProvisioning_filterProvisioning() = runBlocking { fun onSubscriptionsChanged_hasProvisioning_filterProvisioning() = runBlocking {
activeSubscriptionInfoList = listOf(SUB_INFO_1, SUB_INFO_2, SUB_INFO_3) activeSubscriptionInfoList = listOf(SUB_INFO_1, SUB_INFO_2, SUB_INFO_3)
val expectation = listOf(SUB_INFO_1, SUB_INFO_2)
val listDeferred = async { val listDeferred = async {
subscriptionInfoListViewModel.subscriptionInfoListFlow.toListWithTimeout() createViewModel().subscriptionInfoListFlow.toListWithTimeout()
} }
delay(100) delay(100)
subInfoListener?.onSubscriptionsChanged() subInfoListener?.onSubscriptionsChanged()
assertThat(listDeferred.await()).contains(expectation) assertThat(listDeferred.await()).contains(listOf(SUB_INFO_1, SUB_INFO_2))
} }
@Test @Test
fun onSubscriptionsChanged_flagOffHasNonTerrestrialNetwork_filterNonTerrestrialNetwork() = fun onSubscriptionsChanged_flagOffHasNonTerrestrialNetwork_filterNonTerrestrialNetwork() =
runBlocking { runBlocking {
mSetFlagsRule.disableFlags(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG) mSetFlagsRule.disableFlags(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG)
activeSubscriptionInfoList = listOf(SUB_INFO_1, SUB_INFO_2, SUB_INFO_4) activeSubscriptionInfoList = listOf(SUB_INFO_1, SUB_INFO_2, SUB_INFO_4)
val expectation = listOf(SUB_INFO_1, SUB_INFO_2, SUB_INFO_4)
val listDeferred = async { val listDeferred = async {
subscriptionInfoListViewModel.subscriptionInfoListFlow.toListWithTimeout() createViewModel().subscriptionInfoListFlow.toListWithTimeout()
} }
delay(100) delay(100)
subInfoListener?.onSubscriptionsChanged() subInfoListener?.onSubscriptionsChanged()
assertThat(listDeferred.await()).contains(expectation) assertThat(listDeferred.await()).contains(listOf(SUB_INFO_1, SUB_INFO_2, SUB_INFO_4))
} }
@Test @Test
fun onSubscriptionsChanged_flagOnHasNonTerrestrialNetwork_filterNonTerrestrialNetwork() = fun onSubscriptionsChanged_flagOnHasNonTerrestrialNetwork_filterNonTerrestrialNetwork() =
runBlocking { runBlocking {
mSetFlagsRule.enableFlags(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG) mSetFlagsRule.enableFlags(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG)
activeSubscriptionInfoList = listOf(SUB_INFO_1, SUB_INFO_2, SUB_INFO_4) activeSubscriptionInfoList = listOf(SUB_INFO_1, SUB_INFO_2, SUB_INFO_4)
val expectation = listOf(SUB_INFO_1, SUB_INFO_2)
val listDeferred = async { val listDeferred = async {
subscriptionInfoListViewModel.subscriptionInfoListFlow.toListWithTimeout() createViewModel().subscriptionInfoListFlow.toListWithTimeout()
} }
delay(100) delay(100)
subInfoListener?.onSubscriptionsChanged() subInfoListener?.onSubscriptionsChanged()
assertThat(listDeferred.await()).contains(expectation) assertThat(listDeferred.await()).contains(listOf(SUB_INFO_1, SUB_INFO_2))
} }
private companion object { private companion object {