fix: 收窄 SettingRow 可见性并强化设备 ViewModel 测试的数据管线断言
This commit is contained in:
@@ -126,7 +126,7 @@ private fun DeviceInfoCard(state: DeviceUiState, modifier: Modifier = Modifier)
|
|||||||
|
|
||||||
/** 单行设置项(只读展示,开关在详情页操作)。 */
|
/** 单行设置项(只读展示,开关在详情页操作)。 */
|
||||||
@Composable
|
@Composable
|
||||||
internal fun SettingRow(setting: DeviceFunctionSetting, modifier: Modifier = Modifier) {
|
private fun SettingRow(setting: DeviceFunctionSetting, modifier: Modifier = Modifier) {
|
||||||
HealthCard(modifier = modifier) {
|
HealthCard(modifier = modifier) {
|
||||||
Row(
|
Row(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
|
|||||||
@@ -33,8 +33,9 @@ class DeviceViewModelTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `输出设备状态与五个功能开关`() = runTest(dispatcher) {
|
fun `输出设备状态与五个功能开关,且仓库变化会回流到 UI 状态`() = runTest(dispatcher) {
|
||||||
val viewModel = DeviceViewModel(MockRingDeviceRepository())
|
val repository = MockRingDeviceRepository()
|
||||||
|
val viewModel = DeviceViewModel(repository)
|
||||||
backgroundScope.launch { viewModel.uiState.collect {} }
|
backgroundScope.launch { viewModel.uiState.collect {} }
|
||||||
|
|
||||||
advanceUntilIdle()
|
advanceUntilIdle()
|
||||||
@@ -43,6 +44,14 @@ class DeviceViewModelTest {
|
|||||||
assertEquals(78, state.device.batteryPercent)
|
assertEquals(78, state.device.batteryPercent)
|
||||||
assertEquals("1.0.5", state.device.firmwareVersion)
|
assertEquals("1.0.5", state.device.firmwareVersion)
|
||||||
assertEquals(5, state.settings.size)
|
assertEquals(5, state.settings.size)
|
||||||
|
|
||||||
|
// 上面三个值恰好与 stateIn 的 initialValue 相同(DeviceViewModel 的 initialValue
|
||||||
|
// 直接取仓库当前值),所以**单靠它们无法区分「combine 发射过」与「一直停在 initialValue」**
|
||||||
|
// (ledger Ruling R30,审查者指出)。这里绕开 ViewModel 直接改仓库,再断言状态跟着变 ——
|
||||||
|
// 只有 combine 真的在发射,这一条才可能成立。
|
||||||
|
repository.setFunctionEnabled("stress", true)
|
||||||
|
advanceUntilIdle()
|
||||||
|
assertTrue(viewModel.uiState.value.settings.first { it.id == "stress" }.enabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user