aboutsummaryrefslogtreecommitdiff
path: root/test/tc_mauve_notification.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/tc_mauve_notification.rb')
-rw-r--r--test/tc_mauve_notification.rb111
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
+
+