-
Notifications
You must be signed in to change notification settings - Fork 19
Open
Description
Original issue: uber/RIBs#216
When forking a
WorkflowthedidComplete()is called as soon as the first branch completes. The fix that addeddidCompleteIfNotYet()guarantees thatdidComplete()is called only once, but that one time is when the first branch completes. Intuitively, I would expect thedidComplete()to be called once all of the branches have completed, but that could be a bad assumption.Related to #211 and the fix in #214
Example Test Case:
func test_workflowForkCompletionOrder() { let workflow = TestWorkflow() let emptyObservable = Observable.just(((), ())) _ = workflow .onStep { _ -> Observable<((), ())> in return emptyObservable } .onStep { _, _ -> Observable<((), ())> in let forkedStep: Step<(), (), ()>? = emptyObservable.fork(workflow) forkedStep? .onStep { _, _ -> Observable<((), ())> in XCTAssertEqual(0, workflow.completeCallCount) return emptyObservable } .commit() return emptyObservable } .onStep { _, _ -> Observable<((), ())> in XCTAssertEqual(0, workflow.completeCallCount) // XCTAssertEqual failed: ("0") is not equal to ("1") return emptyObservable } .commit() .subscribe(()) XCTAssertEqual(1, workflow.completeCallCount) XCTAssertEqual(1, workflow.forkCallCount) XCTAssertEqual(0, workflow.errorCallCount) }
Metadata
Metadata
Assignees
Labels
No labels