diff --git a/Sources/ReactorKit/Reactor.swift b/Sources/ReactorKit/Reactor.swift index d8a3c05..0a62547 100644 --- a/Sources/ReactorKit/Reactor.swift +++ b/Sources/ReactorKit/Reactor.swift @@ -69,6 +69,7 @@ private var actionKey = "action" private var currentStateKey = "currentState" private var stateKey = "state" private var disposeBagKey = "disposeBag" +private var isStubEnabledKey = "isStubEnabled" private var stubKey = "stub" @@ -76,7 +77,7 @@ private var stubKey = "stub" extension Reactor { private var _action: ActionSubject { - if self.stub.isEnabled { + if self.isStubEnabled { return self.stub.action } else { return self.associatedObject(forKey: &actionKey, default: .init()) @@ -97,7 +98,7 @@ extension Reactor { } private var _state: Observable { - if self.stub.isEnabled { + if self.isStubEnabled { return self.stub.state.asObservable() } else { return self.associatedObject(forKey: &stateKey, default: self.createStateStream()) @@ -170,6 +171,11 @@ extension Reactor where Action == Mutation { // MARK: - Stub extension Reactor { + public var isStubEnabled: Bool { + set { self.setAssociatedObject(newValue, forKey: &isStubEnabledKey) } + get { return self.associatedObject(forKey: &isStubEnabledKey, default: false) } + } + public var stub: Stub { return self.associatedObject( forKey: &stubKey, diff --git a/Sources/ReactorKit/Stub.swift b/Sources/ReactorKit/Stub.swift index 228eb5b..825329d 100644 --- a/Sources/ReactorKit/Stub.swift +++ b/Sources/ReactorKit/Stub.swift @@ -4,7 +4,11 @@ public class Stub { private unowned var reactor: Reactor private let disposeBag: DisposeBag - public var isEnabled: Bool = false + @available(*, deprecated, message: "Use 'Reactor.isStubEnabled' instead.") + public var isEnabled: Bool { + set { self.reactor.isStubEnabled = newValue } + get { return self.reactor.isStubEnabled } + } public let state: StateRelay public let action: ActionSubject diff --git a/Tests/ReactorKitTests/ReactorTests.swift b/Tests/ReactorKitTests/ReactorTests.swift index c5637e7..7835c31 100644 --- a/Tests/ReactorKitTests/ReactorTests.swift +++ b/Tests/ReactorKitTests/ReactorTests.swift @@ -158,14 +158,14 @@ final class ReactorTests: XCTestCase { func testStub_actionAndStateMemoryAddress() { let reactor = TestReactor() - reactor.stub.isEnabled = true + reactor.isStubEnabled = true XCTAssertTrue(reactor.action === reactor.stub.action) XCTAssertTrue(reactor.state === reactor.stub.state.asObservable()) } func testStub_actions() { let reactor = StopwatchReactor(scheduler: MainScheduler.instance) - reactor.stub.isEnabled = true + reactor.isStubEnabled = true reactor.action.onNext(.start) reactor.action.onNext(.start) reactor.action.onNext(.stop) @@ -174,7 +174,7 @@ final class ReactorTests: XCTestCase { func testStub_state() { let reactor = StopwatchReactor(scheduler: MainScheduler.instance) - reactor.stub.isEnabled = true + reactor.isStubEnabled = true reactor.stub.state.value = 0 XCTAssertEqual(reactor.currentState, 0) reactor.stub.state.value = 1 @@ -187,7 +187,7 @@ final class ReactorTests: XCTestCase { func testStub_ignoreAction() { let reactor = TestReactor() - reactor.stub.isEnabled = true + reactor.isStubEnabled = true reactor.action.onNext(["A"]) XCTAssertEqual(reactor.currentState, []) }