diff options
author | Patrick J Cherry <patrick@bytemark.co.uk> | 2011-08-10 13:54:53 +0100 |
---|---|---|
committer | Patrick J Cherry <patrick@bytemark.co.uk> | 2011-08-10 13:54:53 +0100 |
commit | 8621a1b4914f70975f83ad59d31da25d5c01aa1a (patch) | |
tree | 2ff85276016c2ccf22ea618ef0417226bbb29d59 /test/tc_mauve_notification.rb | |
parent | d650c2dad3ae58caeebb598e7624e80ee2a4b71a (diff) |
Updated during_runner to work better.
--HG--
rename : test/time_test.rb => test/tc_mauve_time.rb
Diffstat (limited to 'test/tc_mauve_notification.rb')
-rw-r--r-- | test/tc_mauve_notification.rb | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/test/tc_mauve_notification.rb b/test/tc_mauve_notification.rb new file mode 100644 index 0000000..3414292 --- /dev/null +++ b/test/tc_mauve_notification.rb @@ -0,0 +1,111 @@ +$:.unshift "../lib" + +require 'test/unit' +require 'mauve/alert' +require 'mauve/notification' +require 'mauve/configuration' +require 'mauve/configuration_builder' +require 'mauve/mauve_time' +require 'th_mauve_resolv' +require 'pp' + + + +class TcMauveDuringRunner < Test::Unit::TestCase + + def test_initialize + + alert = Mauve::Alert.new + time = Time.now + during = Proc.new { false } + + dr = Mauve::DuringRunner.new(time, alert, &during) + + assert_equal(dr.alert, alert) + assert_equal(dr.time, time) + assert_equal(dr.during, during) + + end + + def test_now? + alert = Mauve::Alert.new + time = Time.now + during = Proc.new { @test_time } + + dr = Mauve::DuringRunner.new(time, alert, &during) + assert_equal(time, dr.now?) + assert_equal(time+3600, dr.now?(time+3600)) + assert_equal(time, dr.time) + end + + def test_find_next + # + # An alert is supposed to remind someone every six hours during working + # hours, and it is raised outside working hours. Assuming it is still + # raised when working hours start, when should the first reminder get sent? + # + # (a) As soon as working hours commence. + # (b) At some point in the first six hours of working hours. + # (c) After six working hours. + # + # (12:38:19) Nick: a) + + # + # This should give us midnight last sunday night. + # + now = Mauve::MauveTime.now + midnight_sunday = now - (now.hour.hours + now.min.minutes + now.sec.seconds + now.wday.days) + + # + # first working hour on Monday + monday_morning = midnight_sunday.in_x_hours(0,"working") + + # + # This should alert at exactly first thing on Monday morning. + # + dr = Mauve::DuringRunner.new(midnight_sunday, nil){ working_hours? } + assert_equal(dr.find_next(6.hours), monday_morning) + + # + # This should alert six hours later than the last one. + # + dr = Mauve::DuringRunner.new(monday_morning, nil){ working_hours? } + assert_equal(dr.find_next(6.hours), monday_morning + 6.hours) + + # + # Now assuming the working day is not 12 hours long, if we progress to 6 + # hours in the future then the next alert should be first thing on Tuesday. + # + dr = Mauve::DuringRunner.new(monday_morning + 6.hours, nil){ working_hours? } + tuesday_morning = monday_morning+24.hours + assert_equal(dr.find_next(6.hours), tuesday_morning) + + # + # If an alert is too far in the future (a week) return nil. + # + dr = Mauve::DuringRunner.new(monday_morning, nil){ @test_time > (@time + 12.days) } + assert_nil(dr.find_next) + end + + def test_hours_in_day + end + + def test_days_in_week + end + + def test_unacknowledged + end + +end + +class TcMauveNotification < Test::Unit::TestCase + + def test_notify + end + + def remind_at_next + end + +end + + |