Sha256: f923a512694029ffcf591d964e99c198fee74d8822bae73f1c6ed6026137dbbf

Contents?: true

Size: 1.96 KB

Versions: 2

Compression:

Stored size: 1.96 KB

Contents

require 'spec_helper'

describe DataForge::CLI::Options do

  let(:stdout) { StringIO.new }
  subject { DataForge::CLI::Options }

  describe ".parse" do
    context "when parsing the command script parameter" do
      it "should accept a single command script parameter" do
        options = subject.parse(%w[command_script.rb])

        expect(options.command_script).to eq "command_script.rb"
      end

      it "should raise an error if no command script is specified" do
        expect { subject.parse(%w[]) }.to raise_error "No command script specified"
      end

      it "should raise an error if there is more than one command script specified" do
        expect { subject.parse(%w[command_script1.rb command_script2.rb]) }.to raise_error "More than one command script specified"
      end
    end


    context "when parsing the --help switch" do
      it "should print the help information" do
        subject.parse(%w[--help], stdout)

        expect(stdout.string).to include "Usage: [bundle exec] forge [options] command_script.rb"
      end
    end


    context "when parsing the --version switch" do
      it "should print the version" do
        subject.parse(%w[--version], stdout)

        expect(stdout.string).to match /DataForge, version \d+(\.\d+)*/
      end
    end


    context "when parsing user-defined parameters" do
      it "should accept a name-value pair as a parameter with the -U switch" do
        options = subject.parse(%w[-Ucustomer=test command_script.rb])

        expect(options.user_params).to eq(customer: "test")
      end

      it "should accept multiple user-defined parameters" do
        options = subject.parse(%w[-Ucustomer=test -Udata_file=items.csv command_script.rb])

        expect(options.user_params).to eq(customer: "test", data_file: "items.csv")
      end
    end


    it "should raise an error if an unknown option is specified" do
      expect { subject.parse(%w[--unknown]) }.to raise_error OptionParser::InvalidOption
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
data_forge-0.1.1 spec/data_forge/cli/options_spec.rb
data_forge-0.1 spec/data_forge/cli/options_spec.rb