Sha256: fa296d507cd2ad495eeab69d3eb61bfa0737b3be5ecdc4a99152c6e8b740be55

Contents?: true

Size: 1.23 KB

Versions: 2

Compression:

Stored size: 1.23 KB

Contents

require 'spec_helper'

describe PaulBunyan::MetadataLogging do
  subject { Object.new }
  let(:formatter) { double('formatter') }

  before do
    subject.extend(PaulBunyan::MetadataLogging)
    allow(subject).to receive(:formatter).and_return(formatter)
  end

  it 'must delegate clear_metadata! to the formatter' do
    expect(formatter).to receive(:clear_metadata!)
    subject.clear_metadata!
  end

  it 'must delegate with_metadata to the formatter' do
    expect(formatter).to receive(:with_metadata).with(foo: 'bar').and_yield
    subject.with_metadata(foo: 'bar') do |logger|
      expect(subject).to eq logger
    end
  end

  context '#flush' do
    it 'clears metadata on the formatter' do
      expect(formatter).to receive(:clear_metadata!)
      subject.flush
    end

    it 'sends flush to a parent' do
      klass = Class.new
      klass.class_eval do
        def flush
          flush_behavior()
        end
      end

      metadata_logger = klass.new
      metadata_logger.extend(PaulBunyan::MetadataLogging)
      allow(metadata_logger).to receive(:formatter).and_return(formatter)
      allow(formatter).to receive(:clear_metadata!)

      expect(metadata_logger).to receive(:flush_behavior)
      metadata_logger.flush
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
paul_bunyan-1.5.1 spec/lib/paul_bunyan/metadata_logging_spec.rb
paul_bunyan-1.5.0 spec/lib/paul_bunyan/metadata_logging_spec.rb