alphasights-business_time 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +21 -0
- data/LICENSE +20 -0
- data/README.rdoc +152 -0
- data/Rakefile +55 -0
- data/VERSION +1 -0
- data/lib/business_time.rb +6 -0
- data/lib/business_time/business_days.rb +36 -0
- data/lib/business_time/business_hours.rb +69 -0
- data/lib/business_time/config.rb +59 -0
- data/lib/extensions/date.rb +10 -0
- data/lib/extensions/fixnum.rb +18 -0
- data/lib/extensions/time.rb +109 -0
- data/lib/generators/business_time/config_generator.rb +21 -0
- data/rails_generators/business_time_config/business_time_config_generator.rb +11 -0
- data/rails_generators/business_time_config/templates/business_time.rb +6 -0
- data/rails_generators/business_time_config/templates/business_time.yml +7 -0
- data/test/helper.rb +20 -0
- data/test/test_business_days.rb +69 -0
- data/test/test_business_days_eastern.rb +75 -0
- data/test/test_business_days_utc.rb +75 -0
- data/test/test_business_hours.rb +69 -0
- data/test/test_business_hours_eastern.rb +75 -0
- data/test/test_business_hours_utc.rb +75 -0
- data/test/test_config.rb +25 -0
- data/test/test_date_extensions.rb +33 -0
- data/test/test_fixnum_extensions.rb +17 -0
- data/test/test_time_extensions.rb +131 -0
- data/test/test_time_with_zone_extensions.rb +92 -0
- metadata +136 -0
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestBusinessHours < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context "with a TimeWithZone object in US Eastern" do
|
6
|
+
setup do
|
7
|
+
Time.zone = 'Eastern Time (US & Canada)'
|
8
|
+
end
|
9
|
+
teardown do
|
10
|
+
Time.zone = nil
|
11
|
+
end
|
12
|
+
|
13
|
+
should "move to tomorrow if we add 8 business hours" do
|
14
|
+
first = Time.zone.parse("Aug 4 2010, 9:35 am")
|
15
|
+
later = 8.business_hours.after(first)
|
16
|
+
expected = Time.zone.parse("Aug 5 2010, 9:35 am")
|
17
|
+
assert_equal expected, later
|
18
|
+
end
|
19
|
+
|
20
|
+
should "move to yesterday if we subtract 8 business hours" do
|
21
|
+
first = Time.zone.parse("Aug 4 2010, 9:35 am")
|
22
|
+
later = 8.business_hours.before(first)
|
23
|
+
expected = Time.zone.parse("Aug 3 2010, 9:35 am")
|
24
|
+
assert_equal expected, later
|
25
|
+
end
|
26
|
+
|
27
|
+
should "take into account a weekend when adding an hour" do
|
28
|
+
friday_afternoon = Time.zone.parse("April 9th, 4:50 pm")
|
29
|
+
monday_morning = 1.business_hour.after(friday_afternoon)
|
30
|
+
expected = Time.zone.parse("April 12th 2010, 9:50 am")
|
31
|
+
assert_equal expected, monday_morning
|
32
|
+
end
|
33
|
+
|
34
|
+
should "take into account a weekend when subtracting an hour" do
|
35
|
+
monday_morning = Time.zone.parse("April 12th 2010, 9:50 am")
|
36
|
+
friday_afternoon = 1.business_hour.before(monday_morning)
|
37
|
+
expected = Time.zone.parse("April 9th 2010, 4:50 pm")
|
38
|
+
assert_equal expected, friday_afternoon
|
39
|
+
end
|
40
|
+
|
41
|
+
should "take into account a holiday" do
|
42
|
+
BusinessTime::Config.holidays << Date.parse("July 5th, 2010")
|
43
|
+
friday_afternoon = Time.zone.parse("July 2nd 2010, 4:50pm")
|
44
|
+
tuesday_morning = 1.business_hour.after(friday_afternoon)
|
45
|
+
expected = Time.zone.parse("July 6th 2010, 9:50 am")
|
46
|
+
assert_equal expected, tuesday_morning
|
47
|
+
end
|
48
|
+
|
49
|
+
should "add hours in the middle of the workday" do
|
50
|
+
monday_morning = Time.zone.parse("April 12th 2010, 9:50 am")
|
51
|
+
later = 3.business_hours.after(monday_morning)
|
52
|
+
expected = Time.zone.parse("April 12th 2010, 12:50 pm")
|
53
|
+
assert_equal expected, later
|
54
|
+
end
|
55
|
+
|
56
|
+
should "roll forward to 9 am if asked in the early morning" do
|
57
|
+
crack_of_dawn_monday = Time.zone.parse("Mon Apr 26, 04:30:00, 2010")
|
58
|
+
monday_morning = Time.zone.parse("Mon Apr 26, 09:00:00, 2010")
|
59
|
+
assert_equal monday_morning, Time.roll_forward(crack_of_dawn_monday)
|
60
|
+
end
|
61
|
+
|
62
|
+
should "roll forward to the next morning if aftern business hours" do
|
63
|
+
monday_evening = Time.zone.parse("Mon Apr 26, 18:00:00, 2010")
|
64
|
+
tuesday_morning = Time.zone.parse("Tue Apr 27, 09:00:00, 2010")
|
65
|
+
assert_equal tuesday_morning, Time.roll_forward(monday_evening)
|
66
|
+
end
|
67
|
+
|
68
|
+
should "consider any time on a weekend as equivalent to monday morning" do
|
69
|
+
sunday = Time.zone.parse("Sun Apr 25 12:06:56, 2010")
|
70
|
+
monday = Time.zone.parse("Mon Apr 26, 09:00:00, 2010")
|
71
|
+
assert_equal 1.business_hour.before(monday), 1.business_hour.before(sunday)
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestBusinessHours < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context "with a TimeWithZone object in UTC" do
|
6
|
+
setup do
|
7
|
+
Time.zone = 'UTC'
|
8
|
+
end
|
9
|
+
teardown do
|
10
|
+
Time.zone = nil
|
11
|
+
end
|
12
|
+
|
13
|
+
should "move to tomorrow if we add 8 business hours" do
|
14
|
+
first = Time.zone.parse("Aug 4 2010, 9:35 am")
|
15
|
+
later = 8.business_hours.after(first)
|
16
|
+
expected = Time.zone.parse("Aug 5 2010, 9:35 am")
|
17
|
+
assert_equal expected, later
|
18
|
+
end
|
19
|
+
|
20
|
+
should "move to yesterday if we subtract 8 business hours" do
|
21
|
+
first = Time.zone.parse("Aug 4 2010, 9:35 am")
|
22
|
+
later = 8.business_hours.before(first)
|
23
|
+
expected = Time.zone.parse("Aug 3 2010, 9:35 am")
|
24
|
+
assert_equal expected, later
|
25
|
+
end
|
26
|
+
|
27
|
+
should "take into account a weekend when adding an hour" do
|
28
|
+
friday_afternoon = Time.zone.parse("April 9th, 4:50 pm")
|
29
|
+
monday_morning = 1.business_hour.after(friday_afternoon)
|
30
|
+
expected = Time.zone.parse("April 12th 2010, 9:50 am")
|
31
|
+
assert_equal expected, monday_morning
|
32
|
+
end
|
33
|
+
|
34
|
+
should "take into account a weekend when subtracting an hour" do
|
35
|
+
monday_morning = Time.zone.parse("April 12th 2010, 9:50 am")
|
36
|
+
friday_afternoon = 1.business_hour.before(monday_morning)
|
37
|
+
expected = Time.zone.parse("April 9th 2010, 4:50 pm")
|
38
|
+
assert_equal expected, friday_afternoon, "Expected #{expected} but received #{friday_afternoon}"
|
39
|
+
end
|
40
|
+
|
41
|
+
should "take into account a holiday" do
|
42
|
+
BusinessTime::Config.holidays << Date.parse("July 5th, 2010")
|
43
|
+
friday_afternoon = Time.zone.parse("July 2nd 2010, 4:50pm")
|
44
|
+
tuesday_morning = 1.business_hour.after(friday_afternoon)
|
45
|
+
expected = Time.zone.parse("July 6th 2010, 9:50 am")
|
46
|
+
assert_equal expected, tuesday_morning
|
47
|
+
end
|
48
|
+
|
49
|
+
should "add hours in the middle of the workday" do
|
50
|
+
monday_morning = Time.zone.parse("April 12th 2010, 9:50 am")
|
51
|
+
later = 3.business_hours.after(monday_morning)
|
52
|
+
expected = Time.zone.parse("April 12th 2010, 12:50 pm")
|
53
|
+
assert_equal expected, later
|
54
|
+
end
|
55
|
+
|
56
|
+
should "roll forward to 9 am if asked in the early morning" do
|
57
|
+
crack_of_dawn_monday = Time.zone.parse("Mon Apr 26, 04:30:00, 2010")
|
58
|
+
monday_morning = Time.zone.parse("Mon Apr 26, 09:00:00, 2010")
|
59
|
+
assert_equal monday_morning, Time.roll_forward(crack_of_dawn_monday)
|
60
|
+
end
|
61
|
+
|
62
|
+
should "roll forward to the next morning if aftern business hours" do
|
63
|
+
monday_evening = Time.zone.parse("Mon Apr 26, 18:00:00, 2010")
|
64
|
+
tuesday_morning = Time.zone.parse("Tue Apr 27, 09:00:00, 2010")
|
65
|
+
assert_equal tuesday_morning, Time.roll_forward(monday_evening)
|
66
|
+
end
|
67
|
+
|
68
|
+
should "consider any time on a weekend as equivalent to monday morning" do
|
69
|
+
sunday = Time.zone.parse("Sun Apr 25 12:06:56, 2010")
|
70
|
+
monday = Time.zone.parse("Mon Apr 26, 09:00:00, 2010")
|
71
|
+
assert_equal 1.business_hour.before(monday), 1.business_hour.before(sunday)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
data/test/test_config.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestConfig < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "keep track of the start of the day" do
|
6
|
+
assert_equal BusinessTime::Config.beginning_of_workday, "9:00 am"
|
7
|
+
BusinessTime::Config.beginning_of_workday = "8:30 am"
|
8
|
+
assert_equal BusinessTime::Config.beginning_of_workday, "8:30 am"
|
9
|
+
end
|
10
|
+
|
11
|
+
should "keep track of the end of the day" do
|
12
|
+
assert_equal BusinessTime::Config.end_of_workday, "5:00 pm"
|
13
|
+
BusinessTime::Config.end_of_workday = "5:30 pm"
|
14
|
+
assert_equal BusinessTime::Config.end_of_workday, "5:30 pm"
|
15
|
+
end
|
16
|
+
|
17
|
+
should "keep track of holidays" do
|
18
|
+
BusinessTime::Config.reset
|
19
|
+
assert BusinessTime::Config.holidays.empty?
|
20
|
+
daves_birthday = Date.parse("August 4th, 1969")
|
21
|
+
BusinessTime::Config.holidays << daves_birthday
|
22
|
+
assert BusinessTime::Config.holidays.include?(daves_birthday)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestDateExtensions < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "know what a weekend day is" do
|
6
|
+
assert(Date.parse("April 9, 2010").weekday?)
|
7
|
+
assert(!Date.parse("April 10, 2010").weekday?)
|
8
|
+
assert(!Date.parse("April 11, 2010").weekday?)
|
9
|
+
assert(Date.parse("April 12, 2010").weekday?)
|
10
|
+
end
|
11
|
+
|
12
|
+
should "know a weekend day is not a workday" do
|
13
|
+
assert(Date.parse("April 9, 2010").workday?)
|
14
|
+
assert(!Date.parse("April 10, 2010").workday?)
|
15
|
+
assert(!Date.parse("April 11, 2010").workday?)
|
16
|
+
assert(Date.parse("April 12, 2010").workday?)
|
17
|
+
end
|
18
|
+
|
19
|
+
should "know a holiday is not a workday" do
|
20
|
+
july_4 = Date.parse("July 4, 2010")
|
21
|
+
july_5 = Date.parse("July 5, 2010")
|
22
|
+
|
23
|
+
assert(!july_4.workday?)
|
24
|
+
assert(july_5.workday?)
|
25
|
+
|
26
|
+
BusinessTime::Config.holidays << july_4
|
27
|
+
BusinessTime::Config.holidays << july_5
|
28
|
+
|
29
|
+
assert(!july_4.workday?)
|
30
|
+
assert(!july_5.workday?)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestFixnumExtensions < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "respond to business_hours by returning an instance of BusinessHours" do
|
6
|
+
assert(1.respond_to?(:business_hour))
|
7
|
+
assert(1.respond_to?(:business_hours))
|
8
|
+
assert 1.business_hour.instance_of?(BusinessTime::BusinessHours)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "respond to business_days by returning an instance of BusinessDays" do
|
12
|
+
assert(1.respond_to?(:business_day))
|
13
|
+
assert(1.respond_to?(:business_days))
|
14
|
+
assert 1.business_day.instance_of?(BusinessTime::BusinessDays)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestTimeExtensions < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "know what a weekend day is" do
|
6
|
+
assert( Time.weekday?(Time.parse("April 9, 2010 10:30am")))
|
7
|
+
assert(!Time.weekday?(Time.parse("April 10, 2010 10:30am")))
|
8
|
+
assert(!Time.weekday?(Time.parse("April 11, 2010 10:30am")))
|
9
|
+
assert( Time.weekday?(Time.parse("April 12, 2010 10:30am")))
|
10
|
+
end
|
11
|
+
|
12
|
+
should "know a weekend day is not a workday" do
|
13
|
+
assert( Time.workday?(Time.parse("April 9, 2010 10:45 am")))
|
14
|
+
assert(!Time.workday?(Time.parse("April 10, 2010 10:45 am")))
|
15
|
+
assert(!Time.workday?(Time.parse("April 11, 2010 10:45 am")))
|
16
|
+
assert( Time.workday?(Time.parse("April 12, 2010 10:45 am")))
|
17
|
+
end
|
18
|
+
|
19
|
+
should "know a holiday is not a workday" do
|
20
|
+
BusinessTime::Config.reset
|
21
|
+
|
22
|
+
BusinessTime::Config.holidays << Date.parse("July 4, 2010")
|
23
|
+
BusinessTime::Config.holidays << Date.parse("July 5, 2010")
|
24
|
+
|
25
|
+
assert(!Time.workday?(Time.parse("July 4th, 2010 1:15 pm")))
|
26
|
+
assert(!Time.workday?(Time.parse("July 5th, 2010 2:37 pm")))
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
should "know the beginning of the day for an instance" do
|
31
|
+
first = Time.parse("August 17th, 2010, 11:50 am")
|
32
|
+
expecting = Time.parse("August 17th, 2010, 9:00 am")
|
33
|
+
assert_equal expecting, Time.beginning_of_workday(first)
|
34
|
+
end
|
35
|
+
|
36
|
+
should "know the end of the day for an instance" do
|
37
|
+
first = Time.parse("August 17th, 2010, 11:50 am")
|
38
|
+
expecting = Time.parse("August 17th, 2010, 5:00 pm")
|
39
|
+
assert_equal expecting, Time.end_of_workday(first)
|
40
|
+
end
|
41
|
+
|
42
|
+
should "know if instance is during business hours" do
|
43
|
+
assert(!Time.during_business_hours?(Time.parse("April 11, 2010 10:45 am")))
|
44
|
+
assert(!Time.during_business_hours?(Time.parse("April 12, 2010 8:45 am")))
|
45
|
+
assert(Time.during_business_hours?(Time.parse("April 12, 2010 9:45 am")))
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
should "know a seconds to an instance" do
|
50
|
+
start_time = Time.parse("August 17th, 2010, 8:50 am")
|
51
|
+
end_time = Time.parse("August 17th, 2010, 13:00 pm")
|
52
|
+
expecting = start_time.business_time_left_to(end_time)
|
53
|
+
assert_equal expecting, 3600 * 4
|
54
|
+
end
|
55
|
+
|
56
|
+
should "know a seconds to an instance" do
|
57
|
+
start_time = Time.parse("August 17th, 2010, 11:50 am")
|
58
|
+
end_time = Time.parse("August 17th, 2010, 13:50 pm")
|
59
|
+
expecting = start_time.business_time_left_to(end_time)
|
60
|
+
assert_equal expecting, 7200
|
61
|
+
end
|
62
|
+
|
63
|
+
should "know a seconds to an instance" do
|
64
|
+
start_time = Time.parse("August 17th, 2010, 17:50 am")
|
65
|
+
end_time = Time.parse("August 17th, 2010, 18:50 pm")
|
66
|
+
expecting = start_time.business_time_left_to(end_time)
|
67
|
+
assert_equal expecting, 0
|
68
|
+
end
|
69
|
+
|
70
|
+
should "know a seconds to an instance in weekend" do
|
71
|
+
start_time = Time.parse("August 22th, 2010, 11:50 am")
|
72
|
+
end_time = Time.parse("August 22th, 2010, 13:50 pm")
|
73
|
+
expecting = start_time.business_time_left_to(end_time)
|
74
|
+
assert_equal expecting, 0
|
75
|
+
end
|
76
|
+
|
77
|
+
should "know a seconds to an instance between holidays" do
|
78
|
+
start_time = Time.parse("August 22th, 2010, 11:50 am")
|
79
|
+
BusinessTime::Config.reset
|
80
|
+
|
81
|
+
BusinessTime::Config.holidays << Date.parse("August 24, 2010")
|
82
|
+
end_time = Time.parse("August 24th, 2010, 13:50 pm")
|
83
|
+
expecting = start_time.business_time_left_to(end_time)
|
84
|
+
assert_equal expecting, 8 * 3600
|
85
|
+
end
|
86
|
+
|
87
|
+
should "know a seconds to an other day instance" do
|
88
|
+
start_time = Time.parse("August 17th, 2010, 16:00 pm")
|
89
|
+
end_time = Time.parse("August 18th, 2010, 9:00 am")
|
90
|
+
expecting = start_time.business_time_left_to(end_time)
|
91
|
+
assert_equal expecting, 3600
|
92
|
+
end
|
93
|
+
|
94
|
+
should "know a seconds to an other week instance" do
|
95
|
+
start_time = Time.parse("August 17th, 2010, 16:00 pm")
|
96
|
+
end_time = Time.parse("August 23th, 2010, 10:00 am")
|
97
|
+
expecting = start_time.business_time_left_to(end_time)
|
98
|
+
assert_equal expecting, (3600 * 26)
|
99
|
+
end
|
100
|
+
|
101
|
+
should "know a seconds to end of business hours" do
|
102
|
+
time = Time.parse("August 17th, 2010, 16:00 pm")
|
103
|
+
expecting = time.business_time_left_to_end
|
104
|
+
assert_equal expecting, 3600
|
105
|
+
time = Time.parse("August 17th, 2010, 8:00 am")
|
106
|
+
expecting = time.business_time_left_to_end
|
107
|
+
assert_equal expecting, 3600 * 8
|
108
|
+
time = Time.parse("August 17th, 2010, 18:00 pm")
|
109
|
+
expecting = time.business_time_left_to_end
|
110
|
+
assert_equal expecting, 0
|
111
|
+
time = Time.parse("August 21th, 2010, 16:00 pm")
|
112
|
+
expecting = time.business_time_left_to_end
|
113
|
+
assert_equal expecting, 0
|
114
|
+
end
|
115
|
+
|
116
|
+
should "know a seconds from beginning of business hours" do
|
117
|
+
time = Time.parse("August 17th, 2010, 16:00 pm")
|
118
|
+
expecting = time.business_time_passed_from_beginning
|
119
|
+
assert_equal expecting, 3600 * 7
|
120
|
+
time = Time.parse("August 17th, 2010, 8:00 am")
|
121
|
+
expecting = time.business_time_passed_from_beginning
|
122
|
+
assert_equal expecting, 0
|
123
|
+
time = Time.parse("August 17th, 2010, 18:00 pm")
|
124
|
+
expecting = time.business_time_passed_from_beginning
|
125
|
+
assert_equal expecting, 3600 * 8
|
126
|
+
time = Time.parse("August 21th, 2010, 16:00 pm")
|
127
|
+
expecting = time.business_time_passed_from_beginning
|
128
|
+
assert_equal expecting, 0
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestTimeWithZoneExtensions < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context "With Eastern Standard Time" do
|
6
|
+
setup do
|
7
|
+
Time.zone = 'Eastern Time (US & Canada)'
|
8
|
+
end
|
9
|
+
|
10
|
+
should "know what a weekend day is" do
|
11
|
+
assert( Time.weekday?(Time.zone.parse("April 9, 2010 10:30am")))
|
12
|
+
assert(!Time.weekday?(Time.zone.parse("April 10, 2010 10:30am")))
|
13
|
+
assert(!Time.weekday?(Time.zone.parse("April 11, 2010 10:30am")))
|
14
|
+
assert( Time.weekday?(Time.zone.parse("April 12, 2010 10:30am")))
|
15
|
+
end
|
16
|
+
|
17
|
+
should "know a weekend day is not a workday" do
|
18
|
+
assert( Time.workday?(Time.zone.parse("April 9, 2010 10:45 am")))
|
19
|
+
assert(!Time.workday?(Time.zone.parse("April 10, 2010 10:45 am")))
|
20
|
+
assert(!Time.workday?(Time.zone.parse("April 11, 2010 10:45 am")))
|
21
|
+
assert( Time.workday?(Time.zone.parse("April 12, 2010 10:45 am")))
|
22
|
+
end
|
23
|
+
|
24
|
+
should "know a holiday is not a workday" do
|
25
|
+
BusinessTime::Config.reset
|
26
|
+
|
27
|
+
BusinessTime::Config.holidays << Date.parse("July 4, 2010")
|
28
|
+
BusinessTime::Config.holidays << Date.parse("July 5, 2010")
|
29
|
+
|
30
|
+
assert(!Time.workday?(Time.zone.parse("July 4th, 2010 1:15 pm")))
|
31
|
+
assert(!Time.workday?(Time.zone.parse("July 5th, 2010 2:37 pm")))
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
should "know the beginning of the day for an instance" do
|
36
|
+
first = Time.zone.parse("August 17th, 2010, 11:50 am")
|
37
|
+
expecting = Time.zone.parse("August 17th, 2010, 9:00 am")
|
38
|
+
assert_equal expecting, Time.beginning_of_workday(first)
|
39
|
+
end
|
40
|
+
|
41
|
+
should "know the end of the day for an instance" do
|
42
|
+
first = Time.zone.parse("August 17th, 2010, 11:50 am")
|
43
|
+
expecting = Time.zone.parse("August 17th, 2010, 5:00 pm")
|
44
|
+
assert_equal expecting, Time.end_of_workday(first)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
context "With UTC Timezone" do
|
50
|
+
setup do
|
51
|
+
Time.zone = 'UTC'
|
52
|
+
end
|
53
|
+
|
54
|
+
should "know what a weekend day is" do
|
55
|
+
assert( Time.weekday?(Time.zone.parse("April 9, 2010 10:30am")))
|
56
|
+
assert(!Time.weekday?(Time.zone.parse("April 10, 2010 10:30am")))
|
57
|
+
assert(!Time.weekday?(Time.zone.parse("April 11, 2010 10:30am")))
|
58
|
+
assert( Time.weekday?(Time.zone.parse("April 12, 2010 10:30am")))
|
59
|
+
end
|
60
|
+
|
61
|
+
should "know a weekend day is not a workday" do
|
62
|
+
assert( Time.workday?(Time.zone.parse("April 9, 2010 10:45 am")))
|
63
|
+
assert(!Time.workday?(Time.zone.parse("April 10, 2010 10:45 am")))
|
64
|
+
assert(!Time.workday?(Time.zone.parse("April 11, 2010 10:45 am")))
|
65
|
+
assert( Time.workday?(Time.zone.parse("April 12, 2010 10:45 am")))
|
66
|
+
end
|
67
|
+
|
68
|
+
should "know a holiday is not a workday" do
|
69
|
+
BusinessTime::Config.reset
|
70
|
+
|
71
|
+
BusinessTime::Config.holidays << Date.parse("July 4, 2010")
|
72
|
+
BusinessTime::Config.holidays << Date.parse("July 5, 2010")
|
73
|
+
|
74
|
+
assert(!Time.workday?(Time.zone.parse("July 4th, 2010 1:15 pm")))
|
75
|
+
assert(!Time.workday?(Time.zone.parse("July 5th, 2010 2:37 pm")))
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
should "know the beginning of the day for an instance" do
|
80
|
+
first = Time.zone.parse("August 17th, 2010, 11:50 am")
|
81
|
+
expecting = Time.zone.parse("August 17th, 2010, 9:00 am")
|
82
|
+
assert_equal expecting, Time.beginning_of_workday(first)
|
83
|
+
end
|
84
|
+
|
85
|
+
should "know the end of the day for an instance" do
|
86
|
+
first = Time.zone.parse("August 17th, 2010, 11:50 am")
|
87
|
+
expecting = Time.zone.parse("August 17th, 2010, 5:00 pm")
|
88
|
+
assert_equal expecting, Time.end_of_workday(first)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|