From dfef696adb24b26b4e41343fca311752bd192052 Mon Sep 17 00:00:00 2001 From: Luca Pradovera Date: Fri, 1 Nov 2013 16:40:04 +0100 Subject: [PATCH] Some basic specs. Newrelic support complete. --- lib/adhearsion/reporter/hoptoad_notifier.rb | 4 +- lib/adhearsion/reporter/newrelic_notifier.rb | 2 +- spec/reporter_spec.rb | 62 +++++++++++++------- 3 files changed, 44 insertions(+), 24 deletions(-) diff --git a/lib/adhearsion/reporter/hoptoad_notifier.rb b/lib/adhearsion/reporter/hoptoad_notifier.rb index 9a9be45..4b68a27 100644 --- a/lib/adhearsion/reporter/hoptoad_notifier.rb +++ b/lib/adhearsion/reporter/hoptoad_notifier.rb @@ -14,11 +14,11 @@ def init def notify(ex) response = @notifier.post!(ex) if Reporter.config.enable if !response.errors.empty? || !(200..299).include?(response.status.to_i) - logger.error "Error posting exception to #{config.url}! Response code #{response.status}" + logger.error "Error posting exception to #{Reporter.config.url}! Response code #{response.status}" response.errors.each do |error| logger.error "#{error}" end - logger.warn "Original exception message: #{e.message}" + logger.warn "Original exception message: #{ex.message}" end end end diff --git a/lib/adhearsion/reporter/newrelic_notifier.rb b/lib/adhearsion/reporter/newrelic_notifier.rb index d7bbef4..36ab17e 100644 --- a/lib/adhearsion/reporter/newrelic_notifier.rb +++ b/lib/adhearsion/reporter/newrelic_notifier.rb @@ -1,6 +1,6 @@ # encoding: utf-8 -require 'newrelic_rpm' +require 'new_relic/control' module Adhearsion class Reporter diff --git a/spec/reporter_spec.rb b/spec/reporter_spec.rb index 11508f0..fcc6e5a 100644 --- a/spec/reporter_spec.rb +++ b/spec/reporter_spec.rb @@ -20,11 +20,7 @@ def notify(ex) before(:each) do Adhearsion::Reporter.config.notifier = DummyNotifier Adhearsion::Plugin.init_plugins - Adhearsion::Events.register_handler :event, EventClass do |event| - raise ExceptionClass - end - Adhearsion::Events.trigger_immediately :event, EventClass.new - Adhearsion::Events.clear_handlers :event, EventClass + Adhearsion::Events.trigger_immediately :exception, ExceptionClass.new end it "calls init on the notifier instance" do @@ -37,20 +33,44 @@ def notify(ex) end end - # context "with a NewrelicNotifier" do - # before(:each) do - # Adhearsion::Reporter.config.notifier = Adhearsion::Reporter::NewrelicNotifier - # Adhearsion::Reporter.config.newrelic.license_key = 'BLAH' - # Adhearsion::Reporter.config.newrelic.app_name = 'AhnRepTest' - # end - - # it "does stuff" do - # Adhearsion::Plugin.init_plugins - # Adhearsion::Events.register_handler :event, EventClass do |event| - # raise ExceptionClass - # end - # Adhearsion::Events.trigger_immediately :event, EventClass.new - # Adhearsion::Events.clear_handlers :event, EventClass - # end - # end + context "with a HoptoadNotifier" do + before(:each) do + Adhearsion::Reporter.config.notifier = Adhearsion::Reporter::HoptoadNotifier + end + + it "should initialize correctly" do + Toadhopper.should_receive(:new).with(Adhearsion::Reporter.config.api_key, notify_host: Adhearsion::Reporter.config.url) + Adhearsion::Plugin.init_plugins + end + + it "should notify Airbrake" do + mock_notifier = double('notifier') + Toadhopper.should_receive(:new).and_return(mock_notifier) + event_error = ExceptionClass.new + mock_notifier.should_receive(:post!).at_least(:once).with(event_error).and_return(double('response').as_null_object) + Adhearsion::Plugin.init_plugins + Adhearsion::Events.trigger_immediately :exception, event_error + end + end + + context "with a NewrelicNotifier" do + before(:each) do + Adhearsion::Reporter.config.notifier = Adhearsion::Reporter::NewrelicNotifier + end + + it "should initialize correctly" do + NewRelic::Agent.should_receive(:manual_start).with(Adhearsion::Reporter.config.newrelic.to_hash) + Adhearsion::Plugin.init_plugins + end + + it "should notify Newrelic" do + NewRelic::Agent.should_receive(:manual_start) + + event_error = ExceptionClass.new + NewRelic::Agent.should_receive(:notice_error).at_least(:once).with(event_error) + + Adhearsion::Plugin.init_plugins + Adhearsion::Events.trigger_immediately :exception, event_error + end + end end