spec/lib/fozzie_spec.rb in fozzie-0.0.15 vs spec/lib/fozzie_spec.rb in fozzie-0.0.16

- old
+ new

@@ -1,155 +1,23 @@ require 'spec_helper' -require 'fozzie/classes' describe Fozzie do - it { should respond_to(:c) } - it { should respond_to(:config) } + it "allows dynamic assignment" do + { :host => 'somewhere.local', :port => 99 }.each do |field, val| + Fozzie.configure {|c| c.send("#{field}=", val) } + Fozzie.c.send(field).should == val + end + end it "has configuration" do Fozzie.config.should be_kind_of(Fozzie::Configuration) Fozzie.c.should be_kind_of(Fozzie::Configuration) end it "creates new classes for statistics gathering" do Fozzie.c.namespaces.each do |k| Kernel.const_defined?(k).should == true end - end - - it "acts like its inherited parent" do - Fozzie.c.namespaces.each do |k| - kl = Kernel.const_get(k) - kl.should respond_to(:increment) - kl.should respond_to(:decrement) - kl.should respond_to(:timing) - kl.should respond_to(:count) - kl.should respond_to(:time) - end - end - - it "acts an a singleton" do - Fozzie.c.namespaces.each do |k| - kl1, kl2 = Kernel.const_get(k), Kernel.const_get(k) - kl1.should == kl2 - end - end - - it "times a given block" do - Stats.expects(:timing).with() {|b, val, timing| b == 'data.bin' && (1000..1200).include?(val) }.twice - Stats.time_for('data.bin') { sleep 1 } - Stats.time_to_do('data.bin') { sleep 1 } - end - - it "registers a commit" do - Stats.expects(:timing).with('event.commit', anything).twice - Stats.commit - Stats.committed - end - - it "registers a build" do - Stats.expects(:timing).with('event.build', anything).twice - Stats.build - Stats.built - end - - it "registers a deploy" do - Stats.expects(:timing).with('event.deploy', anything).twice - Stats.deploy - Stats.deployed - end - - it "ensures block is called on socket error" do - UDPSocket.any_instance.stubs(:send).raises(SocketError) - proc { Stats.time_for('data.bin') { sleep 1 } }.should_not raise_error - proc { Stats.time_to_do('data.bin') { sleep 1 } }.should_not raise_error - end - - it "raises exception if natural exception from block" do - proc { Stats.time_for('data.bin') { raise ArgumentError, "testing" } }.should raise_error(ArgumentError) - end - - it "only calls the block once on SocketError" do - UDPSocket.any_instance.stubs(:send).raises(SocketError) - i = 0 - p = proc {|n| (n + 1) } - val = Stats.time_for('data.bin') { i+= p.call(i) } - val.should == 1 - end - - describe "#increment_on" do - - it "registers success" do - Stats.expects(:increment).with("event.increment.success", 1) - Stats.increment_on('event.increment', true).should == true - end - - it "registers failure" do - Stats.expects(:increment).with("event.increment.fail", 1) - Stats.increment_on('event.increment', false).should == false - end - - it "simply questions the passed val with if" do - a = mock() - a.expects(:save).returns({}) - Stats.expects(:increment).with("event.increment.success", 1) - Stats.increment_on('event.increment', a.save).should == {} - end - - it "registers fail on nil return" do - a = mock() - a.expects(:save).returns(nil) - Stats.expects(:increment).with("event.increment.fail", 1) - Stats.increment_on('event.increment', a.save).should == nil - end - - describe "performing actions" do - - it "registers success" do - a = mock() - a.expects(:save).returns(true) - Stats.expects(:increment).with("event.increment.success", 1) - Stats.increment_on('event.increment', a.save).should == true - end - - it "registers failure" do - a = mock() - a.expects(:save).returns(false) - Stats.expects(:increment).with("event.increment.fail", 1) - Stats.increment_on('event.increment', a.save).should == false - end - - it "registers positive even when nested" do - a = mock() - a.expects(:save).returns(true) - Stats.expects(:timing).with('event.run', any_parameters) - Stats.expects(:increment).with("event.increment.success", 1) - - res = Stats.time_to_do "event.run" do - Stats.increment_on('event.increment', a.save) - end - res.should == true - end - - it "registers negative even when nested" do - a = mock() - a.expects(:save).returns(false) - Stats.expects(:timing).with('event.run', any_parameters) - Stats.expects(:increment).with("event.increment.fail", 1) - - res = Stats.time_to_do "event.run" do - Stats.increment_on('event.increment', a.save) - end - res.should == false - end - - it "allows passing of arrays for stat key" do - Stats.expects(:timing).with('event.commit', any_parameters) - Stats.time_to_do %w{event commit} do; end - end - - end - end end \ No newline at end of file