is_business_day 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/MIT-LICENSE +20 -0
- data/README.md +5 -3
- data/lib/is_business_day.rb +19 -4
- data/lib/is_business_day/business_days.rb +11 -0
- data/lib/is_business_day/business_days/calculations.rb +29 -0
- data/lib/is_business_day/business_days/tests.rb +17 -0
- data/lib/is_business_day/christmas.rb +15 -0
- data/lib/is_business_day/christmas/day/calculations.rb +23 -0
- data/lib/is_business_day/christmas/day/tests.rb +21 -0
- data/lib/is_business_day/christmas/eve/calculations.rb +23 -0
- data/lib/is_business_day/christmas/eve/tests.rb +21 -0
- data/lib/is_business_day/fourth_of_july.rb +11 -0
- data/lib/is_business_day/fourth_of_july/calculations.rb +19 -0
- data/lib/is_business_day/fourth_of_july/tests.rb +17 -0
- data/lib/is_business_day/helpers.rb +53 -0
- data/lib/is_business_day/holidays.rb +31 -0
- data/lib/is_business_day/labor_day.rb +11 -0
- data/lib/is_business_day/labor_day/calculations.rb +22 -0
- data/lib/is_business_day/labor_day/tests.rb +18 -0
- data/lib/is_business_day/memorial_day.rb +11 -0
- data/lib/is_business_day/memorial_day/calculations.rb +24 -0
- data/lib/is_business_day/memorial_day/tests.rb +22 -0
- data/lib/is_business_day/new_years_day.rb +11 -0
- data/lib/is_business_day/new_years_day/calculations.rb +19 -0
- data/lib/is_business_day/new_years_day/tests.rb +17 -0
- data/lib/is_business_day/thanksgiving.rb +12 -0
- data/lib/is_business_day/thanksgiving/calculations.rb +24 -0
- data/lib/is_business_day/thanksgiving/tests.rb +22 -0
- data/lib/is_business_day/version.rb +1 -1
- data/spec/is_business_day/christmas_spec.rb +147 -0
- data/spec/is_business_day/fourth_of_july_spec.rb +70 -0
- data/spec/is_business_day/is_business_day_spec.rb +50 -0
- data/spec/is_business_day/labor_day_spec.rb +78 -0
- data/spec/is_business_day/memorial_day_spec.rb +73 -0
- data/spec/is_business_day/new_years_day_spec.rb +65 -0
- data/spec/is_business_day/thanksgiving_spec.rb +73 -0
- data/spec/spec_helper.rb +14 -0
- metadata +95 -36
- data/.gitignore +0 -4
- data/.travis.yml +0 -5
- data/Gemfile +0 -4
- data/Guardfile +0 -4
- data/is_business_day.gemspec +0 -26
- data/lib/is_business_day/active_support/core_ext/date/calculations.rb +0 -6
- data/lib/is_business_day/active_support/core_ext/time/calculations.rb +0 -6
- data/lib/is_business_day/digitalopera/business_day_calculations.rb +0 -55
- data/lib/is_business_day/digitalopera/holiday_calculations.rb +0 -130
- data/lib/rails/generators/is_business_day/install/install_generator.rb +0 -16
- data/lib/rails/generators/is_business_day/install/templates/is_business_day.rb +0 -1
- data/spec/active_support/core_ext/date/calculations_spec.rb +0 -165
- data/spec/active_support/core_ext/time/calculations_spec.rb +0 -165
data/Gemfile
DELETED
data/Guardfile
DELETED
data/is_business_day.gemspec
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "is_business_day/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |s|
|
6
|
-
s.name = "is_business_day"
|
7
|
-
s.version = IsBusinessDay::VERSION
|
8
|
-
s.authors = ["JD Hendrickson"]
|
9
|
-
s.email = ["jd@digitalopera.com"]
|
10
|
-
s.homepage = ""
|
11
|
-
s.summary = %q{Simple business day detection}
|
12
|
-
s.description = %q{Adds some methods to the Ruby Date object for testing whether or not a specific date falls on a valid business day or not}
|
13
|
-
|
14
|
-
s.rubyforge_project = "is_business_day"
|
15
|
-
|
16
|
-
s.files = `git ls-files`.split("\n")
|
17
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
-
s.require_paths = ["lib"]
|
20
|
-
|
21
|
-
# Dependencies --------------------------------------------------------------
|
22
|
-
s.add_development_dependency "rspec", "~> 2.6"
|
23
|
-
s.add_development_dependency "guard-rspec", "~> 0.0"
|
24
|
-
s.add_development_dependency "rake", "~> 0.9.2"
|
25
|
-
s.add_dependency "activesupport", "~>3.0"
|
26
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/numeric/time'
|
2
|
-
require 'active_support/core_ext/date/calculations'
|
3
|
-
require 'active_support/core_ext/time/calculations'
|
4
|
-
|
5
|
-
module DigitalOpera
|
6
|
-
module BusinessDayCalculations
|
7
|
-
# Returns TRUE || FALSE if the date is a valid business day
|
8
|
-
# this also accounts for holidays
|
9
|
-
#
|
10
|
-
def is_a_business_day?
|
11
|
-
(self.monday? || self.tuesday? || self.wednesday? || self.thursday? || self.friday?) && self.is_not_a_holiday?
|
12
|
-
end
|
13
|
-
|
14
|
-
# Returns TRUE || FALSE if the date IS NOT a valid business day
|
15
|
-
# this also accounts for holidays
|
16
|
-
#
|
17
|
-
def is_not_a_business_day?
|
18
|
-
self.saturday? || self.sunday? || self.is_a_holiday?
|
19
|
-
end
|
20
|
-
|
21
|
-
# Returns the first business day following the date. This will account for
|
22
|
-
# ANY non-business day, holidays included.
|
23
|
-
#
|
24
|
-
def next_business_day
|
25
|
-
next_business_day = self
|
26
|
-
|
27
|
-
begin
|
28
|
-
next_business_day = (next_business_day.to_time + 1.day).to_date
|
29
|
-
end while next_business_day.is_not_a_business_day?
|
30
|
-
|
31
|
-
if self.class.name == "Time"
|
32
|
-
return next_business_day.to_time
|
33
|
-
else
|
34
|
-
return next_business_day
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# Returns the first business day preceding the date. This will account for
|
39
|
-
# ANY non-business day, holidays included.
|
40
|
-
#
|
41
|
-
def previous_business_day
|
42
|
-
previous_business_day = self
|
43
|
-
|
44
|
-
begin
|
45
|
-
previous_business_day = (previous_business_day.to_time - 1.day).to_date
|
46
|
-
end while previous_business_day.is_not_a_business_day?
|
47
|
-
|
48
|
-
if self.class.name == "Time"
|
49
|
-
return previous_business_day.to_time
|
50
|
-
else
|
51
|
-
return previous_business_day
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,130 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/numeric/time'
|
2
|
-
require 'active_support/core_ext/date/calculations'
|
3
|
-
require 'active_support/core_ext/time/calculations'
|
4
|
-
require 'active_support/core_ext/array/access'
|
5
|
-
|
6
|
-
module DigitalOpera
|
7
|
-
module HolidayCalculations
|
8
|
-
# Returns TRUE || FALSE if the date is a recognized holiday
|
9
|
-
#
|
10
|
-
def is_a_holiday?
|
11
|
-
self.is_memorial_day? || self.is_labor_day? || self.is_thanksgiving_day? || self.is_new_years_day? || self.is_xmas_day? || self.is_xmas_eve? || self.is_fourth_of_july?
|
12
|
-
end
|
13
|
-
|
14
|
-
# Returns TRUE || FALSE if the date IS NOT a recognized holiday
|
15
|
-
#
|
16
|
-
def is_not_a_holiday?
|
17
|
-
self.is_not_memorial_day? && self.is_not_labor_day? && self.is_not_thanksgiving_day? && self.is_not_new_years_day? && self.is_not_xmas_day? && self.is_not_xmas_eve? && self.is_not_fourth_of_july?
|
18
|
-
end
|
19
|
-
|
20
|
-
# Labor Day (First monday in september)
|
21
|
-
# http://en.wikipedia.org/wiki/Labor_Day
|
22
|
-
#
|
23
|
-
def labor_day_this_year
|
24
|
-
september = Date.parse("01/09/#{self.year}")
|
25
|
-
labor_day = september.beginning_of_month.step(september.end_of_month, 1).map{ |day| day if day.monday? }.compact.first
|
26
|
-
if self.class.name == "Time"
|
27
|
-
return labor_day.to_time
|
28
|
-
else
|
29
|
-
return labor_day
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def is_labor_day?
|
34
|
-
self == self.labor_day_this_year
|
35
|
-
end
|
36
|
-
|
37
|
-
def is_not_labor_day?
|
38
|
-
self != self.labor_day_this_year
|
39
|
-
end
|
40
|
-
|
41
|
-
# Memorial Day (Last monday in may)
|
42
|
-
# http://en.wikipedia.org/wiki/Memorial_Day
|
43
|
-
#
|
44
|
-
def memorial_day_this_year
|
45
|
-
may = Date.parse("01/05/#{self.year}")
|
46
|
-
memorial_day = may.beginning_of_month.step(may.end_of_month, 1).map{ |day| day if day.monday? }.compact.last
|
47
|
-
if self.class.name == "Time"
|
48
|
-
return memorial_day.to_time
|
49
|
-
else
|
50
|
-
return memorial_day
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def is_memorial_day?
|
55
|
-
self == self.memorial_day_this_year
|
56
|
-
end
|
57
|
-
|
58
|
-
def is_not_memorial_day?
|
59
|
-
self != self.memorial_day_this_year
|
60
|
-
end
|
61
|
-
|
62
|
-
# Thanksgiving Day (fourth thursday in november in the US)
|
63
|
-
# http://en.wikipedia.org/wiki/Thanksgiving
|
64
|
-
#
|
65
|
-
def thanksgiving_day_this_year
|
66
|
-
november = Date.parse("01/11/#{self.year}")
|
67
|
-
thanksgiving_day = november.beginning_of_month.step(november.end_of_month, 1).map{ |day| day if day.thursday? }.compact.fourth
|
68
|
-
if self.class.name == "Time"
|
69
|
-
return thanksgiving_day.to_time
|
70
|
-
else
|
71
|
-
return thanksgiving_day
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
def is_thanksgiving_day?
|
76
|
-
self == self.thanksgiving_day_this_year
|
77
|
-
end
|
78
|
-
|
79
|
-
def is_not_thanksgiving_day?
|
80
|
-
self != self.thanksgiving_day_this_year
|
81
|
-
end
|
82
|
-
|
83
|
-
# Christmas Day (December 25th) & Christmas Eve (December 24th)
|
84
|
-
# Since these holidays do not change from year to year, we are only providing
|
85
|
-
# boolean checks
|
86
|
-
#
|
87
|
-
def is_christmas_day?
|
88
|
-
self.month == 12 && self.mday == 25
|
89
|
-
end
|
90
|
-
alias_method :is_xmas_day?, :is_christmas_day?
|
91
|
-
|
92
|
-
def is_not_christmas_day?
|
93
|
-
self.month != 12 || self.mday != 25
|
94
|
-
end
|
95
|
-
alias_method :is_not_xmas_day?, :is_not_christmas_day?
|
96
|
-
|
97
|
-
def is_christmas_eve?
|
98
|
-
self.month == 12 && self.mday == 24
|
99
|
-
end
|
100
|
-
alias_method :is_xmas_eve?, :is_christmas_eve?
|
101
|
-
|
102
|
-
def is_not_christmas_eve?
|
103
|
-
self.month != 12 || self.mday != 24
|
104
|
-
end
|
105
|
-
alias_method :is_not_xmas_eve?, :is_not_christmas_eve?
|
106
|
-
|
107
|
-
# New Years Day (January 1st)
|
108
|
-
# Since this holiday does not change, it is always January 1st, we are only providing
|
109
|
-
# boolean checks
|
110
|
-
#
|
111
|
-
def is_new_years_day?
|
112
|
-
self.yday == 1
|
113
|
-
end
|
114
|
-
|
115
|
-
def is_not_new_years_day?
|
116
|
-
self.yday != 1
|
117
|
-
end
|
118
|
-
|
119
|
-
# July 4th
|
120
|
-
# Since this holiday does not change we are only providing boolean checks
|
121
|
-
#
|
122
|
-
def is_fourth_of_july?
|
123
|
-
self.month == 7 && self.mday == 4
|
124
|
-
end
|
125
|
-
|
126
|
-
def is_not_fourth_of_july?
|
127
|
-
self.month != 7 || self.mday != 4
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
|
2
|
-
module IsBusinessDay
|
3
|
-
module Generators
|
4
|
-
class InstallGenerator < Rails::Generators::Base
|
5
|
-
desc "Creates an initializer file that can be used to specify business day rules"
|
6
|
-
|
7
|
-
def self.source_root
|
8
|
-
@_ibd_source_root ||= File.expand_path("../templates", __FILE__)
|
9
|
-
end
|
10
|
-
|
11
|
-
def create_initializer_file
|
12
|
-
template "is_business_day.rb", File.join('config/initializers', "is_business_day.rb")
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
# is_business_day initializer
|
@@ -1,165 +0,0 @@
|
|
1
|
-
require "is_business_day"
|
2
|
-
|
3
|
-
describe Date do
|
4
|
-
it "should know that monday is a valid business day" do
|
5
|
-
Date.parse("26/03/2012").is_a_business_day?.should be_true
|
6
|
-
end
|
7
|
-
|
8
|
-
it "should know that tuesday is a valid business day" do
|
9
|
-
Date.parse("27/03/2012").is_a_business_day?.should be_true
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should know that wednesday is a valid business day" do
|
13
|
-
Date.parse("28/03/2012").is_a_business_day?.should be_true
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should know that thursday is a valid business day" do
|
17
|
-
Date.parse("29/03/2012").is_a_business_day?.should be_true
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should know that friday is a valid business day" do
|
21
|
-
Date.parse("30/03/2012").is_a_business_day?.should be_true
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should know that saturday is not a valid business day" do
|
25
|
-
Date.parse("31/03/2012").is_not_a_business_day?.should be_true
|
26
|
-
Date.parse("31/03/2012").is_a_business_day?.should be_false
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should know that sunday is not a valid business day" do
|
30
|
-
Date.parse("01/04/2012").is_not_a_business_day?.should be_true
|
31
|
-
Date.parse("01/04/2012").is_a_business_day?.should be_false
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should know that the next business day for a friday is monday" do
|
35
|
-
next_business_day = Date.parse("30/03/2012").next_business_day
|
36
|
-
next_business_day.should eql(Date.parse("02/04/2012"))
|
37
|
-
next_business_day.monday?.should be_true
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should know that the business day previous a monday was friday" do
|
41
|
-
previous_business_day = Date.parse("26/03/2012").previous_business_day
|
42
|
-
previous_business_day.should eql(Date.parse("23/03/2012"))
|
43
|
-
previous_business_day.friday?.should be_true
|
44
|
-
end
|
45
|
-
|
46
|
-
it "should know when labor day is" do
|
47
|
-
test_date = Date.parse("06/06/2012")
|
48
|
-
test_date.labor_day_this_year.should eql(Date.parse("03/09/2012"))
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should know when memorial day is" do
|
52
|
-
test_date = Date.parse("06/06/2012")
|
53
|
-
test_date.memorial_day_this_year.should eql(Date.parse("28/05/2012"))
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should know when thanksgiving is" do
|
57
|
-
test_date = Date.parse("06/06/2012")
|
58
|
-
test_date.thanksgiving_day_this_year.should eql(Date.parse("22/11/2012"))
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should be able to tell if it is memorial day and that it is not a valid business day" do
|
62
|
-
bad_date = Date.parse("06/06/2012")
|
63
|
-
good_date = Date.parse("28/05/2012")
|
64
|
-
bad_date.is_memorial_day?.should be_false
|
65
|
-
bad_date.is_not_memorial_day?.should be_true
|
66
|
-
good_date.is_memorial_day?.should be_true
|
67
|
-
good_date.is_not_memorial_day?.should be_false
|
68
|
-
good_date.is_not_a_business_day?.should be_true
|
69
|
-
good_date.is_a_business_day?.should be_false
|
70
|
-
end
|
71
|
-
|
72
|
-
it "should be able to tell if it is labor day and that it is not a valid business day" do
|
73
|
-
bad_date = Date.parse("06/06/2012")
|
74
|
-
good_date = Date.parse("03/09/2012")
|
75
|
-
bad_date.is_labor_day?.should be_false
|
76
|
-
bad_date.is_not_labor_day?.should be_true
|
77
|
-
good_date.is_labor_day?.should be_true
|
78
|
-
good_date.is_not_labor_day?.should be_false
|
79
|
-
good_date.is_not_a_business_day?.should be_true
|
80
|
-
good_date.is_a_business_day?.should be_false
|
81
|
-
end
|
82
|
-
|
83
|
-
it "should be able to tell if it is thanksgiving day and that it is not a valid business day" do
|
84
|
-
bad_date = Date.parse("06/06/2012")
|
85
|
-
good_date = Date.parse("22/11/2012")
|
86
|
-
bad_date.is_thanksgiving_day?.should be_false
|
87
|
-
bad_date.is_not_thanksgiving_day?.should be_true
|
88
|
-
good_date.is_thanksgiving_day?.should be_true
|
89
|
-
good_date.is_not_thanksgiving_day?.should be_false
|
90
|
-
good_date.is_not_a_business_day?.should be_true
|
91
|
-
good_date.is_a_business_day?.should be_false
|
92
|
-
end
|
93
|
-
|
94
|
-
it "should be able to tell if it is xmas day and that it is not a valid business day" do
|
95
|
-
bad_date = Date.parse("06/06/2012")
|
96
|
-
good_date = Date.parse("25/12/2012")
|
97
|
-
bad_date.is_christmas_day?.should be_false
|
98
|
-
bad_date.is_not_christmas_day?.should be_true
|
99
|
-
good_date.is_christmas_day?.should be_true
|
100
|
-
good_date.is_not_christmas_day?.should be_false
|
101
|
-
good_date.is_not_a_business_day?.should be_true
|
102
|
-
good_date.is_a_business_day?.should be_false
|
103
|
-
end
|
104
|
-
|
105
|
-
it "should be able to tell if it is xmas eve and that it is not a valid business day" do
|
106
|
-
bad_date = Date.parse("06/06/2012")
|
107
|
-
good_date = Date.parse("24/12/2012")
|
108
|
-
bad_date.is_christmas_eve?.should be_false
|
109
|
-
bad_date.is_not_christmas_eve?.should be_true
|
110
|
-
good_date.is_christmas_eve?.should be_true
|
111
|
-
good_date.is_not_christmas_eve?.should be_false
|
112
|
-
good_date.is_not_a_business_day?.should be_true
|
113
|
-
good_date.is_a_business_day?.should be_false
|
114
|
-
end
|
115
|
-
|
116
|
-
it "should be able to tell if it is new year's day and that it is not a valid business day" do
|
117
|
-
bad_date = Date.parse("06/06/2012")
|
118
|
-
good_date = Date.parse("01/01/2012")
|
119
|
-
bad_date.is_new_years_day?.should be_false
|
120
|
-
bad_date.is_not_new_years_day?.should be_true
|
121
|
-
good_date.is_new_years_day?.should be_true
|
122
|
-
good_date.is_not_new_years_day?.should be_false
|
123
|
-
good_date.is_not_a_business_day?.should be_true
|
124
|
-
good_date.is_a_business_day?.should be_false
|
125
|
-
end
|
126
|
-
|
127
|
-
it "should be able to tell if it is the fourth of july and that it is not a valid business day" do
|
128
|
-
bad_date = Date.parse("06/06/2012")
|
129
|
-
good_date = Date.parse("04/07/2012")
|
130
|
-
bad_date.is_fourth_of_july?.should be_false
|
131
|
-
bad_date.is_not_fourth_of_july?.should be_true
|
132
|
-
good_date.is_fourth_of_july?.should be_true
|
133
|
-
good_date.is_not_fourth_of_july?.should be_false
|
134
|
-
good_date.is_not_a_business_day?.should be_true
|
135
|
-
good_date.is_a_business_day?.should be_false
|
136
|
-
end
|
137
|
-
|
138
|
-
it "should be able to tell if it is a holiday or not" do
|
139
|
-
new_years_day = Date.parse("01/01/2012")
|
140
|
-
memorial_day = Date.parse("28/05/2012")
|
141
|
-
fourth_of_july = Date.parse("04/07/2012")
|
142
|
-
labor_day = Date.parse("03/09/2012")
|
143
|
-
thanksgiving_day = Date.parse("22/11/2012")
|
144
|
-
xmas_eve = Date.parse("24/12/2012")
|
145
|
-
xmas_day = Date.parse("25/12/2012")
|
146
|
-
bad_date = Date.parse("06/06/2012")
|
147
|
-
|
148
|
-
new_years_day.is_a_holiday?.should be_true
|
149
|
-
new_years_day.is_not_a_holiday?.should be_false
|
150
|
-
memorial_day.is_a_holiday?.should be_true
|
151
|
-
memorial_day.is_not_a_holiday?.should be_false
|
152
|
-
fourth_of_july.is_a_holiday?.should be_true
|
153
|
-
fourth_of_july.is_not_a_holiday?.should be_false
|
154
|
-
labor_day.is_a_holiday?.should be_true
|
155
|
-
labor_day.is_not_a_holiday?.should be_false
|
156
|
-
thanksgiving_day.is_a_holiday?.should be_true
|
157
|
-
thanksgiving_day.is_not_a_holiday?.should be_false
|
158
|
-
xmas_eve.is_a_holiday?.should be_true
|
159
|
-
xmas_eve.is_not_a_holiday?.should be_false
|
160
|
-
xmas_day.is_a_holiday?.should be_true
|
161
|
-
xmas_day.is_not_a_holiday?.should be_false
|
162
|
-
bad_date.is_a_holiday?.should be_false
|
163
|
-
bad_date.is_not_a_holiday?.should be_true
|
164
|
-
end
|
165
|
-
end
|
@@ -1,165 +0,0 @@
|
|
1
|
-
require "is_business_day"
|
2
|
-
|
3
|
-
describe Time do
|
4
|
-
it "should know that monday is a valid business day" do
|
5
|
-
Time.parse("26/03/2012").is_a_business_day?.should be_true
|
6
|
-
end
|
7
|
-
|
8
|
-
it "should know that tuesday is a valid business day" do
|
9
|
-
Time.parse("27/03/2012").is_a_business_day?.should be_true
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should know that wednesday is a valid business day" do
|
13
|
-
Time.parse("28/03/2012").is_a_business_day?.should be_true
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should know that thursday is a valid business day" do
|
17
|
-
Time.parse("29/03/2012").is_a_business_day?.should be_true
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should know that friday is a valid business day" do
|
21
|
-
Time.parse("30/03/2012").is_a_business_day?.should be_true
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should know that saturday is not a valid business day" do
|
25
|
-
Time.parse("31/03/2012").is_not_a_business_day?.should be_true
|
26
|
-
Time.parse("31/03/2012").is_a_business_day?.should be_false
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should know that sunday is not a valid business day" do
|
30
|
-
Time.parse("01/04/2012").is_not_a_business_day?.should be_true
|
31
|
-
Time.parse("01/04/2012").is_a_business_day?.should be_false
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should know that the next business day for a friday is monday" do
|
35
|
-
next_business_day = Time.parse("30/03/2012").next_business_day
|
36
|
-
next_business_day.should eql(Time.parse("02/04/2012"))
|
37
|
-
next_business_day.monday?.should be_true
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should know that the business day previous a monday was friday" do
|
41
|
-
previous_business_day = Time.parse("26/03/2012").previous_business_day
|
42
|
-
previous_business_day.should eql(Time.parse("23/03/2012"))
|
43
|
-
previous_business_day.friday?.should be_true
|
44
|
-
end
|
45
|
-
|
46
|
-
it "should know when labor day is" do
|
47
|
-
test_time = Time.parse("06/06/2012")
|
48
|
-
test_time.labor_day_this_year.should eql(Time.parse("03/09/2012"))
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should know when memorial day is" do
|
52
|
-
test_time = Time.parse("06/06/2012")
|
53
|
-
test_time.memorial_day_this_year.should eql(Time.parse("28/05/2012"))
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should know when thanksgiving is" do
|
57
|
-
test_time = Time.parse("06/06/2012")
|
58
|
-
test_time.thanksgiving_day_this_year.should eql(Time.parse("22/11/2012"))
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should be able to tell if it is memorial day and that it is not a valid business day" do
|
62
|
-
bad_date = Time.parse("06/06/2012")
|
63
|
-
good_date = Time.parse("28/05/2012")
|
64
|
-
bad_date.is_memorial_day?.should be_false
|
65
|
-
bad_date.is_not_memorial_day?.should be_true
|
66
|
-
good_date.is_memorial_day?.should be_true
|
67
|
-
good_date.is_not_memorial_day?.should be_false
|
68
|
-
good_date.is_not_a_business_day?.should be_true
|
69
|
-
good_date.is_a_business_day?.should be_false
|
70
|
-
end
|
71
|
-
|
72
|
-
it "should be able to tell if it is labor day and that it is not a valid business day" do
|
73
|
-
bad_date = Time.parse("06/06/2012")
|
74
|
-
good_date = Time.parse("03/09/2012")
|
75
|
-
bad_date.is_labor_day?.should be_false
|
76
|
-
bad_date.is_not_labor_day?.should be_true
|
77
|
-
good_date.is_labor_day?.should be_true
|
78
|
-
good_date.is_not_labor_day?.should be_false
|
79
|
-
good_date.is_not_a_business_day?.should be_true
|
80
|
-
good_date.is_a_business_day?.should be_false
|
81
|
-
end
|
82
|
-
|
83
|
-
it "should be able to tell if it is thanksgiving day and that it is not a valid business day" do
|
84
|
-
bad_date = Time.parse("06/06/2012")
|
85
|
-
good_date = Time.parse("22/11/2012")
|
86
|
-
bad_date.is_thanksgiving_day?.should be_false
|
87
|
-
bad_date.is_not_thanksgiving_day?.should be_true
|
88
|
-
good_date.is_thanksgiving_day?.should be_true
|
89
|
-
good_date.is_not_thanksgiving_day?.should be_false
|
90
|
-
good_date.is_not_a_business_day?.should be_true
|
91
|
-
good_date.is_a_business_day?.should be_false
|
92
|
-
end
|
93
|
-
|
94
|
-
it "should be able to tell if it is xmas day and that it is not a valid business day" do
|
95
|
-
bad_date = Time.parse("06/06/2012")
|
96
|
-
good_date = Time.parse("25/12/2012")
|
97
|
-
bad_date.is_christmas_day?.should be_false
|
98
|
-
bad_date.is_not_christmas_day?.should be_true
|
99
|
-
good_date.is_christmas_day?.should be_true
|
100
|
-
good_date.is_not_christmas_day?.should be_false
|
101
|
-
good_date.is_not_a_business_day?.should be_true
|
102
|
-
good_date.is_a_business_day?.should be_false
|
103
|
-
end
|
104
|
-
|
105
|
-
it "should be able to tell if it is xmas eve and that it is not a valid business day" do
|
106
|
-
bad_date = Time.parse("06/06/2012")
|
107
|
-
good_date = Time.parse("24/12/2012")
|
108
|
-
bad_date.is_christmas_eve?.should be_false
|
109
|
-
bad_date.is_not_christmas_eve?.should be_true
|
110
|
-
good_date.is_christmas_eve?.should be_true
|
111
|
-
good_date.is_not_christmas_eve?.should be_false
|
112
|
-
good_date.is_not_a_business_day?.should be_true
|
113
|
-
good_date.is_a_business_day?.should be_false
|
114
|
-
end
|
115
|
-
|
116
|
-
it "should be able to tell if it is new year's day and that it is not a valid business day" do
|
117
|
-
bad_date = Time.parse("06/06/2012")
|
118
|
-
good_date = Time.parse("01/01/2012")
|
119
|
-
bad_date.is_new_years_day?.should be_false
|
120
|
-
bad_date.is_not_new_years_day?.should be_true
|
121
|
-
good_date.is_new_years_day?.should be_true
|
122
|
-
good_date.is_not_new_years_day?.should be_false
|
123
|
-
good_date.is_not_a_business_day?.should be_true
|
124
|
-
good_date.is_a_business_day?.should be_false
|
125
|
-
end
|
126
|
-
|
127
|
-
it "should be able to tell if it is the fourth of july and that it is not a valid business day" do
|
128
|
-
bad_date = Time.parse("06/06/2012")
|
129
|
-
good_date = Time.parse("04/07/2012")
|
130
|
-
bad_date.is_fourth_of_july?.should be_false
|
131
|
-
bad_date.is_not_fourth_of_july?.should be_true
|
132
|
-
good_date.is_fourth_of_july?.should be_true
|
133
|
-
good_date.is_not_fourth_of_july?.should be_false
|
134
|
-
good_date.is_not_a_business_day?.should be_true
|
135
|
-
good_date.is_a_business_day?.should be_false
|
136
|
-
end
|
137
|
-
|
138
|
-
it "should be able to tell if it is a holiday or not" do
|
139
|
-
new_years_day = Time.parse("01/01/2012")
|
140
|
-
memorial_day = Time.parse("28/05/2012")
|
141
|
-
fourth_of_july = Time.parse("04/07/2012")
|
142
|
-
labor_day = Time.parse("03/09/2012")
|
143
|
-
thanksgiving_day = Time.parse("22/11/2012")
|
144
|
-
xmas_eve = Time.parse("24/12/2012")
|
145
|
-
xmas_day = Time.parse("25/12/2012")
|
146
|
-
bad_date = Time.parse("06/06/2012")
|
147
|
-
|
148
|
-
new_years_day.is_a_holiday?.should be_true
|
149
|
-
new_years_day.is_not_a_holiday?.should be_false
|
150
|
-
memorial_day.is_a_holiday?.should be_true
|
151
|
-
memorial_day.is_not_a_holiday?.should be_false
|
152
|
-
fourth_of_july.is_a_holiday?.should be_true
|
153
|
-
fourth_of_july.is_not_a_holiday?.should be_false
|
154
|
-
labor_day.is_a_holiday?.should be_true
|
155
|
-
labor_day.is_not_a_holiday?.should be_false
|
156
|
-
thanksgiving_day.is_a_holiday?.should be_true
|
157
|
-
thanksgiving_day.is_not_a_holiday?.should be_false
|
158
|
-
xmas_eve.is_a_holiday?.should be_true
|
159
|
-
xmas_eve.is_not_a_holiday?.should be_false
|
160
|
-
xmas_day.is_a_holiday?.should be_true
|
161
|
-
xmas_day.is_not_a_holiday?.should be_false
|
162
|
-
bad_date.is_a_holiday?.should be_false
|
163
|
-
bad_date.is_not_a_holiday?.should be_true
|
164
|
-
end
|
165
|
-
end
|