Sha256: 854f22b5deb34c7027c6d3879e144f679051d7c673ba056b17f8bca346e0dce6

Contents?: true

Size: 1.92 KB

Versions: 1

Compression:

Stored size: 1.92 KB

Contents

require 'spec_helper'
require 'tailor/reporter'

describe Tailor::Reporter do
  describe '#initialize' do
    context 'text formatter' do
      let(:formats) { ['text'] }

      it 'creates a new Formatter object of the type passed in' do
        reporter = Tailor::Reporter.new(formats)
        reporter.formatters.first.should be_a Tailor::Formatters::Text
      end
    end
  end

  describe '#file_report' do
    let(:file_problems) { double 'file problems' }
    let(:formatter) { double 'Tailor::Formatters::SomeFormatter' }

    subject do
      t = Tailor::Reporter.new
      t.instance_variable_set(:@formatters, [formatter])

      t
    end

    it 'calls #file_report on each @formatters' do
      label = :some_label
      formatter.should_receive(:file_report).with(file_problems, label)

      subject.file_report(file_problems, label)
    end
  end

  describe '#summary_report' do
    let(:all_problems) { double 'all problems' }
    let(:formatter) { double 'Tailor::Formatters::SomeFormatter' }

    subject do
      t = Tailor::Reporter.new
      t.instance_variable_set(:@formatters, [formatter])

      t
    end

    context 'without output file' do
      it 'calls #file_report on each @formatters' do
        formatter.should_receive(:summary_report).with(all_problems)
        File.should_not_receive(:open)

        subject.summary_report(all_problems)
      end
    end

    context 'with output file' do
      let(:output_file) { 'output.whatever' }
      before do
        formatter.should_receive(:respond_to?).with(:accepts_output_file).
          and_return(true)
        formatter.should_receive(:accepts_output_file).and_return(true)
      end

      it 'calls #summary_report on each @formatters' do
        formatter.should_receive(:summary_report).with(all_problems)
        File.should_receive(:open).with(output_file, 'w')

        subject.summary_report(all_problems, output_file: output_file)
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tailor-1.4.0 spec/unit/tailor/reporter_spec.rb