Sha256: ec4e8aaecc17823333ec07812303bbc25641eecb36a971303531924e7b1f2524

Contents?: true

Size: 1.49 KB

Versions: 3

Compression:

Stored size: 1.49 KB

Contents

describe Ppl::Application::Router do

  before(:each) do
    @suite  = Ppl::Application::CommandSuite.new
    @router = Ppl::Application::Router.new(@suite)

    @execute = double(Ppl::Command::Execute)
    @router.execute_command = @execute

    @cmd_one = Ppl::Application::Command.new
    @cmd_one.name = "one"

    @cmd_two = Ppl::Application::Command.new
    @cmd_two.name = "two"

    @suite.add_command(@cmd_one)
    @suite.add_command(@cmd_two)
  end

  describe "#default=" do
    it "should accept the name of the default command" do
      @router.default = "one"
      @router.default.should eq "one"
    end
  end

  describe "#route" do

    it "should return the command whose name matches the given argument" do
      @router.route("two").should be @cmd_two
    end

    it "should return nil if no matching command can be found" do
      @router.route("three").should be nil
    end

    it "should fall back to the default command if the given one isn't found" do
      @router.default = "one"
      @router.route("three").should be @cmd_one
    end

    it "should apply the aliases if the argument doesn't match a command" do
      @router.aliases = {"t" => "two"}
      @router.route("t").should be @cmd_two
    end

    it "should return a Ppl::Command::Execute if the input matches a bang alias" do
      @execute.should_receive(:name=).with("t")
      @execute.should_receive(:command=).with("two")
      @router.aliases = {"t" => "!two"}
      @router.route("t").should be @execute
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ppl-1.15.0 spec/ppl/application/router_spec.rb
ppl-1.14.1 spec/ppl/application/router_spec.rb
ppl-1.14.0 spec/ppl/application/router_spec.rb