Sha256: 29558c375585bcb7c60956024d210f661993106c85cbf04834f005a34a37f431

Contents?: true

Size: 1.37 KB

Versions: 4

Compression:

Stored size: 1.37 KB

Contents

require 'spec_helper'

RSpec.describe PolishGeeks::DevTools::Runner do
  subject { described_class.new }

  describe '#execute' do
    let(:logger) { double }
    let(:output_storer) { double }
    let(:config) { PolishGeeks::DevTools::Config.new }

    before do
      expect(::PolishGeeks::DevTools::OutputStorer)
        .to receive(:new)
        .and_return(output_storer)

      expect(::PolishGeeks::DevTools)
        .to receive(:config)
        .and_return(config)
        .at_least(:once)

      PolishGeeks::DevTools::Config::COMMANDS.each do |command|
        config.public_send(:"#{command}=", true)

        klass_name = command.to_s.gsub(/(?<=_|^)(\w)/) { |el| el.upcase }.gsub(/(?:_)(\w)/, '\1')
        klass = Object.const_get("PolishGeeks::DevTools::Command::#{klass_name}")

        instance = double
        output = double

        expect(klass)
          .to receive(:new)
          .and_return(instance)

        expect(instance)
          .to receive(:stored_output=)
          .with(output_storer)

        expect(instance)
          .to receive(:execute)

        expect(instance)
          .to receive(:output)
          .and_return(output)

        expect(output_storer)
          .to receive(:"#{command}=")
          .with(output)

        expect(logger)
          .to receive(:log)
          .with(instance)
      end
    end

    it { subject.execute(logger) }
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
polishgeeks-dev-tools-1.1.2 spec/lib/polishgeeks/dev-tools/runner_spec.rb
polishgeeks-dev-tools-1.1.1 spec/lib/polishgeeks/dev-tools/runner_spec.rb
polishgeeks-dev-tools-1.1.0 spec/lib/polishgeeks/dev-tools/runner_spec.rb
polishgeeks-dev-tools-1.0.0 spec/lib/polishgeeks/dev-tools/runner_spec.rb