@@ -46,15 +46,7 @@ class StreamNetworkAndLifecycleMonitorImplTest {
4646 StreamSubscriptionManager <StreamNetworkAndLifecycleMonitorListener >(TestLogger )
4747 private val fakeLifecycleMonitor = FakeLifecycleMonitor ()
4848 private val fakeNetworkMonitor = FakeNetworkMonitor ()
49- private val monitor: StreamNetworkAndLifeCycleMonitor =
50- StreamNetworkAndLifeCycleMonitor (
51- logger = TestLogger ,
52- lifecycleMonitor = fakeLifecycleMonitor,
53- networkMonitor = fakeNetworkMonitor,
54- mutableLifecycleState = lifecycleState,
55- mutableNetworkState = networkState,
56- subscriptionManager = downstreamSubscriptionManager,
57- )
49+ private val monitor: StreamNetworkAndLifeCycleMonitor = createMonitor()
5850 private val options = Options (retention = Retention .KEEP_UNTIL_CANCELLED )
5951
6052 @Test
@@ -96,6 +88,23 @@ class StreamNetworkAndLifecycleMonitorImplTest {
9688 )
9789 }
9890
91+ @Test
92+ fun `network and lifecycle states are updated on start` () {
93+ val initialNetworkState =
94+ StreamNetworkState .Available (StreamNetworkInfo .Snapshot (internet = true ))
95+ val initialLifecycleState = StreamLifecycleState .Foreground
96+
97+ val monitor =
98+ createMonitor(
99+ networkMonitor = FakeNetworkMonitor (initialNetworkState.snapshot),
100+ lifecycleMonitor = FakeLifecycleMonitor (initialLifecycleState),
101+ )
102+ monitor.start()
103+
104+ assertEquals(initialNetworkState, networkState.value)
105+ assertEquals(initialLifecycleState, lifecycleState.value)
106+ }
107+
99108 @Test
100109 fun `lifecycle callbacks update state and notify listeners` () {
101110 val events = mutableListOf<Pair <StreamNetworkState , StreamLifecycleState >>()
@@ -166,7 +175,9 @@ class StreamNetworkAndLifecycleMonitorImplTest {
166175 assertEquals(previousEventCount, events.size)
167176 }
168177
169- private class FakeLifecycleMonitor : StreamLifecycleMonitor {
178+ private class FakeLifecycleMonitor (
179+ private val initialState : StreamLifecycleState = StreamLifecycleState .Unknown
180+ ) : StreamLifecycleMonitor {
170181 private val listeners = mutableSetOf<StreamLifecycleListener >()
171182 var stopCalls: Int = 0
172183 private set
@@ -193,7 +204,7 @@ class StreamNetworkAndLifecycleMonitorImplTest {
193204 )
194205 }
195206
196- override fun getCurrentState (): StreamLifecycleState = StreamLifecycleState . Unknown
207+ override fun getCurrentState (): StreamLifecycleState = initialState
197208
198209 fun emitForeground () {
199210 listeners.forEach { it.onForeground() }
@@ -206,12 +217,17 @@ class StreamNetworkAndLifecycleMonitorImplTest {
206217 fun hasListeners (): Boolean = listeners.isNotEmpty()
207218 }
208219
209- private class FakeNetworkMonitor : StreamNetworkMonitor {
220+ private class FakeNetworkMonitor (
221+ private val initialSnapshot : StreamNetworkInfo .Snapshot ? = null
222+ ) : StreamNetworkMonitor {
210223 private var listener: StreamNetworkMonitorListener ? = null
211224 var stopCalls: Int = 0
212225 private set
213226
214- override fun start (): Result <Unit > = Result .success(Unit )
227+ override fun start (): Result <Unit > {
228+ initialSnapshot?.let (::emitConnected)
229+ return Result .success(Unit )
230+ }
215231
216232 override fun stop (): Result <Unit > =
217233 Result .success(Unit ).also {
@@ -245,4 +261,17 @@ class StreamNetworkAndLifecycleMonitorImplTest {
245261
246262 fun hasListener (): Boolean = listener != null
247263 }
264+
265+ private fun createMonitor (
266+ networkMonitor : StreamNetworkMonitor = fakeNetworkMonitor,
267+ lifecycleMonitor : StreamLifecycleMonitor = fakeLifecycleMonitor,
268+ ) =
269+ StreamNetworkAndLifeCycleMonitor (
270+ logger = TestLogger ,
271+ lifecycleMonitor = lifecycleMonitor,
272+ networkMonitor = networkMonitor,
273+ mutableLifecycleState = lifecycleState,
274+ mutableNetworkState = networkState,
275+ subscriptionManager = downstreamSubscriptionManager,
276+ )
248277}
0 commit comments