Pull logging out to a shared behavior. Remove 4 pending specs.
This commit is contained in:
parent
f8d524c983
commit
57141fc305
3 changed files with 95 additions and 93 deletions
|
|
@ -3,6 +3,7 @@
|
||||||
# the COPYRIGHT file.
|
# the COPYRIGHT file.
|
||||||
|
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
require File.join(Rails.root, "spec", "shared_behaviors", "log_override")
|
||||||
|
|
||||||
describe AspectsController do
|
describe AspectsController do
|
||||||
render_views
|
render_views
|
||||||
|
|
@ -25,6 +26,22 @@ describe AspectsController do
|
||||||
request.env["HTTP_REFERER"] = 'http://' + request.host
|
request.env["HTTP_REFERER"] = 'http://' + request.host
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "custom logging on success" do
|
||||||
|
before do
|
||||||
|
@action = :index
|
||||||
|
@expected_renders = 15
|
||||||
|
end
|
||||||
|
it_should_behave_like "it overrides the logs on success"
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "custom logging on redirect" do
|
||||||
|
before do
|
||||||
|
@action = :show
|
||||||
|
@action_params = {'id' => @aspect0.id.to_s}
|
||||||
|
end
|
||||||
|
it_should_behave_like "it overrides the logs on redirect"
|
||||||
|
end
|
||||||
|
|
||||||
describe "#index" do
|
describe "#index" do
|
||||||
it "assigns @contacts to all the user's contacts" do
|
it "assigns @contacts to all the user's contacts" do
|
||||||
Factory.create :person
|
Factory.create :person
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
# the COPYRIGHT file.
|
# the COPYRIGHT file.
|
||||||
|
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
require File.join(Rails.root, "spec", "shared_behaviors", "log_override")
|
||||||
|
|
||||||
describe HomeController do
|
describe HomeController do
|
||||||
render_views
|
render_views
|
||||||
|
|
@ -26,102 +27,21 @@ describe HomeController do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
#This describe should apply to any controller class. HomeController is just the simplest.
|
describe "custom logging on success" do
|
||||||
describe 'log overriding in lib/log_overrider' do
|
|
||||||
before do
|
before do
|
||||||
Rails.stub(:logger).and_return(FakeLogger.new)
|
@action = :show
|
||||||
end
|
@action_params = {"lasers" => "green"}
|
||||||
context 'cross-stage' do
|
@expected_renders = 1
|
||||||
before do
|
|
||||||
pending "This might require patching Rails"
|
|
||||||
get :show
|
|
||||||
@lines = Rails.logger.infos
|
|
||||||
@id = @lines[1].match(/r_id=(\w+)\s/).captures.first
|
|
||||||
end
|
|
||||||
it 'logs a unified id in a request' do
|
|
||||||
id = @lines.first.match(/r_id=(\w+)\s/).captures.first
|
|
||||||
@lines.each do |line|
|
|
||||||
line.match(/r_id=(\w+)\s/).captures.first.should == @id
|
|
||||||
end
|
|
||||||
end
|
|
||||||
it 'logs different ids in different requests' do
|
|
||||||
get :show
|
|
||||||
old_lines = Rails.logger.infos.select do |line|
|
|
||||||
line.match(/r_id=(\w+)\s/).captures.first == @id
|
|
||||||
end
|
|
||||||
old_lines.length.should == Rails.logger.infos.length/2
|
|
||||||
end
|
|
||||||
end
|
|
||||||
context 'starting' do
|
|
||||||
before do
|
|
||||||
pending "This code is never reached in tests, but it seems to work in actual requests"
|
|
||||||
get :show
|
|
||||||
@line = Rails.logger.infos.first
|
|
||||||
end
|
|
||||||
it 'logs it' do
|
|
||||||
@line.should match /event=request_started/
|
|
||||||
end
|
|
||||||
end
|
|
||||||
context 'rendering' do
|
|
||||||
before do
|
|
||||||
get :show, :lasers => 'green'
|
|
||||||
@lines = Rails.logger.infos.select{|l| l.include?("event=render")}
|
|
||||||
end
|
|
||||||
it 'logs all renders' do
|
|
||||||
@lines.length.should == 1
|
|
||||||
end
|
|
||||||
it 'logs layouts' do
|
|
||||||
pending 'where is the template=home/show line?'
|
|
||||||
home_line = @lines.detect{|t|
|
|
||||||
t.include?("template=home/show.html.haml")}
|
|
||||||
home_line.should match /layout=layouts\/application/
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
context 'completion' do
|
|
||||||
context 'ok' do
|
|
||||||
before do
|
|
||||||
get :show, :lasers => 'green'
|
|
||||||
@line = Rails.logger.infos.last
|
|
||||||
end
|
|
||||||
it 'logs the completion of a request' do
|
|
||||||
@line.include?('event=request_completed').should be_true
|
|
||||||
end
|
|
||||||
it 'logs an ok' do
|
|
||||||
@line.include?('status=200').should be_true
|
|
||||||
end
|
|
||||||
it 'logs the controller' do
|
|
||||||
@line.include?('controller=HomeController').should be_true
|
|
||||||
end
|
|
||||||
it 'logs the action' do
|
|
||||||
@line.include?('action=show').should be_true
|
|
||||||
end
|
|
||||||
it 'logs params' do
|
|
||||||
@line.include?("params='{\"lasers\"=>\"green\"}'").should be_true
|
|
||||||
end
|
|
||||||
it 'does not log the view rendering time addition' do
|
|
||||||
@line.include?("(Views: ").should be_false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
context 'redirected' do
|
|
||||||
before do
|
|
||||||
sign_in @user
|
|
||||||
get :show, :lasers => 'green'
|
|
||||||
@line = Rails.logger.infos.last
|
|
||||||
end
|
|
||||||
it 'logs a redirect' do
|
|
||||||
@line.include?('status=302').should be_true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
it_should_behave_like "it overrides the logs on success"
|
||||||
end
|
end
|
||||||
class FakeLogger
|
|
||||||
attr_accessor :infos
|
describe "custom logging on redirect" do
|
||||||
def initialize
|
before do
|
||||||
self.infos = []
|
sign_in :user, make_user
|
||||||
end
|
@action = :show
|
||||||
def info line
|
@action_params = {"lasers" => "green"}
|
||||||
self.infos << line
|
|
||||||
end
|
end
|
||||||
|
it_should_behave_like "it overrides the logs on redirect"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
65
spec/shared_behaviors/log_override.rb
Normal file
65
spec/shared_behaviors/log_override.rb
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
class FakeLogger
|
||||||
|
attr_accessor :infos
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
self.infos = []
|
||||||
|
end
|
||||||
|
|
||||||
|
def info line
|
||||||
|
self.infos << line
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
shared_examples_for 'it overrides the logs on success' do
|
||||||
|
before do
|
||||||
|
Rails.stub(:logger).and_return(FakeLogger.new)
|
||||||
|
end
|
||||||
|
context 'rendering' do
|
||||||
|
before do
|
||||||
|
get @action, @action_params
|
||||||
|
@lines = Rails.logger.infos.select { |l| l.include?("event=render") }
|
||||||
|
end
|
||||||
|
it 'logs all renders' do
|
||||||
|
@lines.length.should == @expected_renders
|
||||||
|
end
|
||||||
|
end
|
||||||
|
context 'completion' do
|
||||||
|
context 'ok' do
|
||||||
|
before do
|
||||||
|
get @action, @action_params
|
||||||
|
@line = Rails.logger.infos.last
|
||||||
|
end
|
||||||
|
it 'logs the completion of a request' do
|
||||||
|
@line.include?('event=request_completed').should be_true
|
||||||
|
end
|
||||||
|
it 'logs an ok' do
|
||||||
|
@line.include?('status=200').should be_true
|
||||||
|
end
|
||||||
|
it 'logs the controller' do
|
||||||
|
@line.include?("controller=#{controller.class.name}").should be_true
|
||||||
|
end
|
||||||
|
it 'logs the action' do
|
||||||
|
@line.include?("action=#{@action}").should be_true
|
||||||
|
end
|
||||||
|
it 'logs params' do
|
||||||
|
if @action_params
|
||||||
|
@line.include?("params='#{@action_params.inspect.gsub(" ", "")}'").should be_true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
it 'does not log the view rendering time addition' do
|
||||||
|
@line.include?("(Views: ").should be_false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
shared_examples_for 'it overrides the logs on redirect' do
|
||||||
|
before do
|
||||||
|
Rails.stub(:logger).and_return(FakeLogger.new)
|
||||||
|
get @action, @action_params
|
||||||
|
@line = Rails.logger.infos.last
|
||||||
|
end
|
||||||
|
it 'logs a redirect' do
|
||||||
|
@line.include?('status=302').should be_true
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Reference in a new issue