Sha256: 9d74f2a0deca920d6eee3e62b8c850b6cb406f15855039baefcce8bf446fe865

Contents?: true

Size: 1.83 KB

Versions: 1

Compression:

Stored size: 1.83 KB

Contents

require 'pathname'
require 'spec_helper'

describe Koality::Runner::RailsBestPractices do

  let(:options) do
    Koality::Options.new({
      :rails_bp_accept_patterns => %w(app/controllers/.+\\.rb),
      :rails_bp_ignore_patterns => [/app\/helpers\/foo_helper\.rb/],
      :rails_bp_error_file => 'rails_bp_errors',
      :output_directory => 'quality'
    })
  end
  let(:runner) { runner = Koality::Runner::RailsBestPractices.new options }

  describe '.new' do
    it 'figures out the output file path' do
      runner.output_file.should == options.output_file(:rails_bp_error_file)
    end

    it 'translates the options into what RBP expects' do
      rbp_opts = runner.rbp_options

      rbp_opts['only'].should == [Regexp.new("app/controllers/.+\\.rb")]
      rbp_opts['exclude'].should == [/app\/helpers\/foo_helper\.rb/]
    end
  end

  describe '#run' do
    let(:reporter) { stub('reporter', :report => true) }
    let(:rbp) { rbp = stub('RailsBestPractices', :analyze => true, :errors => []) }

    before do
      FileUtils.mkdir_p options.output_directory
      Koality::Reporter::RailsBestPractices.stubs(:start).yields(reporter)
      RailsBestPractices::Analyzer.stubs(:new).returns(rbp)
    end

    it 'runs a RBP analyzer with the translated options' do
      RailsBestPractices::Analyzer.expects(:new).with('.', runner.rbp_options).returns(rbp)
      rbp.expects(:analyze)

      runner.run
    end

    it 'creates a file with the number of failures from the run' do
      errors = [stub('error')] * rand(5)
      rbp.stubs(:errors).returns(errors)

      runner.run

      Pathname.new(runner.output_file).read.should == errors.count.to_s
    end

    it 'reports the errors' do
      errors = [stub('error')] * rand(5)
      rbp.stubs(:errors).returns(errors)

      reporter.expects(:report).with(errors)
      runner.run
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
koality-1.0.1 spec/koality/runner/rails_best_practices_spec.rb