spec/integration/rails/request_spec.rb in loga-1.4.0 vs spec/integration/rails/request_spec.rb in loga-2.0.0

- old
+ new

@@ -1,53 +1,52 @@ require 'spec_helper' -describe 'Integration with Rails', timecop: true do +RSpec.describe 'Structured logging with Rails', timecop: true, + if: Rails.env.production? do let(:app) { Rails.application } - let(:json_entries) do - [].tap do |entries| - STREAM.tap do |s| - s.rewind - s.read.split("\n").each do |line| - entries << JSON.parse(line) - end - s.close - s.reopen - end + let(:log_entries) do + entries = [] + STREAM.tap do |s| + s.rewind + entries = s.read.split("\n").map { |line| JSON.parse(line) } + s.close + s.reopen end + entries end - let(:json) { json_entries.last } - let(:json_response) { JSON.parse(last_response.body) } + let(:last_log_entry) { log_entries.last } + let(:json_response) { JSON.parse(last_response.body) } include_examples 'request logger' it 'preserves rails parameters' do get '/show' expect(json_response).to eq('action' => 'show', 'controller' => 'application') end it 'includes the controller name and action' do get '/ok' - expect(json).to include('_request.controller' => 'ApplicationController#ok') + expect(last_log_entry).to include('_request.controller' => 'ApplicationController#ok') end describe 'LogSubscriber' do context 'ActionController' do let(:action_controller_notifications) do - json_entries.select { |e| e.to_json =~ /Processing by|Completed/ } + log_entries.select { |e| e.to_json =~ /Processing by|Completed/ } end it 'silences ActionController::LogSubscriber' do get '/show' expect(action_controller_notifications).to be_empty end end context 'ActionView' do let(:action_view_notifications) do - json_entries.select { |e| e.to_json =~ /Rendered/ } + log_entries.select { |e| e.to_json =~ /Rendered/ } end it 'silences ActionView::LogSubscriber' do put '/users/5' expect(action_view_notifications).to be_empty @@ -56,10 +55,10 @@ end describe 'when request causes ActionDispatch 404' do it 'does not log ActionDispatch::DebugExceptions' do get '/not_found', {}, 'HTTP_X_REQUEST_ID' => '471a34dc' - expect(json_entries.count).to eq(1) - expect(json['short_message']).to eq('GET /not_found 404 in 0ms') + expect(log_entries.count).to eq(1) + expect(last_log_entry['short_message']).to eq('GET /not_found 404 in 0ms') end end end