Skip to content

Commit

Permalink
Fixed an issue in the bind method:
Browse files Browse the repository at this point in the history
- When the list of events is empty or the stream of events completes, the subscriptions get disposed.
  • Loading branch information
eliekarouz authored and kzaher committed Mar 9, 2019
1 parent 1bea0fd commit 6e216cd
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ fun <State, Event> bind(bindings: (ObservableSchedulerContext<State>) -> (Bindin
Observable.using({
bindings(state)
}, { bindings: Bindings<Event> ->
Observable.merge(bindings.events)
Observable.merge(bindings.events).concatWith(Observable.never())
.enqueue(state.scheduler)
}, { it.dispose() })
}
Expand All @@ -258,7 +258,7 @@ fun <State, Event> bindSafe(bindings: (Driver<State>) -> (Bindings<Event>)): (Dr
Observable.using({
bindings(state)
}, { bindings: Bindings<Event> ->
Observable.merge(bindings.events)
Observable.merge(bindings.events).concatWith(Observable.never())
}, { it.dispose() })
.enqueue(Signal.scheduler)
.asSignal(Signal.empty<Event>())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,4 +209,29 @@ class RxFeedbackObservableTests {
next(200, "initial_a_b_c")
), res.events())
}

@Test
fun testUIFeedbackNoEventsSpecified() {
val states = mutableListOf<Int>()
val res = scheduler.start {
val producer = react<Int, Int, Int>(
query = { Optional.Some(0) },
effects = {
Observable.fromArray(1, 1, 1)
})

val binding = bind<Int, Int> { state ->
val subscriptions = listOf(
state.source.subscribe { states.add(it) }
)
return@bind Bindings(subscriptions, listOf())
}

Observables.system(initialState = 0,
reduce = { oldState, event: Int -> oldState + event },
scheduler = scheduler,
scheduledFeedback = listOf(binding, producer))
}
assertEquals(res.events().count(), states.count())
}
}

0 comments on commit 6e216cd

Please sign in to comment.