From 123a7bca794f5fcab9531383fce0b4ba6b8eafac Mon Sep 17 00:00:00 2001 From: Justin Lambert Date: Tue, 15 Jan 2013 08:14:36 -0700 Subject: [PATCH] allow hipchat rooms_notified to accept a comma delimited string or array --- lib/backup/notifier/hipchat.rb | 14 ++++++++++++++ spec/notifier/hipchat_spec.rb | 11 +++++++++++ 2 files changed, 25 insertions(+) diff --git a/lib/backup/notifier/hipchat.rb b/lib/backup/notifier/hipchat.rb index dfe3e04a0..9c63f1073 100644 --- a/lib/backup/notifier/hipchat.rb +++ b/lib/backup/notifier/hipchat.rb @@ -49,6 +49,20 @@ def initialize(model, &block) instance_eval(&block) if block_given? end + + def rooms_notified= rooms + if rooms.is_a?(Array) + @rooms_notified = rooms + elsif rooms.is_a?(String) + @rooms_notified = rooms.split(/,/).map(&:lstrip).map(&:rstrip) + else + Logger.error Errors::Hipchat::LoadError.new(<<-EOS) + Hipchat rooms_notified configuration error + #{rooms.class} (#{rooms.to_s}) provided, + Needs to be a String or Array + EOS + end + end private diff --git a/spec/notifier/hipchat_spec.rb b/spec/notifier/hipchat_spec.rb index 981cd7bcc..dc13e80ea 100644 --- a/spec/notifier/hipchat_spec.rb +++ b/spec/notifier/hipchat_spec.rb @@ -105,7 +105,18 @@ notifier.on_warning.should == true notifier.on_failure.should == true end + end # context 'when pre-configured defaults have been set' + + it 'should accept both an array and string for rooms_notified' do + notifier = Backup::Notifier::Hipchat.new(model) + + notifier.rooms_notified = [ 'room3', 'room4' ] + notifier.rooms_notified.should == [ 'room3', 'room4' ] + notifier.rooms_notified = 'room5, room6' + notifier.rooms_notified.should == [ 'room5', 'room6' ] + expect { notifier.rooms_notified = { 'room7' => nil} }.to raise_error + end end # describe '#initialize' describe '#notify!' do