From 3d8c0027851e118a889deac250ce75d47a6b0343 Mon Sep 17 00:00:00 2001 From: Lindsay Holmwood Date: Thu, 24 Dec 2009 11:19:07 +1100 Subject: [PATCH] added tests for filter implementation --- spec/notifier_filters_spec.rb | 52 +++++++++++++++++++++++++++++++++++ spec/test-filters/blocker.rb | 13 +++++++++ spec/test-filters/mock.rb | 13 +++++++++ 3 files changed, 78 insertions(+) create mode 100644 spec/notifier_filters_spec.rb create mode 100644 spec/test-filters/blocker.rb create mode 100644 spec/test-filters/mock.rb diff --git a/spec/notifier_filters_spec.rb b/spec/notifier_filters_spec.rb new file mode 100644 index 000000000..fbdcd81ba --- /dev/null +++ b/spec/notifier_filters_spec.rb @@ -0,0 +1,52 @@ +require File.join(File.dirname(__FILE__), '..', 'lib', 'flapjack', 'applications', 'notifier') +require File.join(File.dirname(__FILE__), '..', 'lib', 'flapjack', 'transports', 'result') +require File.join(File.dirname(__FILE__), 'helpers') + +describe "running the notifier" do + + before(:all) do + @options = { :notifiers => {:testmailer => {}}, + :notifier_directories => [File.join(File.dirname(__FILE__),'notifier-directories', 'spoons')], + :recipients => [{:name => "Spoons McDoom"}], + :transport => {:backend => :mock_transport, + :basedir => File.join(File.dirname(__FILE__), 'transports')}, + :persistence => {:backend => :mock_persistence_backend, + :basedir => File.join(File.dirname(__FILE__), 'persistence')}, + :filter_directories => [File.join(File.dirname(__FILE__),'test-filters')] + } + end + + it "should notify by default" do + @options[:filters] = [] + @options[:log] = MockLogger.new + + app = Flapjack::Notifier::Application.run(@options) + # processes a MockResult, as defined in spec/transports/mock_transport.rb + app.process_result + + app.log.messages.find {|m| m =~ /testmailer notifying/i}.should be_true + end + + it "should not notify if any filters fail" do + @options[:filters] = ['blocker'] + @options[:log] = MockLogger.new + + app = Flapjack::Notifier::Application.run(@options) + # processes a MockResult, as defined in spec/transports/mock_transport.rb + app.process_result + + app.log.messages.find {|m| m =~ /testmailer notifying/i}.should be_nil + end + + it "should notify if all filters pass" do + @options[:filters] = ['mock'] + @options[:log] = MockLogger.new + + app = Flapjack::Notifier::Application.run(@options) + # processes a MockResult, as defined in spec/transports/mock_transport.rb + app.process_result + + app.log.messages.find {|m| m =~ /testmailer notifying/i}.should be_true + end + +end diff --git a/spec/test-filters/blocker.rb b/spec/test-filters/blocker.rb new file mode 100644 index 000000000..83f8e6cc7 --- /dev/null +++ b/spec/test-filters/blocker.rb @@ -0,0 +1,13 @@ +module Flapjack + module Filters + class Blocker + def initialize(opts={}) + @log = opts[:log] + end + + def block?(result) + true + end + end + end +end diff --git a/spec/test-filters/mock.rb b/spec/test-filters/mock.rb new file mode 100644 index 000000000..cfb954dae --- /dev/null +++ b/spec/test-filters/mock.rb @@ -0,0 +1,13 @@ +module Flapjack + module Filters + class Mock + def initialize(opts={}) + @log = opts[:log] + end + + def block?(result) + false + end + end + end +end