spec/tretry_spec.rb in tretry-0.0.1 vs spec/tretry_spec.rb in tretry-0.0.2

- old
+ new

@@ -1,47 +1,78 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper') describe "Tretry" do - it "should be able to run blocks" do - try = 0 - res = Tretry.try(:tries => 5) do - try += 1 - raise "Test #{try}" if try < 5 - "kasper" + context "#try" do + it "should be able to run blocks" do + try = 0 + res = Tretry.try(tries: 5) do + try += 1 + raise "Test #{try}" if try < 5 + "kasper" + end + + res[:error].should eq false + res[:result].should eq "kasper" end - - raise "Expected error to be false but it wasnt: '#{res[:error]}'." if res[:error] != false - raise "Expected result to be 'kasper' but it wasnt: '#{res[:result]}'." if res[:result] != "kasper" - end - - it "should be able to do waits between tries" do - try = 0 - time_start = Time.now.to_f - res = Tretry.try(:tries => 5, :wait => 0.1) do - try += 1 - raise "Test #{try}" if try < 5 - "kasper" + + it "should be able to do waits between tries" do + try = 0 + time_start = Time.now.to_f + res = Tretry.try(tries: 5, wait: 0.1) do + try += 1 + raise "Test #{try}" if try < 5 + "kasper" + end + + time_end = Time.now.to_f + time_elap = time_end - time_start + time_elap.should > 0.4 end - - time_end = Time.now.to_f - time_elap = time_end - time_start - - raise "Expected time to be more than 0.4 sec but it wasnt: '#{time_elap}'." if time_elap < 0.4 + + it "should be able to do timeouts with tries" do + try = 0 + res = Tretry.try(tries: 5, timeout: 0.1) do + try += 1 + sleep 0.5 if try < 5 + "kasper" + end + + res[:error].should eq false + res[:result].should eq "kasper" + res[:fails].length.should eq 4 + + res[:fails].each do |err| + err[:error].is_a?(Timeout::Error).should eq true + end + end end - - it "should be able to do timeouts with tries" do - try = 0 - res = Tretry.try(:tries => 5, :timeout => 0.1) do - try += 1 - sleep 0.5 if try < 5 - "kasper" + + it "#before_retry" do + before_retry_count = 0 + try_count = 0 + + try = Tretry.new + + try.before_retry do + before_retry_count += 1 end - - raise "Expected error to be false but it wasnt: '#{res[:error]}'." if res[:error] != false - raise "Expected result to be 'kasper' but it wasnt: '#{res[:result]}'." if res[:result] != "kasper" - raise "Expected number of errors to be 4 but it wasnt: '#{res[:tries].length}'." if res[:tries].length != 4 - - res[:tries].each do |err| - raise "Expected error to be 'Timeout::Error' but it wasnt: '#{err[:error].class.name}'." if !err[:error].is_a?(Timeout::Error) + + try.try do + try_count += 1 + raise "test" if try_count < 3 end + + before_retry_count.should eq 2 + + try.fails.each do |try_i| + try_i[:error].is_a?(RuntimeError).should eq true + end + end + + it "should raise an error if fails" do + expect { + Tretry.try do + raise "fail" + end + }.to raise_error(RuntimeError) end end