Commit e8f01a0

mo khan <mo@mokhan.ca>
2016-12-05 20:22:23
resolve item with dependencies.
1 parent 7078319
Changed files (2)
app
infrastructure
app/infrastructure/__tests__/container_spec.js
@@ -9,11 +9,27 @@ describe("Container", () => {
 
   describe("#resolve", () => {
     class Item { }
+    class Dependent {
+      constructor(item) {
+        this.item = item;
+      }
+    }
 
     it("can resolve an instance", () => {
-      subject.register('eventAggregator', () => { return new Item() })
+      subject.register('item', () => { return new Item() })
 
-      expect(subject.resolve('eventAggregator')).toBeInstanceOf(Item);
+      expect(subject.resolve('item')).toBeInstanceOf(Item);
+    });
+
+    it ("can resolve an instance with a dependency", function() {
+      subject.register('item', () => { return new Item() });
+      subject.register('dependent', (container) => {
+        return new Dependent(container.resolve('item'));
+      });
+
+      result = subject.resolve('dependent');
+      expect(result).toBeInstanceOf(Dependent);
+      expect(result.item).toBeInstanceOf(Item);
     });
   });
 });
app/infrastructure/container.js
@@ -8,6 +8,6 @@ export default class Container {
   }
 
   resolve(key) {
-    return this.components[key]();
+    return this.components[key](this);
   }
 }