From 8b96f4c522021f27dbf22709befd0f0bfd58ce36 Mon Sep 17 00:00:00 2001 From: Econa77 Date: Wed, 14 Apr 2021 00:24:20 +0900 Subject: [PATCH] Add tests that #216 reproduces --- Tests/ActionTests.swift | 47 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/Tests/ActionTests.swift b/Tests/ActionTests.swift index b61a548b..f8053e08 100644 --- a/Tests/ActionTests.swift +++ b/Tests/ActionTests.swift @@ -46,8 +46,8 @@ class ActionTests: QuickSpec { let completions = scheduler.createObserver(Void.self) action.completions.bind(to: completions).disposed(by: disposeBag) scheduler.start() - expect(completions.events.contains { $0.time == 10}).to(beTrue()) - expect(completions.events.contains { $0.time == 20}).to(beTrue()) + expect(completions.events.contains { $0.time == 10 }).to(beTrue()) + expect(completions.events.contains { $0.time == 20 }).to(beTrue()) } } @@ -520,6 +520,49 @@ class ActionTests: QuickSpec { expect(executionObservables.events.count).to(match(1)) } } + + fcontext("subscribe elements while executing") { + var trigger: PublishSubject! + + beforeEach { + trigger = PublishSubject() + action = Action { Observable.just($0).sample(trigger) } + + action.executionObservables + .bind(to: executionObservables) + .disposed(by: disposeBag) + + scheduler.scheduleAt(10) { + Observable.just("a") + .bind(to: action.inputs) + .disposed(by: disposeBag) + } + + scheduler.scheduleAt(20) { + action.elements + .bind(to: element) + .disposed(by: disposeBag) + } + + scheduler.scheduleAt(30) { + #if swift(>=3.2) + trigger.onNext(()) + #else + trigger.onNext() + #endif + } + + scheduler.start() + } + + it("elements receives value") { + expect(element.events).to(match(Recorded.events([.next(30, "a")]))) + } + + it("executes once") { + expect(executionObservables.events.count).to(match(1)) + } + } } } }