Merge "[Sb refactor] Ensure config is fetched on flow start" into udc-dev

This commit is contained in:
Evan Laird
2023-05-09 19:28:12 +00:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 0 deletions

View File

@@ -233,6 +233,7 @@ constructor(
override val defaultDataSubRatConfig: StateFlow<Config> =
merge(defaultDataSubIdChangeEvent, carrierConfigChangedEvent)
.onStart { emit(Unit) }
.mapLatest { Config.readConfig(context) }
.distinctUntilChanged()
.onEach { logger.logDefaultDataSubRatConfig(it) }

View File

@@ -1111,6 +1111,33 @@ class MobileConnectionsRepositoryTest : SysuiTestCase() {
assertThat(latest!!.showAtLeast3G).isTrue()
}
@Test
fun carrierConfig_initialValueIsFetched() =
testScope.runTest {
// Value starts out false
assertThat(underTest.defaultDataSubRatConfig.value.showAtLeast3G).isFalse()
overrideResource(R.bool.config_showMin3G, true)
val configFromContext = MobileMappings.Config.readConfig(context)
assertThat(configFromContext.showAtLeast3G).isTrue()
// WHEN the change event is fired
fakeBroadcastDispatcher.registeredReceivers.forEach { receiver ->
receiver.onReceive(
context,
Intent(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED)
)
}
// WHEN collection starts AFTER the broadcast is sent out
val latest by collectLastValue(underTest.defaultDataSubRatConfig)
// THEN the config has the updated value
assertThat(latest!!.areEqual(configFromContext)).isTrue()
assertThat(latest!!.showAtLeast3G).isTrue()
}
@Test
fun activeDataChange_inSameGroup_emitsUnit() =
testScope.runTest {