Commit 40a5884
Changed files (2)
app
infrastructure
__tests__
app/infrastructure/__tests__/router_spec.js
@@ -0,0 +1,40 @@
+import 'react-native';
+import React, { Component } from 'react';
+import Router from '../router';
+import renderer from 'react-test-renderer';
+
+describe("Router", () => {
+ class MyComponent extends Component { }
+
+ let subject = null;
+ beforeEach(() => {
+ eventAggregator = {}
+ subject = new Router({ eventAggregator });
+ });
+
+ describe("routeTo", () => {
+ let params = { personId: 1 };
+ let route = { component: MyComponent, params: params };
+ let navigator = {};
+
+ it("renders a new component", () => {
+ result = subject.routeTo(route, navigator);
+ expect(result.type).toEqual(MyComponent);
+ });
+
+ it ("attaches the navigator", () => {
+ result = subject.routeTo(route, navigator);
+ expect(result.props.navigator).toEqual(navigator);
+ });
+
+ it ("attaches each of the router dependencies", function() {
+ result = subject.routeTo(route, navigator);
+ expect(result.props.eventAggregator).toEqual(eventAggregator);
+ });
+
+ it ("attaches each of the route params", function() {
+ result = subject.routeTo(route, navigator);
+ expect(result.props.personId).toEqual(params.personId);
+ });
+ });
+});
app/infrastructure/router.js
@@ -1,8 +1,18 @@
import React, { Component } from 'react';
export default class Router {
+ constructor(dependencies) {
+ this.dependencies = dependencies;
+ }
+
routeTo(route, navigator) {
let Component = route.component;
- return (<Component navigator={navigator} {...route.params} />)
+ return (
+ <Component
+ navigator={navigator}
+ {...route.params}
+ {...this.dependencies}
+ />
+ );
}
}