22c0b4140f25a430e7d9557b0a0dc309853ce482
[packages/precise/mcollective.git] / spec / unit / rpc / result_spec.rb
1 #!/usr/bin/env rspec
2
3 require 'spec_helper'
4
5 module MCollective
6   module RPC
7     describe Result do
8       before(:each) do
9         @result = Result.new("tester", "test", {:foo => "bar", :bar => "baz"})
10       end
11
12       it "should include Enumerable" do
13         Result.ancestors.include?(Enumerable).should == true
14       end
15
16       describe "#initialize" do
17         it "should set the agent" do
18           @result.agent.should == "tester"
19         end
20
21         it "should set the action" do
22           @result.action.should == "test"
23         end
24
25         it "should set the results" do
26           @result.results.should == {:foo => "bar", :bar => "baz"}
27         end
28       end
29
30       describe "#[]" do
31         it "should access the results hash and return correct data" do
32           @result[:foo].should == "bar"
33           @result[:bar].should == "baz"
34         end
35       end
36
37       describe "#[]=" do
38         it "should set the correct result data" do
39           @result[:meh] = "blah"
40
41           @result[:foo].should == "bar"
42           @result[:bar].should == "baz"
43           @result[:meh].should == "blah"
44         end
45       end
46
47       describe "#fetch" do
48         it "should fetch data with the correct default behavior" do
49           @result.fetch(:foo, "default").should == "bar"
50           @result.fetch(:rspec, "default").should == "default"
51         end
52       end
53
54       describe "#each" do
55         it "should itterate all the pairs" do
56           data = {}
57
58           @result.each {|k,v| data[k] = v}
59
60           data[:foo].should == "bar"
61           data[:bar].should == "baz"
62         end
63       end
64
65       describe "#to_json" do
66         it "should correctly json encode teh data" do
67           result = Result.new("tester", "test", {:statuscode => 0, :statusmsg => "OK", :sender => "rspec",  :data => {:foo => "bar", :bar => "baz"}})
68           JSON.load(result.to_json).should == {"agent" => "tester", "action" => "test", "statuscode" => 0, "statusmsg" => "OK", "sender" => "rspec", "data" => {"foo" => "bar", "bar" => "baz"}}
69         end
70       end
71     end
72   end
73 end