-
Notifications
You must be signed in to change notification settings - Fork 219
Expand file tree
/
Copy pathtest_date_extensions.rb
More file actions
116 lines (94 loc) · 4.3 KB
/
Copy pathtest_date_extensions.rb
File metadata and controls
116 lines (94 loc) · 4.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
require 'helper'
describe "date extensions" do
it "know a weekend day is not a workday" do
assert(Date.parse("April 9, 2010").workday?)
assert(!Date.parse("April 10, 2010").workday?)
assert(!Date.parse("April 11, 2010").workday?)
assert(Date.parse("April 12, 2010").workday?)
end
it "know a weekend day is not a workday (with a configured work week)" do
BusinessTime::Config.work_week = %w[sun mon tue wed thu]
assert(Date.parse("April 8, 2010").weekday?)
assert(!Date.parse("April 9, 2010").weekday?)
assert(!Date.parse("April 10, 2010").weekday?)
assert(Date.parse("April 12, 2010").weekday?)
end
it "know a weekday is not a weekend" do
assert(!Date.parse("April 9, 2010").weekend?) # Friday
assert( Date.parse("April 10, 2010").weekend?) # Saturday
assert( Date.parse("April 11, 2010").weekend?) # Sunday
assert(!Date.parse("April 12, 2010").weekend?) # Monday
end
it "know a weekend is relative to the configured work week" do
BusinessTime::Config.work_week = %w[sun mon tue wed thu]
assert(!Date.parse("April 8, 2010").weekend?) # Thursday
assert( Date.parse("April 9, 2010").weekend?) # Friday — weekend under this config
assert( Date.parse("April 10, 2010").weekend?) # Saturday
assert(!Date.parse("April 11, 2010").weekend?) # Sunday — weekday under this config
end
it "know a holiday is not a workday" do
july_4 = Date.parse("July 4, 2010")
july_5 = Date.parse("July 5, 2010")
assert(!july_4.workday?)
assert(july_5.workday?)
BusinessTime::Config.holidays << july_4
BusinessTime::Config.holidays << july_5
assert(!july_4.workday?)
assert(!july_5.workday?)
end
it "#week" do
assert_equal 1, Date.parse("Jan 1, 2017").week
assert_equal 1, Date.parse("Jan 7, 2017").week
assert_equal 2, Date.parse("Jan 8, 2017").week
assert_equal 51, Date.parse("Dec 23, 2017").week
assert_equal 52, Date.parse("Dec 24, 2017").week
assert_equal 52, Date.parse("Dec 31, 2017").week # There is no 53rd week
end
it "#quarter" do
assert_equal 1, Date.parse("Jan 1, 2017").quarter
assert_equal 1, Date.parse("Mar 31, 2017").quarter
assert_equal 2, Date.parse("Apr 1, 2017").quarter
assert_equal 4, Date.parse("Dec 31, 2017").quarter
end
it "#fiscal_year_week" do
assert_equal 52, Date.parse("Sep 30, 2017").fiscal_year_week # There is no 53rd week
assert_equal 1, Date.parse("Oct 1, 2017").fiscal_year_week
assert_equal 5, Date.parse("Nov 1, 2017").fiscal_year_week
assert_equal 9, Date.parse("Dec 1, 2017").fiscal_year_week
assert_equal 14, Date.parse("Jan 1, 2017").fiscal_year_week
BusinessTime::Config.fiscal_month_offset = 7 # Australia
assert_equal 1, Date.parse("Jul 1, 2017").fiscal_year_week
end
it "#fiscal_year_quarter" do
assert_equal 4, Date.parse("Sep 30, 2017").fiscal_year_quarter
assert_equal 1, Date.parse("Oct 1, 2017").fiscal_year_quarter
assert_equal 4, Date.parse("Sep 30, 2018").fiscal_year_quarter
BusinessTime::Config.fiscal_month_offset = 7 # Australia
assert_equal 4, Date.parse("Jun 30, 2017").fiscal_year_quarter
assert_equal 1, Date.parse("Jul 1, 2017").fiscal_year_quarter
end
it "#fiscal_year" do
assert_equal 2017, Date.parse("Sep 30, 2017").fiscal_year
assert_equal 2018, Date.parse("Oct 1, 2017").fiscal_year
assert_equal 2018, Date.parse("Sep 30, 2018").fiscal_year
BusinessTime::Config.fiscal_month_offset = 7 # Australia
assert_equal 2017, Date.parse("Jun 30, 2017").fiscal_year
assert_equal 2018, Date.parse("Jul 1, 2017").fiscal_year
end
it "#fiscal_year_yday" do
assert_equal 365, Date.parse("Sep 30, 2017").fiscal_year_yday
assert_equal 1, Date.parse("Oct 1, 2017").fiscal_year_yday
assert_equal 92, Date.parse("Dec 31, 2017").fiscal_year_yday
BusinessTime::Config.fiscal_month_offset = 7 # Australia
assert_equal 365, Date.parse("Jun 30, 2017").fiscal_year_yday
assert_equal 1, Date.parse("Jul 1, 2017").fiscal_year_yday
end
it "know a holiday is not a workday when passed as options" do
july_4 = Date.parse("July 4, 2010")
july_5 = Date.parse("July 5, 2010")
assert(!july_4.workday?)
assert(july_5.workday?)
assert(!july_4.workday?(holidays: [july_4]))
assert(!july_5.workday?(holidays: [july_5]))
end
end