Skip to content

Instantly share code, notes, and snippets.

@zilkey
Created September 30, 2009 15:28
Show Gist options
  • Save zilkey/198176 to your computer and use it in GitHub Desktop.
Save zilkey/198176 to your computer and use it in GitHub Desktop.
# created by Peter Jaros and Jeff Dean
require "rubygems"
require "spec"
require "active_support"
module Weekdays
def advance_weekdays(days)
d = self
days.times do |day|
increment = d.wday == 5 ? 3 : 1
d = d.advance(:days => increment)
end
d
end
end
DateTime.send(:include, Weekdays)
Date.send(:include, Weekdays)
Time.send(:include, Weekdays)
[Time, DateTime, Date].each do |klass|
describe klass do
describe "#advance_weekdays" do
it "should skip Saturdays and Sundays" do
monday = klass.parse("2009-09-07")
friday = klass.parse("2009-09-11")
target = monday.advance_weekdays(5)
target.should == klass.parse("2009-09-14")
target = monday.advance_weekdays(4)
target.should == klass.parse("2009-09-11")
target = monday.advance_weekdays(2)
target.should == klass.parse("2009-09-09")
target = monday.advance_weekdays(10)
target.should == klass.parse("2009-09-21")
target = friday.advance_weekdays(1)
target.should == klass.parse("2009-09-14")
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment