Updated mcollective.init according to OSCI-658
[packages/precise/mcollective.git] / spec / unit / logger / base_spec.rb
diff --git a/spec/unit/logger/base_spec.rb b/spec/unit/logger/base_spec.rb
new file mode 100755 (executable)
index 0000000..e618f65
--- /dev/null
@@ -0,0 +1,118 @@
+#!/usr/bin/env rspec
+
+require 'spec_helper'
+
+module MCollective::Logger
+  describe Base do
+    before do
+      Base.any_instance.stubs(:set_logging_level).returns(true)
+      Base.any_instance.stubs(:valid_levels).returns({:info  => :info_test,
+                                                       :warn  => :warning_test,
+                                                       :debug => :debug_test,
+                                                       :fatal => :crit_test,
+                                                       :error => :err_test})
+    end
+
+    describe "#initialize" do
+      it "should check for valid levels" do
+        Base.any_instance.stubs(:valid_levels).returns({})
+
+        expect {
+          Base.new
+        }.to raise_error(/Logger class did not specify a map for/)
+      end
+
+      it "should accept correct levels" do
+        logger = Base.new
+        logger.set_level :warn
+
+        logger.should_log?(:debug).should == false
+        logger.should_log?(:error).should == true
+      end
+    end
+
+    describe "#should_log?" do
+      it "should correctly determine if a line should be logged" do
+      end
+    end
+    describe "#valid_levels" do
+      it "should report if valid_levels was not implimented" do
+        Base.any_instance.unstub(:valid_levels)
+
+        expect {
+          logger = Base.new
+        }.to raise_error("The logging class did not supply a valid_levels method")
+      end
+    end
+
+    describe "#log" do
+      it "should report if log was not implimented" do
+        logger = Base.new
+
+        expect {
+          logger.send(:log, nil, nil, nil)
+        }.to raise_error("The logging class did not supply a log method")
+      end
+    end
+
+    describe "#start" do
+      it "should report if log was not implimented" do
+        logger = Base.new
+
+        expect {
+          logger.send(:start)
+        }.to raise_error("The logging class did not supply a start method")
+      end
+    end
+
+    describe "#map_level" do
+      it "should map levels correctly" do
+        logger = Base.new
+
+        logger.send(:map_level, :info).should == :info_test
+        logger.send(:map_level, :warn).should == :warning_test
+        logger.send(:map_level, :debug).should == :debug_test
+        logger.send(:map_level, :fatal).should == :crit_test
+        logger.send(:map_level, :error).should == :err_test
+      end
+    end
+
+    describe "#get_next_level" do
+      it "should supply the correct next level" do
+        logger = Base.new
+        logger.set_level(:fatal)
+
+        logger.send(:get_next_level).should == :debug
+      end
+    end
+
+    describe "#cycle_level" do
+      it "should set the level to the next one and log the event" do
+        logger = Base.new
+
+        logger.stubs(:get_next_level).returns(:error)
+
+        logger.expects(:set_level).with(:error)
+        logger.expects(:log).with(:error, "", "Logging level is now ERROR")
+
+        logger.cycle_level
+      end
+    end
+
+    describe "#set_level" do
+      it "should set the active level" do
+        logger = Base.new
+
+        logger.set_level(:error)
+
+        logger.active_level.should == :error
+      end
+
+      it "should set the level on the logger" do
+        logger = Base.new
+
+        logger.set_level(:error)
+      end
+    end
+  end
+end