|
@@ -1,5 +1,6 @@
|
|
|
# encoding: utf-8
|
|
|
require 'test_helper'
|
|
|
+require 'time_calculation'
|
|
|
|
|
|
class WorkingTimeTest < ActiveSupport::TestCase
|
|
|
test 'working time' do
|
|
@@ -9,32 +10,117 @@ class WorkingTimeTest < ActiveSupport::TestCase
|
|
|
{
|
|
|
:start => '2012-12-17 08:00:00',
|
|
|
:end => '2012-12-18 08:00:00',
|
|
|
- :diff => 480,
|
|
|
+ :diff => 600,
|
|
|
:config => {
|
|
|
- :work_week => [:mon, :tue, :wed, :thu, :fri ],
|
|
|
- :beginning_of_workday => '8:00 am',
|
|
|
- :end_of_workday => '6:00 pm',
|
|
|
+ 'Mon' => true,
|
|
|
+ 'Tue' => true,
|
|
|
+ 'Wed' => true,
|
|
|
+ 'Thu' => true,
|
|
|
+ 'Fri' => true,
|
|
|
+ 'beginning_of_workday' => '8:00 am',
|
|
|
+ 'end_of_workday' => '6:00 pm',
|
|
|
},
|
|
|
},
|
|
|
|
|
|
# test 2
|
|
|
+ {
|
|
|
+ :start => '2012-12-17 08:00:00',
|
|
|
+ :end => '2012-12-17 09:00:00',
|
|
|
+ :diff => 60,
|
|
|
+ :config => {
|
|
|
+ 'Mon' => true,
|
|
|
+ 'Tue' => true,
|
|
|
+ 'Wed' => true,
|
|
|
+ 'Thu' => true,
|
|
|
+ 'Fri' => true,
|
|
|
+ 'beginning_of_workday' => '8:00 am',
|
|
|
+ 'end_of_workday' => '6:00 pm',
|
|
|
+ },
|
|
|
+ },
|
|
|
+
|
|
|
+ # test 3
|
|
|
+ {
|
|
|
+ :start => '2012-12-17 08:00:00',
|
|
|
+ :end => '2012-12-17 08:15:00',
|
|
|
+ :diff => 15,
|
|
|
+ :config => {
|
|
|
+ 'Mon' => true,
|
|
|
+ 'Tue' => true,
|
|
|
+ 'Wed' => true,
|
|
|
+ 'Thu' => true,
|
|
|
+ 'Fri' => true,
|
|
|
+ 'beginning_of_workday' => '8:00 am',
|
|
|
+ 'end_of_workday' => '6:00 pm',
|
|
|
+ },
|
|
|
+ },
|
|
|
+
|
|
|
+ # test 4
|
|
|
{
|
|
|
:start => '2012-12-23 08:00:00',
|
|
|
- :end => '2012-12-24 10:30:42',
|
|
|
- :diff => 0,
|
|
|
+ :end => '2012-12-27 10:30:42',
|
|
|
+# :diff => 0,
|
|
|
+ :diff => 151,
|
|
|
:config => {
|
|
|
- :work_week => [:mon, :tue, :wed, :thu, :fri ],
|
|
|
- :beginning_of_workday => '8:00 am',
|
|
|
- :end_of_workday => '6:00 pm',
|
|
|
- :holidays => [
|
|
|
+ 'Mon' => true,
|
|
|
+ 'Tue' => true,
|
|
|
+ 'Wed' => true,
|
|
|
+ 'Thu' => true,
|
|
|
+ 'Fri' => true,
|
|
|
+ 'beginning_of_workday' => '8:00 am',
|
|
|
+ 'end_of_workday' => '6:00 pm',
|
|
|
+ 'holidays' => [
|
|
|
'2012-12-24', '2012-12-25', '2012-12-26'
|
|
|
],
|
|
|
},
|
|
|
},
|
|
|
]
|
|
|
tests.each { |test|
|
|
|
-# diff = some_method( test[:start], test[:end], test[:config] )
|
|
|
-# assert_equal( diff, test[:diff], 'diff' )
|
|
|
+ TimeCalculation.config( test[:config] )
|
|
|
+ diff = TimeCalculation.business_time_diff( test[:start], test[:end] )
|
|
|
+ assert_equal( diff, test[:diff], 'diff' )
|
|
|
}
|
|
|
end
|
|
|
+
|
|
|
+ test 'dest time' do
|
|
|
+ tests = [
|
|
|
+
|
|
|
+ # test 1
|
|
|
+ {
|
|
|
+ :start => '2012-12-17 08:00:00',
|
|
|
+ :dest_time => '2012-12-17 18:00:00',
|
|
|
+ :diff => 600,
|
|
|
+ :config => {
|
|
|
+ 'Mon' => true,
|
|
|
+ 'Tue' => true,
|
|
|
+ 'Wed' => true,
|
|
|
+ 'Thu' => true,
|
|
|
+ 'Fri' => true,
|
|
|
+ 'beginning_of_workday' => '8:00 am',
|
|
|
+ 'end_of_workday' => '6:00 pm',
|
|
|
+ },
|
|
|
+ },
|
|
|
+
|
|
|
+ # test 2
|
|
|
+ {
|
|
|
+ :start => '2012-12-17 08:00:00',
|
|
|
+ :dest_time => '2012-12-18 08:30:00',
|
|
|
+ :diff => 630,
|
|
|
+ :config => {
|
|
|
+ 'Mon' => true,
|
|
|
+ 'Tue' => true,
|
|
|
+ 'Wed' => true,
|
|
|
+ 'Thu' => true,
|
|
|
+ 'Fri' => true,
|
|
|
+ 'beginning_of_workday' => '8:00 am',
|
|
|
+ 'end_of_workday' => '6:00 pm',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]
|
|
|
+ tests.each { |test|
|
|
|
+ TimeCalculation.config( test[:config] )
|
|
|
+ dest_time = TimeCalculation.dest_time( test[:start], test[:diff] )
|
|
|
+ assert_equal( dest_time, Time.parse( test[:dest_time] + ' UTC' ), 'dest time' )
|
|
|
+ }
|
|
|
+ end
|
|
|
+
|
|
|
end
|