Sha256: b7f9a6abc00c3094a8fb7667a08202fbb57258fae949f0405e24fa053cb65aaf

Contents?: true

Size: 1.83 KB

Versions: 2

Compression:

Stored size: 1.83 KB

Contents

require "spec_helper"

module CLI
  describe App do
    before do
      @app = App.new("hello") do
        name    "Hello"
        version "0.0.1"

        option "-m", "--message MESSAGE" do |msg|
          options[:msg] = msg
        end

        action "hi" do
          puts "Hi!"
        end

        default do
          puts options[:msg] || "Hello, World!"
        end
      end
    end

    it "has a binary name" do
      @app.binary.should eq("hello")
    end

    it "has a name" do
      @app.name.should eq("Hello")
    end

    it "has a version" do
      @app.version.should eq("0.0.1")
    end

    it "runs an action" do
      $stdout.should_receive(:puts).with("Hi!")
      @app.run("hi")
    end

    it "fails when action is not found" do
      lambda do
        @app.run("bad")
      end.should raise_error(ArgumentError, "action 'bad' not found")
    end

    it "runs the default action" do
      $stdout.should_receive(:puts).with("Hello, World!")
      @app.run("default")
    end

    describe "#run!" do
      describe "when arguments are empty" do
        it "runs the default action" do
          @app.should_receive(:run).with("default")
          @app.run!([])
        end
      end

      describe "when 1st argument is a valid action name" do
        it "runs the action" do
          @app.should_receive(:run).with("hi")
          @app.run!(%w( hi ))
        end
      end

      describe "when 1st argument is an invalid action name" do
        it "prints error message" do
          $stdout.should_receive(:puts).with("Action 'bad' not found")
          @app.run!(%w( bad ))
        end
      end

      describe "with a valid option" do
        it "sets the option and runs the default action" do
          $stdout.should_receive(:puts).with("Goodmorning!")
          @app.run!(%w( -m Goodmorning! ))
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
wojtekmach-cli-0.1.3 spec/cli/app_spec.rb
wojtekmach-cli-0.1.0 spec/cli/app_spec.rb