diff options
-rw-r--r-- | lib/puppet/indirector.rb | 22 | ||||
-rw-r--r-- | lib/puppet/indirector/terminus.rb | 19 | ||||
-rwxr-xr-x | spec/unit/indirector/terminus.rb | 39 |
3 files changed, 59 insertions, 21 deletions
diff --git a/lib/puppet/indirector.rb b/lib/puppet/indirector.rb index bb7006431..4d7d9d92d 100644 --- a/lib/puppet/indirector.rb +++ b/lib/puppet/indirector.rb @@ -7,28 +7,8 @@ module Puppet::Indirector # LAK:FIXME We need to figure out how to handle documentation for the # different indirection types. -# JRB:TODO factor this out into its own class, with specs, and require it here -# require 'puppet/indirector/terminus' - - # A simple class that can function as the base class for indirected types. - class Terminus - require 'puppet/util/docs' - extend Puppet::Util::Docs - - class << self - attr_accessor :name, :indirection - end - - def name - self.class.name - end - - def indirection - self.class.indirection - end - end - require 'puppet/indirector/indirection' + require 'puppet/indirector/terminus' # This handles creating the terminus classes. require 'puppet/util/classgen' diff --git a/lib/puppet/indirector/terminus.rb b/lib/puppet/indirector/terminus.rb new file mode 100644 index 000000000..d311eb60b --- /dev/null +++ b/lib/puppet/indirector/terminus.rb @@ -0,0 +1,19 @@ +require 'puppet/indirector' + +# A simple class that can function as the base class for indirected types. +class Puppet::Indirector::Terminus + require 'puppet/util/docs' + extend Puppet::Util::Docs + + class << self + attr_accessor :name, :indirection + end + + def name + self.class.name + end + + def indirection + self.class.indirection + end +end diff --git a/spec/unit/indirector/terminus.rb b/spec/unit/indirector/terminus.rb new file mode 100755 index 000000000..9632aa22f --- /dev/null +++ b/spec/unit/indirector/terminus.rb @@ -0,0 +1,39 @@ +require File.dirname(__FILE__) + '/../../spec_helper' +require 'puppet/defaults' +require 'puppet/indirector' + +describe Puppet::Indirector::Terminus do + it "should support the documentation methods" do + Puppet::Indirector::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=) + end + + it "should support a class-level indirection attribute" do + Puppet::Indirector::Terminus.should respond_to(:indirection) + Puppet::Indirector::Terminus.should respond_to(:indirection=) + 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 + @terminus = @terminus_class.new + end + + it "should return the class's name as its name" do + @terminus.name.should == :test + end + + it "should return the class's indirection as its indirection" do + @terminus.indirection.should == :whatever + end +end |