require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') describe Holiday, " when calculating due date" do fixtures :holidays def due_date(ymd) return Holiday.due_date_from(Date.strptime(ymd), 20).strftime("%F") end it "handles no holidays" do due_date('2008-10-01').should == '2008-10-29' end it "handles non leap years" do due_date('2007-02-01').should == '2007-03-01' end it "handles leap years" do due_date('2008-02-01').should == '2008-02-29' end it "handles Thursday start" do due_date('2009-03-12').should == '2009-04-14' end it "handles Friday start" do due_date('2009-03-13').should == '2009-04-15' end # Delivery at the weekend ends up the same due day as if it had arrived on # the Friday before. This is because the next working day (Monday) counts # as day 1. # See http://www.whatdotheyknow.com/help/officers#days it "handles Saturday start" do due_date('2009-03-14').should == '2009-04-15' end it "handles Sunday start" do due_date('2009-03-15').should == '2009-04-15' end it "handles Monday start" do due_date('2009-03-16').should == '2009-04-16' end it "handles Time objects" do Holiday.due_date_from(Time.utc(2009, 03, 16, 12, 0, 0), 20).strftime('%F').should == '2009-04-16' end end