Merge changes I497486d0,I0d5d100a into udc-qpr-dev

* changes:
  [Status Bar] Update WifiViewModelTest to TestScope; add to robolectric.
  [Status Bar] Update WifiInteractorTest to TestScope; add to robolectric
This commit is contained in:
Caitlin Shkuratov
2023-07-27 13:59:39 +00:00
committed by Android (Google) Code Review
3 changed files with 92 additions and 200 deletions

View File

@@ -307,6 +307,8 @@ filegroup {
"tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepositorySwitcherTest.kt",
"tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/DisabledWifiRepositoryTest.kt",
"tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImplTest.kt",
"tests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorImplTest.kt",
"tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelTest.kt",
],
path: "tests/src",
}

View File

@@ -17,7 +17,9 @@
package com.android.systemui.statusbar.pipeline.wifi.domain.interactor
import android.net.wifi.WifiManager
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.RoboPilotTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
@@ -25,18 +27,22 @@ import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnec
import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkModel
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.yield
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@OptIn(ExperimentalCoroutinesApi::class)
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
@SmallTest
@RoboPilotTest
@RunWith(AndroidJUnit4::class)
class WifiInteractorImplTest : SysuiTestCase() {
private lateinit var underTest: WifiInteractor
@@ -44,6 +50,8 @@ class WifiInteractorImplTest : SysuiTestCase() {
private lateinit var connectivityRepository: FakeConnectivityRepository
private lateinit var wifiRepository: FakeWifiRepository
private val testScope = TestScope()
@Before
fun setUp() {
connectivityRepository = FakeConnectivityRepository()
@@ -53,11 +61,12 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun ssid_unavailableNetwork_outputsNull() =
runBlocking(IMMEDIATE) {
testScope.runTest {
wifiRepository.setWifiNetwork(WifiNetworkModel.Unavailable)
var latest: String? = "default"
val job = underTest.ssid.onEach { latest = it }.launchIn(this)
runCurrent()
assertThat(latest).isNull()
@@ -66,11 +75,12 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun ssid_inactiveNetwork_outputsNull() =
runBlocking(IMMEDIATE) {
testScope.runTest {
wifiRepository.setWifiNetwork(WifiNetworkModel.Inactive)
var latest: String? = "default"
val job = underTest.ssid.onEach { latest = it }.launchIn(this)
runCurrent()
assertThat(latest).isNull()
@@ -79,13 +89,14 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun ssid_carrierMergedNetwork_outputsNull() =
runBlocking(IMMEDIATE) {
testScope.runTest {
wifiRepository.setWifiNetwork(
WifiNetworkModel.CarrierMerged(networkId = 1, subscriptionId = 2, level = 1)
)
var latest: String? = "default"
val job = underTest.ssid.onEach { latest = it }.launchIn(this)
runCurrent()
assertThat(latest).isNull()
@@ -94,7 +105,7 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun ssid_isPasspointAccessPoint_outputsPasspointName() =
runBlocking(IMMEDIATE) {
testScope.runTest {
wifiRepository.setWifiNetwork(
WifiNetworkModel.Active(
networkId = 1,
@@ -106,6 +117,7 @@ class WifiInteractorImplTest : SysuiTestCase() {
var latest: String? = null
val job = underTest.ssid.onEach { latest = it }.launchIn(this)
runCurrent()
assertThat(latest).isEqualTo("friendly")
@@ -114,7 +126,7 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun ssid_isOnlineSignUpForPasspoint_outputsPasspointName() =
runBlocking(IMMEDIATE) {
testScope.runTest {
wifiRepository.setWifiNetwork(
WifiNetworkModel.Active(
networkId = 1,
@@ -126,6 +138,7 @@ class WifiInteractorImplTest : SysuiTestCase() {
var latest: String? = null
val job = underTest.ssid.onEach { latest = it }.launchIn(this)
runCurrent()
assertThat(latest).isEqualTo("friendly")
@@ -134,7 +147,7 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun ssid_unknownSsid_outputsNull() =
runBlocking(IMMEDIATE) {
testScope.runTest {
wifiRepository.setWifiNetwork(
WifiNetworkModel.Active(
networkId = 1,
@@ -145,6 +158,7 @@ class WifiInteractorImplTest : SysuiTestCase() {
var latest: String? = "default"
val job = underTest.ssid.onEach { latest = it }.launchIn(this)
runCurrent()
assertThat(latest).isNull()
@@ -153,7 +167,7 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun ssid_validSsid_outputsSsid() =
runBlocking(IMMEDIATE) {
testScope.runTest {
wifiRepository.setWifiNetwork(
WifiNetworkModel.Active(
networkId = 1,
@@ -164,6 +178,7 @@ class WifiInteractorImplTest : SysuiTestCase() {
var latest: String? = null
val job = underTest.ssid.onEach { latest = it }.launchIn(this)
runCurrent()
assertThat(latest).isEqualTo("MyAwesomeWifiNetwork")
@@ -172,7 +187,7 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun isEnabled_matchesRepoIsEnabled() =
runBlocking(IMMEDIATE) {
testScope.runTest {
var latest: Boolean? = null
val job = underTest.isEnabled.onEach { latest = it }.launchIn(this)
@@ -193,7 +208,7 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun isDefault_matchesRepoIsDefault() =
runBlocking(IMMEDIATE) {
testScope.runTest {
var latest: Boolean? = null
val job = underTest.isDefault.onEach { latest = it }.launchIn(this)
@@ -214,7 +229,7 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun wifiNetwork_matchesRepoWifiNetwork() =
runBlocking(IMMEDIATE) {
testScope.runTest {
val wifiNetwork =
WifiNetworkModel.Active(
networkId = 45,
@@ -227,6 +242,7 @@ class WifiInteractorImplTest : SysuiTestCase() {
var latest: WifiNetworkModel? = null
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
runCurrent()
assertThat(latest).isEqualTo(wifiNetwork)
@@ -235,7 +251,7 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun activity_matchesRepoWifiActivity() =
runBlocking(IMMEDIATE) {
testScope.runTest {
var latest: DataActivityModel? = null
val job = underTest.activity.onEach { latest = it }.launchIn(this)
@@ -259,11 +275,12 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun isForceHidden_repoHasWifiHidden_outputsTrue() =
runBlocking(IMMEDIATE) {
testScope.runTest {
connectivityRepository.setForceHiddenIcons(setOf(ConnectivitySlot.WIFI))
var latest: Boolean? = null
val job = underTest.isForceHidden.onEach { latest = it }.launchIn(this)
runCurrent()
assertThat(latest).isTrue()
@@ -272,16 +289,15 @@ class WifiInteractorImplTest : SysuiTestCase() {
@Test
fun isForceHidden_repoDoesNotHaveWifiHidden_outputsFalse() =
runBlocking(IMMEDIATE) {
testScope.runTest {
connectivityRepository.setForceHiddenIcons(setOf())
var latest: Boolean? = null
val job = underTest.isForceHidden.onEach { latest = it }.launchIn(this)
runCurrent()
assertThat(latest).isFalse()
job.cancel()
}
}
private val IMMEDIATE = Dispatchers.Main.immediate

View File

@@ -16,8 +16,11 @@
package com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.RoboPilotTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.statusbar.phone.StatusBarLocation
import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository
@@ -36,23 +39,19 @@ import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkMode
import com.android.systemui.statusbar.pipeline.wifi.ui.model.WifiIcon
import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.LocationBasedWifiViewModel.Companion.viewModelForLocation
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.cancel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.yield
import org.junit.After
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
@SmallTest
@RoboPilotTest
@RunWith(AndroidJUnit4::class)
class WifiViewModelTest : SysuiTestCase() {
private lateinit var underTest: WifiViewModel
@@ -66,7 +65,7 @@ class WifiViewModelTest : SysuiTestCase() {
private lateinit var interactor: WifiInteractor
private lateinit var airplaneModeViewModel: AirplaneModeViewModel
private val shouldShowSignalSpacerProviderFlow = MutableStateFlow(false)
private lateinit var scope: CoroutineScope
private val testScope = TestScope()
@Before
fun setUp() {
@@ -76,7 +75,6 @@ class WifiViewModelTest : SysuiTestCase() {
wifiRepository = FakeWifiRepository()
wifiRepository.setIsWifiEnabled(true)
interactor = WifiInteractorImpl(connectivityRepository, wifiRepository)
scope = CoroutineScope(IMMEDIATE)
airplaneModeViewModel =
AirplaneModeViewModelImpl(
AirplaneModeInteractor(
@@ -84,17 +82,12 @@ class WifiViewModelTest : SysuiTestCase() {
connectivityRepository,
),
tableLogBuffer,
scope,
testScope.backgroundScope,
)
createAndSetViewModel()
}
@After
fun tearDown() {
scope.cancel()
}
// See [WifiViewModelIconParameterizedTest] for additional view model tests.
// Note on testing: [WifiViewModel] exposes 3 different instances of
@@ -104,104 +97,65 @@ class WifiViewModelTest : SysuiTestCase() {
@Test
fun wifiIcon_allLocationViewModelsReceiveSameData() =
runBlocking(IMMEDIATE) {
testScope.runTest {
val home = viewModelForLocation(underTest, StatusBarLocation.HOME)
val keyguard = viewModelForLocation(underTest, StatusBarLocation.KEYGUARD)
val qs = viewModelForLocation(underTest, StatusBarLocation.QS)
var latestHome: WifiIcon? = null
val jobHome = home.wifiIcon.onEach { latestHome = it }.launchIn(this)
var latestKeyguard: WifiIcon? = null
val jobKeyguard = keyguard.wifiIcon.onEach { latestKeyguard = it }.launchIn(this)
var latestQs: WifiIcon? = null
val jobQs = qs.wifiIcon.onEach { latestQs = it }.launchIn(this)
val latestHome by collectLastValue(home.wifiIcon)
val latestKeyguard by collectLastValue(keyguard.wifiIcon)
val latestQs by collectLastValue(qs.wifiIcon)
wifiRepository.setWifiNetwork(
WifiNetworkModel.Active(NETWORK_ID, isValidated = true, level = 1)
)
yield()
assertThat(latestHome).isInstanceOf(WifiIcon.Visible::class.java)
assertThat(latestHome).isEqualTo(latestKeyguard)
assertThat(latestKeyguard).isEqualTo(latestQs)
jobHome.cancel()
jobKeyguard.cancel()
jobQs.cancel()
}
@Test
fun activity_showActivityConfigFalse_outputsFalse() =
runBlocking(IMMEDIATE) {
testScope.runTest {
whenever(connectivityConstants.shouldShowActivityConfig).thenReturn(false)
createAndSetViewModel()
wifiRepository.setWifiNetwork(ACTIVE_VALID_WIFI_NETWORK)
var activityIn: Boolean? = null
val activityInJob =
underTest.isActivityInViewVisible.onEach { activityIn = it }.launchIn(this)
var activityOut: Boolean? = null
val activityOutJob =
underTest.isActivityOutViewVisible.onEach { activityOut = it }.launchIn(this)
var activityContainer: Boolean? = null
val activityContainerJob =
underTest.isActivityContainerVisible
.onEach { activityContainer = it }
.launchIn(this)
val activityIn by collectLastValue(underTest.isActivityInViewVisible)
val activityOut by collectLastValue(underTest.isActivityOutViewVisible)
val activityContainer by collectLastValue(underTest.isActivityContainerVisible)
// Verify that on launch, we receive false.
assertThat(activityIn).isFalse()
assertThat(activityOut).isFalse()
assertThat(activityContainer).isFalse()
activityInJob.cancel()
activityOutJob.cancel()
activityContainerJob.cancel()
}
@Test
fun activity_showActivityConfigFalse_noUpdatesReceived() =
runBlocking(IMMEDIATE) {
testScope.runTest {
whenever(connectivityConstants.shouldShowActivityConfig).thenReturn(false)
createAndSetViewModel()
wifiRepository.setWifiNetwork(ACTIVE_VALID_WIFI_NETWORK)
var activityIn: Boolean? = null
val activityInJob =
underTest.isActivityInViewVisible.onEach { activityIn = it }.launchIn(this)
var activityOut: Boolean? = null
val activityOutJob =
underTest.isActivityOutViewVisible.onEach { activityOut = it }.launchIn(this)
var activityContainer: Boolean? = null
val activityContainerJob =
underTest.isActivityContainerVisible
.onEach { activityContainer = it }
.launchIn(this)
val activityIn by collectLastValue(underTest.isActivityInViewVisible)
val activityOut by collectLastValue(underTest.isActivityOutViewVisible)
val activityContainer by collectLastValue(underTest.isActivityContainerVisible)
// WHEN we update the repo to have activity
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
// THEN we didn't update to the new activity (because our config is false)
assertThat(activityIn).isFalse()
assertThat(activityOut).isFalse()
assertThat(activityContainer).isFalse()
activityInJob.cancel()
activityOutJob.cancel()
activityContainerJob.cancel()
}
@Test
fun activity_nullSsid_outputsFalse() =
runBlocking(IMMEDIATE) {
testScope.runTest {
whenever(connectivityConstants.shouldShowActivityConfig).thenReturn(true)
createAndSetViewModel()
@@ -209,38 +163,23 @@ class WifiViewModelTest : SysuiTestCase() {
WifiNetworkModel.Active(NETWORK_ID, ssid = null, level = 1)
)
var activityIn: Boolean? = null
val activityInJob =
underTest.isActivityInViewVisible.onEach { activityIn = it }.launchIn(this)
var activityOut: Boolean? = null
val activityOutJob =
underTest.isActivityOutViewVisible.onEach { activityOut = it }.launchIn(this)
var activityContainer: Boolean? = null
val activityContainerJob =
underTest.isActivityContainerVisible
.onEach { activityContainer = it }
.launchIn(this)
val activityIn by collectLastValue(underTest.isActivityInViewVisible)
val activityOut by collectLastValue(underTest.isActivityOutViewVisible)
val activityContainer by collectLastValue(underTest.isActivityContainerVisible)
// WHEN we update the repo to have activity
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
// THEN we still output false because our network's SSID is null
assertThat(activityIn).isFalse()
assertThat(activityOut).isFalse()
assertThat(activityContainer).isFalse()
activityInJob.cancel()
activityOutJob.cancel()
activityContainerJob.cancel()
}
@Test
fun activity_allLocationViewModelsReceiveSameData() =
runBlocking(IMMEDIATE) {
testScope.runTest {
whenever(connectivityConstants.shouldShowActivityConfig).thenReturn(true)
createAndSetViewModel()
wifiRepository.setWifiNetwork(ACTIVE_VALID_WIFI_NETWORK)
@@ -249,250 +188,187 @@ class WifiViewModelTest : SysuiTestCase() {
val keyguard = viewModelForLocation(underTest, StatusBarLocation.KEYGUARD)
val qs = viewModelForLocation(underTest, StatusBarLocation.QS)
var latestHome: Boolean? = null
val jobHome = home.isActivityInViewVisible.onEach { latestHome = it }.launchIn(this)
var latestKeyguard: Boolean? = null
val jobKeyguard =
keyguard.isActivityInViewVisible.onEach { latestKeyguard = it }.launchIn(this)
var latestQs: Boolean? = null
val jobQs = qs.isActivityInViewVisible.onEach { latestQs = it }.launchIn(this)
val latestHome by collectLastValue(home.isActivityInViewVisible)
val latestKeyguard by collectLastValue(keyguard.isActivityInViewVisible)
val latestQs by collectLastValue(qs.isActivityInViewVisible)
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
assertThat(latestHome).isTrue()
assertThat(latestKeyguard).isTrue()
assertThat(latestQs).isTrue()
jobHome.cancel()
jobKeyguard.cancel()
jobQs.cancel()
}
@Test
fun activityIn_hasActivityInTrue_outputsTrue() =
runBlocking(IMMEDIATE) {
testScope.runTest {
whenever(connectivityConstants.shouldShowActivityConfig).thenReturn(true)
createAndSetViewModel()
wifiRepository.setWifiNetwork(ACTIVE_VALID_WIFI_NETWORK)
var latest: Boolean? = null
val job = underTest.isActivityInViewVisible.onEach { latest = it }.launchIn(this)
val latest by collectLastValue(underTest.isActivityInViewVisible)
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = false)
wifiRepository.setWifiActivity(activity)
yield()
assertThat(latest).isTrue()
job.cancel()
}
@Test
fun activityIn_hasActivityInFalse_outputsFalse() =
runBlocking(IMMEDIATE) {
testScope.runTest {
whenever(connectivityConstants.shouldShowActivityConfig).thenReturn(true)
createAndSetViewModel()
wifiRepository.setWifiNetwork(ACTIVE_VALID_WIFI_NETWORK)
var latest: Boolean? = null
val job = underTest.isActivityInViewVisible.onEach { latest = it }.launchIn(this)
val latest by collectLastValue(underTest.isActivityInViewVisible)
val activity = DataActivityModel(hasActivityIn = false, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
assertThat(latest).isFalse()
job.cancel()
}
@Test
fun activityOut_hasActivityOutTrue_outputsTrue() =
runBlocking(IMMEDIATE) {
testScope.runTest {
whenever(connectivityConstants.shouldShowActivityConfig).thenReturn(true)
createAndSetViewModel()
wifiRepository.setWifiNetwork(ACTIVE_VALID_WIFI_NETWORK)
var latest: Boolean? = null
val job = underTest.isActivityOutViewVisible.onEach { latest = it }.launchIn(this)
val latest by collectLastValue(underTest.isActivityOutViewVisible)
val activity = DataActivityModel(hasActivityIn = false, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
assertThat(latest).isTrue()
job.cancel()
}
@Test
fun activityOut_hasActivityOutFalse_outputsFalse() =
runBlocking(IMMEDIATE) {
testScope.runTest {
whenever(connectivityConstants.shouldShowActivityConfig).thenReturn(true)
createAndSetViewModel()
wifiRepository.setWifiNetwork(ACTIVE_VALID_WIFI_NETWORK)
var latest: Boolean? = null
val job = underTest.isActivityOutViewVisible.onEach { latest = it }.launchIn(this)
val latest by collectLastValue(underTest.isActivityOutViewVisible)
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = false)
wifiRepository.setWifiActivity(activity)
yield()
assertThat(latest).isFalse()
job.cancel()
}
@Test
fun activityContainer_hasActivityInTrue_outputsTrue() =
runBlocking(IMMEDIATE) {
testScope.runTest {
whenever(connectivityConstants.shouldShowActivityConfig).thenReturn(true)
createAndSetViewModel()
wifiRepository.setWifiNetwork(ACTIVE_VALID_WIFI_NETWORK)
var latest: Boolean? = null
val job = underTest.isActivityContainerVisible.onEach { latest = it }.launchIn(this)
val latest by collectLastValue(underTest.isActivityContainerVisible)
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = false)
wifiRepository.setWifiActivity(activity)
yield()
assertThat(latest).isTrue()
job.cancel()
}
@Test
fun activityContainer_hasActivityOutTrue_outputsTrue() =
runBlocking(IMMEDIATE) {
testScope.runTest {
whenever(connectivityConstants.shouldShowActivityConfig).thenReturn(true)
createAndSetViewModel()
wifiRepository.setWifiNetwork(ACTIVE_VALID_WIFI_NETWORK)
var latest: Boolean? = null
val job = underTest.isActivityContainerVisible.onEach { latest = it }.launchIn(this)
val latest by collectLastValue(underTest.isActivityContainerVisible)
val activity = DataActivityModel(hasActivityIn = false, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
assertThat(latest).isTrue()
job.cancel()
}
@Test
fun activityContainer_inAndOutTrue_outputsTrue() =
runBlocking(IMMEDIATE) {
testScope.runTest {
whenever(connectivityConstants.shouldShowActivityConfig).thenReturn(true)
createAndSetViewModel()
wifiRepository.setWifiNetwork(ACTIVE_VALID_WIFI_NETWORK)
var latest: Boolean? = null
val job = underTest.isActivityContainerVisible.onEach { latest = it }.launchIn(this)
val latest by collectLastValue(underTest.isActivityContainerVisible)
val activity = DataActivityModel(hasActivityIn = true, hasActivityOut = true)
wifiRepository.setWifiActivity(activity)
yield()
assertThat(latest).isTrue()
job.cancel()
}
@Test
fun activityContainer_inAndOutFalse_outputsFalse() =
runBlocking(IMMEDIATE) {
testScope.runTest {
whenever(connectivityConstants.shouldShowActivityConfig).thenReturn(true)
createAndSetViewModel()
wifiRepository.setWifiNetwork(ACTIVE_VALID_WIFI_NETWORK)
var latest: Boolean? = null
val job = underTest.isActivityContainerVisible.onEach { latest = it }.launchIn(this)
val latest by collectLastValue(underTest.isActivityContainerVisible)
val activity = DataActivityModel(hasActivityIn = false, hasActivityOut = false)
wifiRepository.setWifiActivity(activity)
yield()
assertThat(latest).isFalse()
job.cancel()
}
@Test
fun airplaneSpacer_notAirplaneMode_outputsFalse() =
runBlocking(IMMEDIATE) {
var latest: Boolean? = null
val job = underTest.isAirplaneSpacerVisible.onEach { latest = it }.launchIn(this)
testScope.runTest {
val latest by collectLastValue(underTest.isAirplaneSpacerVisible)
airplaneModeRepository.setIsAirplaneMode(false)
yield()
assertThat(latest).isFalse()
job.cancel()
}
@Test
fun airplaneSpacer_airplaneForceHidden_outputsFalse() =
runBlocking(IMMEDIATE) {
var latest: Boolean? = null
val job = underTest.isAirplaneSpacerVisible.onEach { latest = it }.launchIn(this)
testScope.runTest {
val latest by collectLastValue(underTest.isAirplaneSpacerVisible)
airplaneModeRepository.setIsAirplaneMode(true)
connectivityRepository.setForceHiddenIcons(setOf(ConnectivitySlot.AIRPLANE))
yield()
assertThat(latest).isFalse()
job.cancel()
}
@Test
fun airplaneSpacer_airplaneIconVisible_outputsTrue() =
runBlocking(IMMEDIATE) {
var latest: Boolean? = null
val job = underTest.isAirplaneSpacerVisible.onEach { latest = it }.launchIn(this)
testScope.runTest {
val latest by collectLastValue(underTest.isAirplaneSpacerVisible)
airplaneModeRepository.setIsAirplaneMode(true)
yield()
assertThat(latest).isTrue()
job.cancel()
}
@Test
fun signalSpacer_firstSubNotShowingNetworkTypeIcon_outputsFalse() =
runBlocking(IMMEDIATE) {
var latest: Boolean? = null
val job = underTest.isSignalSpacerVisible.onEach { latest = it }.launchIn(this)
testScope.runTest {
val latest by collectLastValue(underTest.isSignalSpacerVisible)
shouldShowSignalSpacerProviderFlow.value = false
yield()
assertThat(latest).isFalse()
job.cancel()
}
@Test
fun signalSpacer_firstSubIsShowingNetworkTypeIcon_outputsTrue() =
runBlocking(IMMEDIATE) {
var latest: Boolean? = null
val job = underTest.isSignalSpacerVisible.onEach { latest = it }.launchIn(this)
testScope.runTest {
val latest by collectLastValue(underTest.isSignalSpacerVisible)
shouldShowSignalSpacerProviderFlow.value = true
yield()
assertThat(latest).isTrue()
job.cancel()
}
private fun createAndSetViewModel() {
@@ -507,7 +383,7 @@ class WifiViewModelTest : SysuiTestCase() {
context,
tableLogBuffer,
interactor,
scope,
testScope.backgroundScope,
wifiConstants,
)
}
@@ -518,5 +394,3 @@ class WifiViewModelTest : SysuiTestCase() {
WifiNetworkModel.Active(NETWORK_ID, ssid = "AB", level = 1)
}
}
private val IMMEDIATE = Dispatchers.Main.immediate