diff --git a/lib/itamae/resource/base.rb b/lib/itamae/resource/base.rb index d4733de8..8e304dd9 100644 --- a/lib/itamae/resource/base.rb +++ b/lib/itamae/resource/base.rb @@ -230,7 +230,7 @@ def show_differences def process_attributes self.class.defined_attributes.each_pair do |key, details| @attributes[key] ||= @resource_name if details[:default_name] - @attributes[key] ||= details[:default] if details[:default] + @attributes[key] = details[:default] if details.has_key?(:default) && !@attributes.has_key?(key) if details[:required] && !@attributes[key] raise Resource::AttributeMissingError, "'#{key}' attribute is required but it is not set." diff --git a/spec/unit/lib/itamae/resource/base_spec.rb b/spec/unit/lib/itamae/resource/base_spec.rb index f73fad07..d9c4106a 100644 --- a/spec/unit/lib/itamae/resource/base_spec.rb +++ b/spec/unit/lib/itamae/resource/base_spec.rb @@ -21,6 +21,18 @@ class DefineAttributeTestResource < Itamae::Resource::Base end end + describe "falsey" do + subject do + described_class.new(double(:recipe), 'resource name') do + required_attribute :required_value + default_attribute nil + end + end + it "returns the default value" do + expect(subject.attributes[:default_attribute]).to eq(nil) + end + end + describe "required" do subject do described_class.new(double(:recipe), 'resource name') do