Sha256: 0f6b4521c3aeadf9e9722f71e62168eff242c4f4237a0ee82d55fdae5f1c852e

Contents?: true

Size: 1.03 KB

Versions: 2

Compression:

Stored size: 1.03 KB

Contents

require 'lerna/strategy_selector'

RSpec.describe Lerna::StrategySelector do
  subject {
    described_class.new(
      'strategy_a' => strategy_a_class,
      'strategy_b' => strategy_b_class
    )
  }

  let(:strategy_a_class) { double('StrategyA', new: strategy_a) }
  let(:strategy_b_class) { double('StrategyB', new: strategy_b) }
  let(:strategy_a) { double('strategy_a', applicable?: false) }
  let(:strategy_b) { double('strategy_b', applicable?: true) }
  let(:displays) { double('displays') }

  it 'instantiates each class with the displays' do
    expect(strategy_a_class).to receive(:new).with(displays).and_return(strategy_a)
    expect(strategy_b_class).to receive(:new).with(displays).and_return(strategy_b)
    subject.call(%w[ strategy_a strategy_b ], displays)
  end

  it 'returns the first applicable instance' do
    expect(subject.call(%w[ strategy_a strategy_b ], displays)).to eq(strategy_b)
  end

  it 'returns nil if there is no applicable instance' do
    expect(subject.call(%w[ strategy_a ], displays)).to be_nil
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lerna-0.1.1 spec/strategy_selector_spec.rb
lerna-0.1.0 spec/strategy_selector_spec.rb