feat: support session-level hidden flag in SessionListResponse and SessionsScreen (#1033)
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
1 parent
aa28d96b5d
commit
908255f5ad
10 files changed
+316
-20
No files matched your search
@@ -31,13 +31,19 @@ class RefreshOnChangeTest {
|
||||
|
||||
private class TestViewModel : ViewModel() {
|
||||
val state = MutableStateFlow("initial")
|
||||
var job: kotlinx.coroutines.Job? = null
|
||||
|
||||
init {
|
||||
refreshOnChange(
|
||||
eventType = ChangeEvents.CRON,
|
||||
apiCall = { NetworkResult.Success("refreshed") },
|
||||
onSuccess = { state.value = it },
|
||||
)
|
||||
job =
|
||||
refreshOnChange(
|
||||
eventType = ChangeEvents.CRON,
|
||||
apiCall = { NetworkResult.Success("refreshed") },
|
||||
onSuccess = { state.value = it },
|
||||
)
|
||||
}
|
||||
|
||||
fun cleanup() {
|
||||
job?.cancel()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,23 +61,31 @@ class RefreshOnChangeTest {
|
||||
fun testRefreshOnChange_updatesOnMatchingEvent() =
|
||||
runTest(testDispatcher) {
|
||||
val viewModel = TestViewModel()
|
||||
// Let the init coroutine run so the collector actually subscribes
|
||||
// before the event fires (replay=0 — events before subscription
|
||||
// are dropped, matching production where VMs subscribe at
|
||||
// construction and events arrive afterwards).
|
||||
advanceUntilIdle()
|
||||
ChangeEventHub.emit(WsEvent.ChangeEvent(ChangeEvents.CRON))
|
||||
advanceUntilIdle()
|
||||
assertEquals("refreshed", viewModel.state.value)
|
||||
try {
|
||||
// Let the init coroutine run so the collector actually subscribes
|
||||
// before the event fires (replay=0 — events before subscription
|
||||
// are dropped, matching production where VMs subscribe at
|
||||
// construction and events arrive afterwards).
|
||||
advanceUntilIdle()
|
||||
ChangeEventHub.emit(WsEvent.ChangeEvent(ChangeEvents.CRON))
|
||||
advanceUntilIdle()
|
||||
assertEquals("refreshed", viewModel.state.value)
|
||||
} finally {
|
||||
viewModel.cleanup()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testRefreshOnChange_ignoresOtherEventTypes() =
|
||||
runTest(testDispatcher) {
|
||||
val viewModel = TestViewModel()
|
||||
advanceUntilIdle()
|
||||
ChangeEventHub.emit(WsEvent.ChangeEvent(ChangeEvents.SESSIONS))
|
||||
advanceUntilIdle()
|
||||
assertEquals("initial", viewModel.state.value)
|
||||
try {
|
||||
advanceUntilIdle()
|
||||
ChangeEventHub.emit(WsEvent.ChangeEvent(ChangeEvents.SESSIONS))
|
||||
advanceUntilIdle()
|
||||
assertEquals("initial", viewModel.state.value)
|
||||
} finally {
|
||||
viewModel.cleanup()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user