diff options
| author | mo khan <mo@mokhan.ca> | 2016-12-01 22:17:30 -0700 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2016-12-01 22:17:30 -0700 |
| commit | 40a588489eb699aed6b196aade44c2fe037e737d (patch) | |
| tree | 0b9bca5dc0769623bbc114d390aed8646b48ec16 | |
| parent | 00eafd668dde89c713b7a0cde5beab7413ca97da (diff) | |
add specs for router.
| -rw-r--r-- | app/infrastructure/__tests__/router_spec.js | 40 | ||||
| -rw-r--r-- | app/infrastructure/router.js | 12 |
2 files changed, 51 insertions, 1 deletions
diff --git a/app/infrastructure/__tests__/router_spec.js b/app/infrastructure/__tests__/router_spec.js new file mode 100644 index 0000000..8a2c1f5 --- /dev/null +++ b/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); + }); + }); +}); diff --git a/app/infrastructure/router.js b/app/infrastructure/router.js index c440afd..7544be7 100644 --- a/app/infrastructure/router.js +++ b/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} + /> + ); } } |
