Add unit test for ChatViewModel.refreshSettings (#506)
* Add unit test for ChatViewModel.refreshSettings This commit adds a missing test case for the `refreshSettings` function in `ChatViewModel.kt`. The new test verifies that the UI state correctly updates to reflect changes in `AuthManager` properties such as `typingEffectEnabled` and `typingEffectDelayMs`. This resolves the testing gap and ensures safer refactoring for settings management in the future. * test(#506): strengthen refreshSettings test to prove live re-read + drop test_plan.md Re-stub AuthManager after construction and assert the state delta, so the test actually catches a regression where refreshSettings() would cache the init-time value instead of re-reading AuthManager live. Removes the one-off Jules planning artifact from the repo root.
This commit is contained in:
1 file changed
+29
@@ -888,4 +888,33 @@ class ChatViewModelTest {
|
|||||||
assertNotNull(msgAfter)
|
assertNotNull(msgAfter)
|
||||||
assertNull(msgAfter!!.approvalInfo)
|
assertNull(msgAfter!!.approvalInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ── Settings ─────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testRefreshSettings_updatesUiState() =
|
||||||
|
runTest {
|
||||||
|
// Given the default setup, init{} already calls refreshSettings() once,
|
||||||
|
// so the initial state reflects the setUp defaults (typingEffectEnabled=true,
|
||||||
|
// typingEffectDelayMs=30).
|
||||||
|
val viewModel = createViewModel()
|
||||||
|
advanceUntilIdle()
|
||||||
|
with(viewModel.uiState.value) {
|
||||||
|
assertTrue(typingEffectEnabled)
|
||||||
|
assertEquals(30, typingEffectDelayMs)
|
||||||
|
}
|
||||||
|
|
||||||
|
// When settings change after construction and refreshSettings() is re-invoked,
|
||||||
|
// the UI state must reflect the NEW values — this proves refreshSettings()
|
||||||
|
// re-reads AuthManager live (the real regression scenario).
|
||||||
|
every { AuthManager.isTypingEffectEnabled() } returns false
|
||||||
|
every { AuthManager.getTypingEffectDelayMs() } returns 50
|
||||||
|
viewModel.refreshSettings()
|
||||||
|
advanceUntilIdle()
|
||||||
|
|
||||||
|
// Then
|
||||||
|
val state = viewModel.uiState.value
|
||||||
|
assertFalse(state.typingEffectEnabled)
|
||||||
|
assertEquals(50, state.typingEffectDelayMs)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user