summaryrefslogtreecommitdiff
path: root/spec/unit
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2013-11-14 19:20:09 -0800
committerLamont Granquist <lamont@scriptkiddie.org>2013-11-14 19:20:09 -0800
commitdbd925b357b036447b47cf5f369792f81d69e76d (patch)
tree31a50b87878057b04b3e75bc1615cd67b228d74c /spec/unit
parentecbc917ac5496f3138b798332ea66f477c33f8ba (diff)
downloadchef-dbd925b357b036447b47cf5f369792f81d69e76d.tar.gz
CHEF-4777: add include_recipes to recipes node attr
Diffstat (limited to 'spec/unit')
-rw-r--r--spec/unit/cookbook_spec.rb1
-rw-r--r--spec/unit/node_spec.rb16
-rw-r--r--spec/unit/recipe_spec.rb4
-rw-r--r--spec/unit/run_context_spec.rb3
4 files changed, 24 insertions, 0 deletions
diff --git a/spec/unit/cookbook_spec.rb b/spec/unit/cookbook_spec.rb
index c28a5c7a2a..a9122bd150 100644
--- a/spec/unit/cookbook_spec.rb
+++ b/spec/unit/cookbook_spec.rb
@@ -70,6 +70,7 @@ describe Chef::CookbookVersion do
it "should allow you to include a fully-qualified recipe using the DSL" do
# DSL method include_recipe allows multiple arguments, so extract the first
+ @node.should_receive(:loaded_recipe).with("openldap::gigantor")
recipe = @run_context.include_recipe("openldap::gigantor").first
recipe.recipe_name.should == "gigantor"
diff --git a/spec/unit/node_spec.rb b/spec/unit/node_spec.rb
index bb567dbdf7..80d694d036 100644
--- a/spec/unit/node_spec.rb
+++ b/spec/unit/node_spec.rb
@@ -461,6 +461,22 @@ describe Chef::Node do
end
end
+ describe "loaded_recipe" do
+ it "should not add a recipe that is already in the recipes list" do
+ node.automatic_attrs[:recipes] = [ "nginx::module" ]
+ node.loaded_recipe("nginx::module")
+ expect(node.automatic_attrs[:recipes].length).to eq(1)
+ end
+
+ it "should add a recipe that is not already in the recipes list" do
+ node.automatic_attrs[:recipes] = [ "nginx::other_module" ]
+ node.loaded_recipe("nginx::module")
+ expect(node.automatic_attrs[:recipes].length).to eq(2)
+ expect(node.recipe?("nginx::module")).to be_true
+ expect(node.recipe?("nginx::other_module")).to be_true
+ end
+ end
+
describe "when querying for recipes in the run list" do
context "when a recipe is in the top level run list" do
before do
diff --git a/spec/unit/recipe_spec.rb b/spec/unit/recipe_spec.rb
index 4615bcb4d4..16f1743c9c 100644
--- a/spec/unit/recipe_spec.rb
+++ b/spec/unit/recipe_spec.rb
@@ -193,6 +193,7 @@ describe Chef::Recipe do
describe "include_recipe" do
it "should evaluate another recipe with include_recipe" do
+ @node.should_receive(:loaded_recipe).with("openldap::gigantor")
@run_context.include_recipe "openldap::gigantor"
res = @run_context.resource_collection.resources(:cat => "blanket")
res.name.should eql("blanket")
@@ -200,6 +201,7 @@ describe Chef::Recipe do
end
it "should load the default recipe for a cookbook if include_recipe is called without a ::" do
+ @node.should_receive(:loaded_recipe).with("openldap")
@run_context.include_recipe "openldap"
res = @run_context.resource_collection.resources(:cat => "blanket")
res.name.should eql("blanket")
@@ -207,11 +209,13 @@ describe Chef::Recipe do
end
it "should store that it has seen a recipe in the run_context" do
+ @node.should_receive(:loaded_recipe).with("openldap")
@run_context.include_recipe "openldap"
@run_context.loaded_recipe?("openldap").should be_true
end
it "should not include the same recipe twice" do
+ @node.should_receive(:loaded_recipe).with("openldap").exactly(:once)
@cookbook_collection[:openldap].should_receive(:load_recipe).with("default", @run_context)
@recipe.include_recipe "openldap"
@cookbook_collection[:openldap].should_not_receive(:load_recipe).with("default", @run_context)
diff --git a/spec/unit/run_context_spec.rb b/spec/unit/run_context_spec.rb
index 8063dffc77..aff1f85ead 100644
--- a/spec/unit/run_context_spec.rb
+++ b/spec/unit/run_context_spec.rb
@@ -45,6 +45,9 @@ describe Chef::RunContext do
describe "loading cookbooks for a run list" do
before do
+ @node.should_receive(:loaded_recipe).with("test")
+ @node.should_receive(:loaded_recipe).with("test::one")
+ @node.should_receive(:loaded_recipe).with("test::two")
@run_context.load(@node.run_list.expand('_default'))
end