spec/command_spec.rb in gator-0.0.20.pre vs spec/command_spec.rb in gator-0.0.21.pre

- old
+ new

@@ -1,20 +1,84 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper') +class CommandA < Gator::Command + define :command => "a", :short => "a", + :usage => "a", :description => "a" +end +class CommandB < Gator::Command + define :command => "b", :short => "b", + :usage => "b", :description => "b" +end + +class CommandC < Gator::Command + define :command => "c", :short => "c", + :usage => "c", :description => "c" +end + +class SpecCollection < Gator::Command + define :command => "collection", :short => "c", + :usage => "collection", :description => "collection" + + register_subcommand CommandA + CommandA.register_subcommand CommandB + register_subcommand CommandC +end + describe Gator::ActAsCommand do - it "should have some tests" + it "should contain the correct definition" do + CommandA.definition[:command].should == "a" + CommandA.definition[:short].should == "a" + CommandA.definition[:usage].should == "a" + CommandA.definition[:description].should == "a" + end + it "should have the correct parent" do + CommandB.parent.should == CommandA + CommandA.parent.should == SpecCollection + CommandC.parent.should == SpecCollection + SpecCollection.parent.should == nil + end + end describe Gator::ActAsCommandCollection do - it "should have some tests" + it "should provide the correct subcommands" do + SpecCollection.get_subcommand("a").should == CommandA + SpecCollection.get_subcommand("c").should == CommandC + end + it "should provide the correct nested subcommands" do + SpecCollection.get_subcommand("a","b").should == CommandB + end + + it "should return nil if a command cannot be found" do + SpecCollection.get_subcommand("d").should == nil + end + + it "should resolve the correct subcommand on a parent" do + CommandB.resolve_subcommand(["a"]).should == CommandA + CommandB.resolve_subcommand(["c"]).should == CommandC + end + + it "should resolve the correct nested subcommand on a parent" do + CommandC.resolve_subcommand(["a","b"]).should == CommandB + end + + it "should fall back to CommandB" do + CommandC.resolve_subcommand(["a","d"],["a","b"]).should == CommandB + end + + it "should return nil if a command cannot be resolved" do + CommandC.resolve_subcommand("d").should == nil + end + end describe Gator::Command do - it "should have some tests" + it "should be covered by Gator::ActAsCommandCollection & Gator::ActAsCommand" do + end end \ No newline at end of file