Updated mcollective.init according to OSCI-658
[packages/precise/mcollective.git] / spec / unit / aggregate / base_spec.rb
diff --git a/spec/unit/aggregate/base_spec.rb b/spec/unit/aggregate/base_spec.rb
new file mode 100644 (file)
index 0000000..29e0dcc
--- /dev/null
@@ -0,0 +1,57 @@
+#!/usr/bin/env rspec
+
+require 'spec_helper'
+
+module MCollective
+  class Aggregate
+    describe Base do
+      describe "#initialize" do
+        it "should set the correct instance variables and call the startup hook" do
+          Base.any_instance.expects(:startup_hook).once
+          base = Base.new("value", [], "%s%s", "rspec")
+          base.name.should == "MCollective::Aggregate::Base"
+          base.output_name.should == "value"
+          base.aggregate_format.should == "%s%s"
+          base.action.should == "rspec"
+        end
+      end
+
+      describe "#startup_hook and #process_result" do
+        it "should raise an exception for an unimplemented startup_hook method " do
+          expect{
+            base = Base.new("value", [], "", "rspec")
+          }.to raise_error(RuntimeError, "'startup_hook' method of function class MCollective::Aggregate::Base has not yet been implemented")
+        end
+
+        it "should raise an exception for an unimplemented process_result method" do
+          Base.any_instance.stubs(:startup_hook)
+          base = Base.new("value", [], "", "rspec")
+          expect{
+            base.process_result
+          }.to raise_error(RuntimeError,"'process_result' method of function class MCollective::Aggregate::Base has not yet been implemented")
+        end
+      end
+
+      describe "summarize" do
+        it "should raise and exception if the result type has not been set" do
+          Base.any_instance.stubs(:startup_hook)
+          base = Base.new("value", [], "", "rspec")
+          expect{
+            base.summarize
+          }.to raise_error(RuntimeError, "Result type is not set while trying to summarize aggregate function results")
+        end
+
+        it "should return the correct result class if result type has been set" do
+          result_object = mock
+          result_object.stubs(:new)
+
+          Base.any_instance.stubs(:startup_hook)
+          base = Base.new("value", [], "", "rspec")
+          base.result[:type] = :result_type
+          base.expects(:result_class).with(:result_type).returns(result_object)
+          base.summarize
+        end
+      end
+    end
+  end
+end