spec/unit/tracker/tracker_api_spec.rb in wvanbergen-request-log-analyzer-1.3.5 vs spec/unit/tracker/tracker_api_spec.rb in wvanbergen-request-log-analyzer-1.3.6
- old
+ new
@@ -1,49 +1,124 @@
require File.dirname(__FILE__) + '/../../spec_helper'
-describe RequestLogAnalyzer::Tracker::Base, "API test" do
+describe RequestLogAnalyzer::Tracker::Base do
- before(:each) do
- @tracker = Class.new(RequestLogAnalyzer::Tracker::Base).new
+ describe 'API' do
- @summarizer = RequestLogAnalyzer::Aggregator::Summarizer.new(mock_source)
- @summarizer.trackers << @tracker
+ before(:each) do
+ @tracker = Class.new(RequestLogAnalyzer::Tracker::Base).new
+
+ @summarizer = RequestLogAnalyzer::Aggregator::Summarizer.new(mock_source)
+ @summarizer.trackers << @tracker
+ end
+
+ it "should receive :prepare when the summarizer is preparing" do
+ @tracker.should_receive(:prepare).once
+ @summarizer.prepare
+ end
+
+ it "should receive :update for every request for which should_update? returns true" do
+ @tracker.should_receive(:should_update?).twice.and_return(true)
+ @tracker.should_receive(:update).twice
+
+ @summarizer.aggregate(testing_format.request(:field => 'value1'))
+ @summarizer.aggregate(testing_format.request(:field => 'value2'))
+ end
+
+ it "should not :update for every request for which should_update? returns false" do
+ @tracker.should_receive(:should_update?).twice.and_return(false)
+ @tracker.should_not_receive(:update)
+
+ @summarizer.aggregate(testing_format.request(:field => 'value1'))
+ @summarizer.aggregate(testing_format.request(:field => 'value2'))
+ end
+
+ it "should receive :report when the summary report is being built" do
+ @tracker.should_receive(:report).with(anything).once
+ @summarizer.report(mock_output)
+ end
+
+ it "should receieve :finalize when the summarizer is finalizing" do
+ @tracker.should_receive(:finalize).once
+ @summarizer.finalize
+ end
end
-
- it "should receive :prepare when the summarizer is preparing" do
- @tracker.should_receive(:prepare).once
- @summarizer.prepare
- end
- it "should receieve :finalize when the summarizer is finalizing" do
- @tracker.should_receive(:finalize).once
- @summarizer.finalize
- end
-
- it "should receive :update for every request for which should_update? returns true" do
- @tracker.should_receive(:should_update?).twice.and_return(true)
- @tracker.should_receive(:update).twice
+ describe '#should_update?' do
+ before(:each) do
+ @tracker_class = Class.new(RequestLogAnalyzer::Tracker::Base)
+ end
- @summarizer.aggregate(testing_format.request(:field => 'value1'))
- @summarizer.aggregate(testing_format.request(:field => 'value2'))
- end
-
- it "should not :update for every request for which should_update? returns false" do
- @tracker.should_receive(:should_update?).twice.and_return(false)
- @tracker.should_not_receive(:update)
+ it "should return true by default, when no checks are installed" do
+ tracker = @tracker_class.new
+ tracker.should_update?(testing_format.request).should be_true
+ end
- @summarizer.aggregate(testing_format.request(:field => 'value1'))
- @summarizer.aggregate(testing_format.request(:field => 'value2'))
- end
+ it "should return false if the line type is not in the request" do
+ tracker = @tracker_class.new(:line_type => :not_there)
+ tracker.should_update?(request(:line_type => :different)).should be_false
+ end
+
+ it "should return true if the line type is in the request" do
+ tracker = @tracker_class.new(:line_type => :there)
+ tracker.should_update?(request(:line_type => :there)).should be_true
+ end
+
+ it "should return true if a field name is given to :if and it is in the request" do
+ tracker = @tracker_class.new(:if => :field)
+ tracker.should_update?(request(:field => 'anything')).should be_true
+ end
+
+ it "should return false if a field name is given to :if and it is not the request" do
+ tracker = @tracker_class.new(:if => :field)
+ tracker.should_update?(request(:other_field => 'anything')).should be_false
+ end
+
+ it "should return false if a field name is given to :unless and it is in the request" do
+ tracker = @tracker_class.new(:unless => :field)
+ tracker.should_update?(request(:field => 'anything')).should be_false
+ end
+
+ it "should return true if a field name is given to :unless and it is not the request" do
+ tracker = @tracker_class.new(:unless => :field)
+ tracker.should_update?(request(:other_field => 'anything')).should be_true
+ end
+
+ it "should return the value of the block if one is given to the :if option" do
+ tracker = @tracker_class.new(:if => lambda { false } )
+ tracker.should_update?(request(:field => 'anything')).should be_false
+ end
+
+ it "should return the inverse value of the block if one is given to the :if option" do
+ tracker = @tracker_class.new(:unless => lambda { false } )
+ tracker.should_update?(request(:field => 'anything')).should be_true
+ end
+
+ it "should return false if any of the checks fail" do
+ tracker = @tracker_class.new(:if => :field, :unless => lambda { false }, :line_type => :not_present )
+ tracker.should_update?(request(:line_type => :present, :field => 'anything')).should be_false
+ end
+
+ it "should return true if all of the checks succeed" do
+ tracker = @tracker_class.new(:if => :field, :unless => lambda { false }, :line_type => :present )
+ tracker.should_update?(request(:line_type => :present, :field => 'anything')).should be_true
+ end
+
- it "should receive :report when the summary report is being built" do
- @tracker.should_receive(:report).with(anything).once
- @summarizer.report(mock_output)
end
- it "should receive :to_yaml object when finalizing" do
- @summarizer.options[:dump] = temp_output_file(:dump)
- @tracker.should_receive(:to_yaml_object).once
- @summarizer.to_yaml
+ describe '#to_yaml_object' do
+
+ before(:each) do
+ @tracker = Class.new(RequestLogAnalyzer::Tracker::Base).new
+
+ @summarizer = RequestLogAnalyzer::Aggregator::Summarizer.new(mock_source)
+ @summarizer.trackers << @tracker
+ end
+
+ it "should receive :to_yaml object when finalizing" do
+ @summarizer.options[:dump] = temp_output_file(:dump)
+ @tracker.should_receive(:to_yaml_object).once
+ @summarizer.to_yaml
+ end
end
-
end
\ No newline at end of file