diff options
Diffstat (limited to 'spec/unit/indirector/terminus.rb')
-rwxr-xr-x | spec/unit/indirector/terminus.rb | 48 |
1 files changed, 38 insertions, 10 deletions
diff --git a/spec/unit/indirector/terminus.rb b/spec/unit/indirector/terminus.rb index 9632aa22f..1660315ca 100755 --- a/spec/unit/indirector/terminus.rb +++ b/spec/unit/indirector/terminus.rb @@ -3,29 +3,52 @@ require 'puppet/defaults' require 'puppet/indirector' describe Puppet::Indirector::Terminus do + before do + @terminus = Class.new(Puppet::Indirector::Terminus) + end + it "should support the documentation methods" do - Puppet::Indirector::Terminus.should respond_to(:desc) + @terminus.should respond_to(:desc) end # LAK:FIXME I don't really know the best way to test this kind of # requirement. it "should support a class-level name attribute" do - Puppet::Indirector::Terminus.should respond_to(:name) - Puppet::Indirector::Terminus.should respond_to(:name=) + @terminus.should respond_to(:name) + @terminus.should respond_to(:name=) end it "should support a class-level indirection attribute" do - Puppet::Indirector::Terminus.should respond_to(:indirection) - Puppet::Indirector::Terminus.should respond_to(:indirection=) + @terminus.should respond_to(:indirection) + @terminus.should respond_to(:indirection=) + end + + it "should accept indirection instances as its indirection" do + indirection = stub 'indirection', :is_a? => true + proc { @terminus.indirection = indirection }.should_not raise_error + @terminus.indirection.should equal(indirection) + end + + it "should look up indirection instances when only a name has been provided" do + indirection = mock 'indirection' + Puppet::Indirector::Indirection.expects(:instance).with(:myind).returns(indirection) + @terminus.indirection = :myind + @terminus.indirection.should equal(indirection) + end + + it "should fail when provided a name that does not resolve to an indirection" do + Puppet::Indirector::Indirection.expects(:instance).with(:myind).returns(nil) + proc { @terminus.indirection = :myind }.should raise_error(ArgumentError) + @terminus.indirection.should be_nil end end describe Puppet::Indirector::Terminus, " when a terminus instance" do before do - @terminus_class = Class.new(Puppet::Indirector::Terminus) do - @name = :test - @indirection = :whatever - end + @indirection = stub 'indirection', :name => :myyaml + @terminus_class = Class.new(Puppet::Indirector::Terminus) + @terminus_class.name = :test + @terminus_class.stubs(:indirection).returns(@indirection) @terminus = @terminus_class.new end @@ -34,6 +57,11 @@ describe Puppet::Indirector::Terminus, " when a terminus instance" do end it "should return the class's indirection as its indirection" do - @terminus.indirection.should == :whatever + @terminus.indirection.should equal(@indirection) + end + + it "should require an associated indirection" do + @terminus_class.expects(:indirection).returns(nil) + proc { @terminus_class.new }.should raise_error(Puppet::DevError) end end |