diff options
Diffstat (limited to 'spec/unit/resource/template_spec.rb')
-rw-r--r-- | spec/unit/resource/template_spec.rb | 136 |
1 files changed, 74 insertions, 62 deletions
diff --git a/spec/unit/resource/template_spec.rb b/spec/unit/resource/template_spec.rb index 9060f02d29..1ad3f5004f 100644 --- a/spec/unit/resource/template_spec.rb +++ b/spec/unit/resource/template_spec.rb @@ -1,6 +1,6 @@ # # Author:: Adam Jacob (<adam@chef.io>) -# Copyright:: Copyright 2008-2016, Chef Software Inc. +# Copyright:: Copyright (c) Chef Software Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,76 +19,90 @@ require "spec_helper" describe Chef::Resource::Template do + let(:resource) { Chef::Resource::Template.new("fakey_fakerton") } - before(:each) do - @resource = Chef::Resource::Template.new("fakey_fakerton") + describe "initialize" do + it "is a subclass of Chef::Resource::File" do + expect(resource).to be_a_kind_of(Chef::Resource::File) + end end - describe "initialize" do - it "should create a new Chef::Resource::Template" do - expect(@resource).to be_a_kind_of(Chef::Resource) - expect(@resource).to be_a_kind_of(Chef::Resource::File) - expect(@resource).to be_a_kind_of(Chef::Resource::Template) + describe "name" do + it "the path property is the name_property" do + expect(resource.path).to eql("fakey_fakerton") + end + end + + describe "Actions" do + it "sets the default action as :create" do + expect(resource.action).to eql([:create]) + end + + it "supports :create, :create_if_missing, :delete, :touch actions" do + expect { resource.action :create }.not_to raise_error + expect { resource.action :create_if_missing }.not_to raise_error + expect { resource.action :delete }.not_to raise_error + expect { resource.action :touch }.not_to raise_error end end describe "source" do - it "should accept a string for the template source" do - @resource.source "something" - expect(@resource.source).to eql("something") + it "accepts a string for the template source" do + resource.source "something" + expect(resource.source).to eql("something") end - it "should have a default based on the param name with .erb appended" do - expect(@resource.source).to eql("fakey_fakerton.erb") + it "has a default based on the param name with .erb appended" do + expect(resource.source).to eql("fakey_fakerton.erb") end - it "should use only the basename of the file as the default" do + it "uses only the basename of the file as the default" do r = Chef::Resource::Template.new("/tmp/obit/fakey_fakerton") expect(r.source).to eql("fakey_fakerton.erb") end end describe "variables" do - it "should accept a hash for the variable list" do - @resource.variables({ :reluctance => :awkward }) - expect(@resource.variables).to eq({ :reluctance => :awkward }) + it "accepts a hash for the variable list" do + resource.variables({ reluctance: :awkward }) + expect(resource.variables).to eq({ reluctance: :awkward }) end end describe "cookbook" do - it "should accept a string for the cookbook name" do - @resource.cookbook("foo") - expect(@resource.cookbook).to eq("foo") + it "accepts a string for the cookbook name" do + resource.cookbook("foo") + expect(resource.cookbook).to eq("foo") end - it "should default to nil" do - expect(@resource.cookbook).to eq(nil) + it "defaults to nil" do + expect(resource.cookbook).to eq(nil) end end describe "local" do - it "should accept a boolean for whether a template is local or remote" do - @resource.local(true) - expect(@resource.local).to eq(true) + it "accepts a boolean for whether a template is local or remote" do + resource.local(true) + expect(resource.local).to eq(true) end - it "should default to false" do - expect(@resource.local).to eq(false) + it "defaults to false" do + expect(resource.local).to eq(false) end end describe "when it has a path, owner, group, mode, and checksum" do before do - @resource.path("/tmp/foo.txt") - @resource.owner("root") - @resource.group("wheel") - @resource.mode("0644") - @resource.checksum("1" * 64) + resource.path("/tmp/foo.txt") + resource.owner("root") + resource.group("wheel") + resource.mode("0644") + resource.checksum("1" * 64) end context "on unix", :unix_only do it "describes its state" do - state = @resource.state + state = resource.state_for_resource_reporter expect(state[:owner]).to eq("root") expect(state[:group]).to eq("wheel") expect(state[:mode]).to eq("0644") @@ -97,12 +111,12 @@ describe Chef::Resource::Template do end context "on windows", :windows_only do - # according to Chef::Resource::File, windows state attributes are rights + deny_rights + # according to Chef::Resource::File, windows state properties are rights + deny_rights skip "it describes its state" end it "returns the file path as its identity" do - expect(@resource.identity).to eq("/tmp/foo.txt") + expect(resource.identity).to eq("/tmp/foo.txt") end end @@ -115,16 +129,16 @@ describe Chef::Resource::Template do end it "collects helper method bodies as blocks" do - @resource.helper(:example_1) { "example_1" } - @resource.helper(:example_2) { "example_2" } - expect(@resource.inline_helper_blocks[:example_1].call).to eq("example_1") - expect(@resource.inline_helper_blocks[:example_2].call).to eq("example_2") + resource.helper(:example_1) { "example_1" } + resource.helper(:example_2) { "example_2" } + expect(resource.inline_helper_blocks[:example_1].call).to eq("example_1") + expect(resource.inline_helper_blocks[:example_2].call).to eq("example_2") end it "compiles helper methods into a module" do - @resource.helper(:example_1) { "example_1" } - @resource.helper(:example_2) { "example_2" } - modules = @resource.helper_modules + resource.helper(:example_1) { "example_1" } + resource.helper(:example_2) { "example_2" } + modules = resource.helper_modules expect(modules.size).to eq(1) o = Object.new modules.each { |m| o.extend(m) } @@ -133,38 +147,38 @@ describe Chef::Resource::Template do end it "compiles helper methods with arguments into a module" do - @resource.helper(:shout) { |quiet| quiet.upcase } - modules = @resource.helper_modules + resource.helper(:shout, &:upcase) + modules = resource.helper_modules o = Object.new modules.each { |m| o.extend(m) } expect(o.shout("shout")).to eq("SHOUT") end it "raises an error when attempting to define a helper method without a method body" do - expect { @resource.helper(:example) }.to raise_error(Chef::Exceptions::ValidationFailed) + expect { resource.helper(:example) }.to raise_error(Chef::Exceptions::ValidationFailed) end it "raises an error when attempting to define a helper method with a non-Symbod method name" do - expect { @resource.helper("example") { "fail" } }.to raise_error(Chef::Exceptions::ValidationFailed) + expect { resource.helper("example") { "fail" } }.to raise_error(Chef::Exceptions::ValidationFailed) end it "collects helper module bodies as blocks" do - @resource.helpers do + resource.helpers do def example_1 "example_1" end end - module_body = @resource.inline_helper_modules.first + module_body = resource.inline_helper_modules.first expect(module_body).to be_a(Proc) end it "compiles helper module bodies into modules" do - @resource.helpers do + resource.helpers do def example_1 "example_1" end end - modules = @resource.helper_modules + modules = resource.helper_modules expect(modules.size).to eq(1) o = Object.new modules.each { |m| o.extend(m) } @@ -172,39 +186,37 @@ describe Chef::Resource::Template do end it "raises an error when no block or module name is given for helpers definition" do - expect { @resource.helpers() }.to raise_error(Chef::Exceptions::ValidationFailed) + expect { resource.helpers }.to raise_error(Chef::Exceptions::ValidationFailed) end it "raises an error when a non-module is given for helpers definition" do - expect { @resource.helpers("NotAModule") }.to raise_error(Chef::Exceptions::ValidationFailed) + expect { resource.helpers("NotAModule") }.to raise_error(Chef::Exceptions::ValidationFailed) end it "raises an error when a module name and block are both given for helpers definition" do - expect { @resource.helpers(ExampleHelpers) { module_code } }.to raise_error(Chef::Exceptions::ValidationFailed) + expect { resource.helpers(ExampleHelpers) { module_code } }.to raise_error(Chef::Exceptions::ValidationFailed) end it "collects helper modules" do - @resource.helpers(ExampleHelpers) - expect(@resource.helper_modules).to include(ExampleHelpers) + resource.helpers(ExampleHelpers) + expect(resource.helper_modules).to include(ExampleHelpers) end it "combines all helpers into a set of compiled modules" do - @resource.helpers(ExampleHelpers) - @resource.helpers do + resource.helpers(ExampleHelpers) + resource.helpers do def inline_module "inline_module" end end - @resource.helper(:inline_method) { "inline_method" } - expect(@resource.helper_modules.size).to eq(3) + resource.helper(:inline_method) { "inline_method" } + expect(resource.helper_modules.size).to eq(3) o = Object.new - @resource.helper_modules.each { |m| o.extend(m) } + resource.helper_modules.each { |m| o.extend(m) } expect(o.static_example).to eq("static_example") expect(o.inline_module).to eq("inline_module") expect(o.inline_method).to eq("inline_method") end - end - end |