Updated mcollective.init according to OSCI-658
[packages/precise/mcollective.git] / spec / unit / rpc / result_spec.rb
diff --git a/spec/unit/rpc/result_spec.rb b/spec/unit/rpc/result_spec.rb
new file mode 100755 (executable)
index 0000000..22c0b41
--- /dev/null
@@ -0,0 +1,73 @@
+#!/usr/bin/env rspec
+
+require 'spec_helper'
+
+module MCollective
+  module RPC
+    describe Result do
+      before(:each) do
+        @result = Result.new("tester", "test", {:foo => "bar", :bar => "baz"})
+      end
+
+      it "should include Enumerable" do
+        Result.ancestors.include?(Enumerable).should == true
+      end
+
+      describe "#initialize" do
+        it "should set the agent" do
+          @result.agent.should == "tester"
+        end
+
+        it "should set the action" do
+          @result.action.should == "test"
+        end
+
+        it "should set the results" do
+          @result.results.should == {:foo => "bar", :bar => "baz"}
+        end
+      end
+
+      describe "#[]" do
+        it "should access the results hash and return correct data" do
+          @result[:foo].should == "bar"
+          @result[:bar].should == "baz"
+        end
+      end
+
+      describe "#[]=" do
+        it "should set the correct result data" do
+          @result[:meh] = "blah"
+
+          @result[:foo].should == "bar"
+          @result[:bar].should == "baz"
+          @result[:meh].should == "blah"
+        end
+      end
+
+      describe "#fetch" do
+        it "should fetch data with the correct default behavior" do
+          @result.fetch(:foo, "default").should == "bar"
+          @result.fetch(:rspec, "default").should == "default"
+        end
+      end
+
+      describe "#each" do
+        it "should itterate all the pairs" do
+          data = {}
+
+          @result.each {|k,v| data[k] = v}
+
+          data[:foo].should == "bar"
+          data[:bar].should == "baz"
+        end
+      end
+
+      describe "#to_json" do
+        it "should correctly json encode teh data" do
+          result = Result.new("tester", "test", {:statuscode => 0, :statusmsg => "OK", :sender => "rspec",  :data => {:foo => "bar", :bar => "baz"}})
+          JSON.load(result.to_json).should == {"agent" => "tester", "action" => "test", "statuscode" => 0, "statusmsg" => "OK", "sender" => "rspec", "data" => {"foo" => "bar", "bar" => "baz"}}
+        end
+      end
+    end
+  end
+end