Skip to content

Commit 9ff81a7

Browse files
committed
1) Cartfile & podspec updated for ReSwift4.x
2) Changed router init signature to match breaking changes on ReSwif4.x 3) Updated tests
1 parent 0a18c2f commit 9ff81a7

5 files changed

Lines changed: 25 additions & 28 deletions

File tree

Cartfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
github "ReSwift/ReSwift" ~> 3.0.0
1+
github "ReSwift/ReSwift" ~> 4.0.0

Cartfile.resolved

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
github "Quick/Nimble" "v5.1.1"
2-
github "Quick/Quick" "v1.0.0"
3-
github "ReSwift/ReSwift" "3.0.0"
1+
github "Quick/Nimble" "v6.1.0"
2+
github "Quick/Quick" "v1.1.0"
3+
github "ReSwift/ReSwift" "4.0.0"

ReSwiftRouter.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@ Pod::Spec.new do |s|
1818
s.watchos.deployment_target = '2.0'
1919
s.requires_arc = true
2020
s.source_files = 'ReSwiftRouter/**/*.swift'
21-
s.dependency 'ReSwift', '~> 3.0.0'
21+
s.dependency 'ReSwift', '~> 4.0.0'
2222
end

ReSwiftRouter/Router.swift

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,17 @@ import ReSwift
1111

1212
open class Router<State: StateType>: StoreSubscriber {
1313

14-
public typealias NavigationStateSelector = (State) -> NavigationState
14+
public typealias NavigationStateTransform = (Subscription<State>) -> Subscription<NavigationState>
1515

1616
var store: Store<State>
1717
var lastNavigationState = NavigationState()
1818
var routables: [Routable] = []
1919
let waitForRoutingCompletionQueue = DispatchQueue(label: "WaitForRoutingCompletionQueue", attributes: [])
2020

21-
public init(store: Store<State>, rootRoutable: Routable, stateSelector: @escaping NavigationStateSelector) {
21+
public init(store: Store<State>, rootRoutable: Routable, stateTransform: @escaping NavigationStateTransform) {
2222
self.store = store
2323
self.routables.append(rootRoutable)
24-
25-
self.store.subscribe(self, selector: stateSelector)
24+
self.store.subscribe(self, transform: stateTransform)
2625
}
2726

2827
open func newState(state: NavigationState) {

ReSwiftRouterTests/ReSwiftRouterIntegrationTests.swift

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,14 @@ struct FakeAppState: StateType {
6565
var navigationState = NavigationState()
6666
}
6767

68-
class FakeReducer: Reducer {
69-
func handleAction(action: Action, state: FakeAppState?) -> FakeAppState {
70-
return state ?? FakeAppState()
71-
}
68+
func fakeReducer(action: Action, state: FakeAppState?) -> FakeAppState {
69+
return state ?? FakeAppState()
7270
}
7371

74-
struct AppReducer: Reducer {
75-
func handleAction(action: Action, state: FakeAppState?) -> FakeAppState {
76-
return FakeAppState(
77-
navigationState: NavigationReducer.handleAction(action, state: state?.navigationState)
78-
)
79-
}
72+
func appReducer(action: Action, state: FakeAppState?) -> FakeAppState {
73+
return FakeAppState(
74+
navigationState: NavigationReducer.handleAction(action, state: state?.navigationState)
75+
)
8076
}
8177

8278
class SwiftFlowRouterIntegrationTests: QuickSpec {
@@ -88,7 +84,7 @@ class SwiftFlowRouterIntegrationTests: QuickSpec {
8884
var store: Store<FakeAppState>!
8985

9086
beforeEach {
91-
store = Store(reducer: CombinedReducer([AppReducer()]), state: FakeAppState())
87+
store = Store(reducer: appReducer, state: FakeAppState())
9288
}
9389

9490
describe("setup") {
@@ -107,7 +103,7 @@ class SwiftFlowRouterIntegrationTests: QuickSpec {
107103

108104
let routable = FakeRootRoutable()
109105
let _ = Router(store: store, rootRoutable: routable) { state in
110-
state.navigationState
106+
state.select { $0.navigationState }
111107
}
112108

113109
expect(routable.called).to(beFalse())
@@ -144,7 +140,7 @@ class SwiftFlowRouterIntegrationTests: QuickSpec {
144140
}
145141

146142
let _ = Router(store: store, rootRoutable: rootRoutable) { state in
147-
state.navigationState
143+
state.select { $0.navigationState }
148144
}
149145
}
150146
}
@@ -185,16 +181,18 @@ class SwiftFlowRouterIntegrationTests: QuickSpec {
185181
self.injectedRoutable = injectedRoutable
186182
}
187183

188-
func pushRouteSegment(_ routeElementIdentifier: RouteElementIdentifier, animated: Bool, completionHandler: @escaping RoutingCompletionHandler) -> Routable {
184+
func pushRouteSegment(_ routeElementIdentifier: RouteElementIdentifier,
185+
animated: Bool,
186+
completionHandler: @escaping RoutingCompletionHandler) -> Routable {
189187
completionHandler()
190188
return injectedRoutable
191189
}
192190
}
193191

194192
let _ = Router(store: store, rootRoutable:
195193
FakeRootRoutable(injectedRoutable: fakeChildRoutable)) { state in
196-
state.navigationState
197-
}
194+
state.select { $0.navigationState }
195+
}
198196
}
199197
}
200198

@@ -208,7 +206,7 @@ class SwiftFlowRouterIntegrationTests: QuickSpec {
208206
var store: Store<FakeAppState>!
209207

210208
beforeEach {
211-
store = Store(reducer: AppReducer(), state: nil)
209+
store = Store(reducer: appReducer, state: nil)
212210
}
213211

214212
context("when setting route specific data") {
@@ -236,10 +234,10 @@ class SwiftFlowRouterIntegrationTests: QuickSpec {
236234
var router: Router<FakeAppState>!
237235

238236
beforeEach {
239-
store = Store(reducer: AppReducer(), state: nil)
237+
store = Store(reducer: appReducer, state: nil)
240238
mockRoutable = MockRoutable()
241239
router = Router(store: store, rootRoutable: mockRoutable) { state in
242-
state.navigationState
240+
state.select { $0.navigationState }
243241
}
244242

245243
// silence router not read warning, need to keep router alive via reference

0 commit comments

Comments
 (0)