summaryrefslogtreecommitdiffstats
path: root/spec/unit/indirector/terminus.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit/indirector/terminus.rb')
-rwxr-xr-xspec/unit/indirector/terminus.rb48
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