Commit 40a5884

mo khan <mo@mokhan.ca>
2016-12-02 05:17:30
add specs for router.
1 parent 00eafd6
Changed files (2)
app
infrastructure
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}
+      />
+    );
   }
 }