summaryrefslogtreecommitdiffstats
path: root/spec/unit/parser
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit/parser')
-rwxr-xr-xspec/unit/parser/ast/resource.rb90
1 files changed, 90 insertions, 0 deletions
diff --git a/spec/unit/parser/ast/resource.rb b/spec/unit/parser/ast/resource.rb
new file mode 100755
index 000000000..1546d657f
--- /dev/null
+++ b/spec/unit/parser/ast/resource.rb
@@ -0,0 +1,90 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+describe Puppet::Parser::AST::Resource do
+
+ ast = Puppet::Parser::AST
+
+ before :each do
+ @title = stub_everything 'title'
+ @compiler = stub_everything 'compiler'
+ @scope = Puppet::Parser::Scope.new(:compiler => @compiler)
+ @param1 = stub_everything 'parameter', :is_a? => true
+ @scope.stubs(:resource).returns(stub_everything)
+ @params = ast::ASTArray.new( :children => [@param1])
+ @resource = ast::Resource.new(:title => @title, :type => "Resource", :params => @params )
+ @resource.stubs(:qualified_type).returns("Resource")
+ Puppet::Parser::Resource.stubs(:new).returns(stub_everything)
+ end
+
+ it "should evaluate all its parameters" do
+
+ @param1.expects(:safeevaluate).with(@scope)
+
+ @resource.evaluate(@scope)
+ end
+
+ it "should evaluate its title" do
+
+ @title.expects(:safeevaluate).with(@scope)
+
+ @resource.evaluate(@scope)
+ end
+
+ it "should flatten the titles array" do
+ titles = stub 'titles'
+ title_array = stub 'title_array', :is_a? => true
+
+ titles.stubs(:safeevaluate).with(@scope).returns(title_array)
+
+ title_array.expects(:flatten).returns([])
+
+ @resource.title = titles
+ @resource.evaluate(@scope)
+ end
+
+ it "should create one resource objects per title" do
+ titles = stub 'titles'
+ title_array = stub 'title_array', :is_a? => true
+
+ title_array.stubs(:flatten).returns([@title])
+ titles.stubs(:safeevaluate).with(@scope).returns(title_array)
+
+ Puppet::Parser::Resource.expects(:new).with { |hash| hash[:title] == @title }
+
+ @resource.title = titles
+ @resource.evaluate(@scope)
+ end
+
+ it "should handover resources to the compiler" do
+ resource = stub 'resource'
+ titles = stub 'titles'
+ title_array = stub 'title_array', :is_a? => true
+
+ title_array.stubs(:flatten).returns([@title])
+ titles.stubs(:safeevaluate).with(@scope).returns(title_array)
+ Puppet::Parser::Resource.stubs(:new).returns(resource)
+
+ @compiler.expects(:add_resource).with(@scope, resource)
+
+ @resource.title = titles
+ @resource.evaluate(@scope)
+ end
+
+ it "should return the newly created resources" do
+ resource = stub 'resource'
+ titles = stub 'titles'
+ title_array = stub 'title_array', :is_a? => true
+
+ title_array.stubs(:flatten).returns([@title])
+ titles.stubs(:safeevaluate).with(@scope).returns(title_array)
+ Puppet::Parser::Resource.stubs(:new).returns(resource)
+
+ @compiler.stubs(:add_resource).with(resource)
+
+ @resource.title = titles
+ @resource.evaluate(@scope).should == [resource]
+ end
+end
+