# frozen_string_literal: true

require 'spec_helper'
require 'cucumber/rake/task'
require 'rake'

module Cucumber
  module Rake
    describe Task::ForkedCucumberRunner do
      let(:libs) { ['lib'] }
      let(:binary) { Cucumber::BINARY }
      let(:cucumber_opts) { ['--cuke-option'] }
      let(:feature_files) { ['./some.feature'] }

      context 'when running with bundler' do
        let(:bundler) { true }

        subject { Task::ForkedCucumberRunner.new(libs, binary, cucumber_opts, bundler, feature_files) }

        it 'does use bundler if bundler is set to true' do
          expect(subject.use_bundler).to be true
        end

        it 'uses bundle exec to find cucumber and libraries' do
          expect(subject.cmd).to eq [
            Cucumber::RUBY_BINARY,
            '-S',
            'bundle',
            'exec',
            'cucumber',
            '--cuke-option'
          ] + feature_files
        end
      end

      context 'when running without bundler' do
        let(:bundler) { false }

        subject { Task::ForkedCucumberRunner.new(libs, binary, cucumber_opts, bundler, feature_files) }

        it 'does not use bundler if bundler is set to false' do
          expect(subject.use_bundler).to be false
        end

        it 'uses well known cucumber location and specified libraries' do
          expect(subject.cmd).to eq [
            Cucumber::RUBY_BINARY,
            '-I',
            '"lib"',
            "\"#{Cucumber::BINARY}\"",
            '--cuke-option'
          ] + feature_files
        end
      end
    end
  end
end
