summaryrefslogtreecommitdiff
path: root/spec/unit
diff options
context:
space:
mode:
authorThom May <thom@may.lt>2018-03-28 10:23:59 +0700
committerGitHub <noreply@github.com>2018-03-28 10:23:59 +0700
commit1775822934b6f42791cf46454027a3a17f14e726 (patch)
tree0581980aa9e0087de1ed1eeacce51deacf69edaf /spec/unit
parent7a6bf1531f91d121a21493924905cde37592a48b (diff)
parent2dc3fde7cde3779511108cff212f8f4bf32a33ce (diff)
downloadchef-1775822934b6f42791cf46454027a3a17f14e726.tar.gz
Merge pull request #7037 from chef/lcg/nil-sets-default
Setting nil to properties with implicit nil sets default value
Diffstat (limited to 'spec/unit')
-rw-r--r--spec/unit/property/validation_spec.rb55
1 files changed, 51 insertions, 4 deletions
diff --git a/spec/unit/property/validation_spec.rb b/spec/unit/property/validation_spec.rb
index 882ea3353b..b05d8c4e17 100644
--- a/spec/unit/property/validation_spec.rb
+++ b/spec/unit/property/validation_spec.rb
@@ -617,8 +617,9 @@ describe "Chef::Resource.property validation" do
expect(resource.x 1).to eq 1
expect(resource.x).to eq 1
end
- it "value nil is invalid" do
- expect { resource.x nil }.to raise_error Chef::Exceptions::ValidationFailed
+ it "value nil sets to the default" do
+ # this mildly complicated because the default of a name property is a lazy evaluator to the actual resource.name
+ expect(resource.x nil).to be_a(Chef::DelayedEvaluator)
end
end
@@ -630,8 +631,54 @@ describe "Chef::Resource.property validation" do
expect(resource.x 1).to eq 1
expect(resource.x).to eq 1
end
- it "value nil is invalid" do
- expect { resource.x nil }.to raise_error Chef::Exceptions::ValidationFailed
+ it "value nil sets the default" do
+ expect(resource.x nil).to eq 10
+ expect(resource.x).to eq 10
+ end
+ end
+ end
+
+ context "nil setting default" do
+ with_property ":x, String" do
+ it "if x is not specified, the default is returned" do
+ expect(resource.x).to eq nil
+ end
+ it "value '2' is valid" do
+ expect(resource.x "2").to eq "2"
+ expect(resource.x).to eq "2"
+ end
+ it "value nil sets the default" do
+ resource.x "2"
+ expect(resource.x nil).to eq nil
+ expect(resource.x).to eq nil
+ end
+ end
+ with_property ":x, String, default: '1'" do
+ it "if x is not specified, the default is returned" do
+ expect(resource.x).to eq "1"
+ end
+ it "value '2' is valid" do
+ expect(resource.x "2").to eq "2"
+ expect(resource.x).to eq "2"
+ end
+ it "value nil sets the default" do
+ resource.x "2"
+ expect(resource.x nil).to eq "1"
+ expect(resource.x).to eq "1"
+ end
+ end
+ with_property ":x, [ String, nil ] , default: '1'" do
+ it "if x is not specified, the default is returned" do
+ expect(resource.x).to eq "1"
+ end
+ it "value '2' is valid" do
+ expect(resource.x "2").to eq "2"
+ expect(resource.x).to eq "2"
+ end
+ it "value nil sets to nil" do
+ resource.x "2"
+ expect(resource.x nil).to eq nil
+ expect(resource.x).to eq nil
end
end
end