Signed-off-by: Brice Figureau <[EMAIL PROTECTED]>
---
 spec/unit/parser/ast/collection.rb        |   63 +++++++++++++++++++++++++++++
 spec/unit/parser/collector.rb             |   38 +++++++++++++++++
 test/data/snippets/collection_override.pp |    9 ++++
 3 files changed, 110 insertions(+), 0 deletions(-)
 create mode 100755 spec/unit/parser/ast/collection.rb
 create mode 100644 test/data/snippets/collection_override.pp

diff --git a/spec/unit/parser/ast/collection.rb 
b/spec/unit/parser/ast/collection.rb
new file mode 100755
index 0000000..c141bd7
--- /dev/null
+++ b/spec/unit/parser/ast/collection.rb
@@ -0,0 +1,63 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+describe Puppet::Parser::AST::Collection do
+    before :each do
+        @scope = stub_everything 'scope'
+        @compiler = stub_everything 'compile'
+        @scope.stubs(:compiler).returns(@compiler)
+
+        @overrides = stub_everything 'overrides'
+        @overrides.stubs(:is_a?).with(Puppet::Parser::AST).returns(true)
+
+    end
+
+    it "should evaluate its query" do
+        query = mock 'query'
+        collection = Puppet::Parser::AST::Collection.new :query => query, 
:form => :virtual
+
+        query.expects(:safeevaluate).with(@scope)
+
+        collection.evaluate(@scope)
+    end
+
+    it "should instantiate a Collector for this type" do
+        collection = Puppet::Parser::AST::Collection.new :form => :virtual, 
:type => "test"
+
+        Puppet::Parser::Collector.expects(:new).with(@scope, "test", nil, nil, 
:virtual)
+
+        collection.evaluate(@scope)
+    end
+
+    it "should tell the compiler about this collector" do
+        collection = Puppet::Parser::AST::Collection.new :form => :virtual, 
:type => "test"
+        Puppet::Parser::Collector.stubs(:new).returns("whatever")
+
+        @compiler.expects(:add_collection).with("whatever")
+
+        collection.evaluate(@scope)
+    end
+
+    it "should evaluate overriden paramaters" do
+        collector = stub_everything 'collector'
+        collection = Puppet::Parser::AST::Collection.new :form => :virtual, 
:type => "test", :override => @overrides
+        Puppet::Parser::Collector.stubs(:new).returns(collector)
+
+        @overrides.expects(:safeevaluate).with(@scope)
+
+        collection.evaluate(@scope)
+    end
+
+    it "should tell the collector about overrides" do
+        collector = mock 'collector'
+        collection = Puppet::Parser::AST::Collection.new :form => :virtual, 
:type => "test", :override => @overrides
+        Puppet::Parser::Collector.stubs(:new).returns(collector)
+
+        collector.expects(:add_override)
+
+        collection.evaluate(@scope)
+    end
+
+
+end
diff --git a/spec/unit/parser/collector.rb b/spec/unit/parser/collector.rb
index ede583b..3a740ff 100755
--- a/spec/unit/parser/collector.rb
+++ b/spec/unit/parser/collector.rb
@@ -39,6 +39,14 @@ describe Puppet::Parser::Collector, "when initializing" do
         @collector = Puppet::Parser::Collector.new(@scope, "resource::type", 
@equery, @vquery, @form)
         @collector.type.should == "Resource::Type"
     end
+
+    it "should accept an optional resource override" do
+        @collector = Puppet::Parser::Collector.new(@scope, "resource::type", 
@equery, @vquery, @form)
+        override = { :params => "whatever" }
+        @collector.add_override(override)
+        @collector.overrides.should equal(override)
+    end
+
 end
 
 describe Puppet::Parser::Collector, "when collecting specific virtual 
resources" do
@@ -178,6 +186,36 @@ describe Puppet::Parser::Collector, "when collecting 
virtual resources" do
         @collector.evaluate.should be_false
     end
 
+    it "should create a resource with overriden parameters" do
+        one = stub 'one', :type => "Mytype", :virtual? => true, :title => 
"test"
+        param = stub 'param'
+
+        one.expects(:virtual=).with(false)
+        @compiler.expects(:resources).returns([one])
+        @collector.add_override(:params => param )
+        @compiler.stubs(:add_override)
+
+        Puppet::Parser::Resource.expects(:new).with { |h|
+            h[:params] == param
+        }
+
+        @collector.evaluate
+    end
+
+    it "should tell the compiler about the overriden resources" do
+        one = stub 'one', :type => "Mytype", :virtual? => true, :title => 
"test"
+        param = stub 'param'
+
+        one.expects(:virtual=).with(false)
+        @compiler.expects(:resources).returns([one])
+        @collector.add_override(:params => param )
+        Puppet::Parser::Resource.stubs(:new).returns("whatever")
+
+        @compiler.expects(:add_override).with("whatever")
+
+        @collector.evaluate
+    end
+
     it "should not return or mark non-matching resources" do
         @collector.vquery = proc { |res| res.name == :one }
 
diff --git a/test/data/snippets/collection_override.pp 
b/test/data/snippets/collection_override.pp
new file mode 100644
index 0000000..8e252f6
--- /dev/null
+++ b/test/data/snippets/collection_override.pp
@@ -0,0 +1,9 @@
[EMAIL PROTECTED] {
+    "/tmp/testing":
+        content => "whatever"
+}
+
+
+File<| |> {
+    mode => 0600
+}
-- 
1.6.0.2


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to