Sha256: ad731fd9d3cc91de6b97a1e5bd32d80e736172f60ab4712adb5f9ae14c978449

Contents?: true

Size: 1.5 KB

Versions: 26

Compression:

Stored size: 1.5 KB

Contents

describe Ppl::Application::Router do

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

    @external = double(Ppl::Command::External)
    @router.external_command = @external

    @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::External if the input matches a bang alias" do
      @external.should_receive(:name=).with("t")
      @external.should_receive(:command=).with("two")
      @router.aliases = {"t" => "!two"}
      @router.route("t").should be @external
    end

  end

end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
ppl-3.0.1 spec/ppl/application/router_spec.rb
ppl-3.0.0 spec/ppl/application/router_spec.rb
ppl-2.4.1 spec/ppl/application/router_spec.rb
ppl-2.4.0 spec/ppl/application/router_spec.rb
ppl-2.3.3 spec/ppl/application/router_spec.rb
ppl-2.3.2 spec/ppl/application/router_spec.rb
ppl-2.3.1 spec/ppl/application/router_spec.rb
ppl-2.3.0 spec/ppl/application/router_spec.rb
ppl-2.2.0 spec/ppl/application/router_spec.rb
ppl-2.1.0 spec/ppl/application/router_spec.rb
ppl-2.0.0 spec/ppl/application/router_spec.rb
ppl-1.25.0 spec/ppl/application/router_spec.rb
ppl-1.24.0 spec/ppl/application/router_spec.rb
ppl-1.23.0 spec/ppl/application/router_spec.rb
ppl-1.22.2 spec/ppl/application/router_spec.rb
ppl-1.22.1 spec/ppl/application/router_spec.rb
ppl-1.22.0 spec/ppl/application/router_spec.rb
ppl-1.21.0 spec/ppl/application/router_spec.rb
ppl-1.20.0 spec/ppl/application/router_spec.rb
ppl-1.19.0 spec/ppl/application/router_spec.rb