Commit 86c3ee2

mo khan <mo@mokhan.ca>
2013-12-20 23:49:55
raise meaningfull error when container is not configured.
1 parent ff3ee16
Changed files (2)
lib
spank
spec
lib/spank/ioc.rb
@@ -1,11 +1,18 @@
 module Spank
   class IOC
-    def self.bind_to(container)
-      @@container = container
-    end
+    class << self
+      def bind_to(container)
+        @@container = container
+      end
+
+      def resolve(symbol)
+        raise ContainerError.new unless class_variable_defined?(:@@container)
+        @@container.resolve(symbol)
+      end
 
-    def self.resolve(symbol)
-      @@container.resolve(symbol)
+      def unbind
+        remove_class_variable(:@@container) if class_variable_defined?(:@@container)
+      end
     end
   end
 end
spec/unit/ioc_spec.rb
@@ -1,6 +1,10 @@
 require "spec_helper"
 
 describe Spank::IOC do
+  after :each do
+    Spank::IOC.unbind
+  end
+
   context "when bound to a container" do
     let(:container) { double }
     let(:component) { double }
@@ -12,8 +16,14 @@ describe Spank::IOC do
 
     let(:result) { Spank::IOC.resolve(:idbconnection) }
 
-    it "should resove items from that container" do
+    it "resolves the item from the container" do
       result.should == component
     end
   end
+
+  context "when nothing is bound" do
+    it "raises a meaningful exception" do
+      expect { Spank::IOC.resolve(:food) }.to raise_error(Spank::ContainerError)
+    end
+  end
 end