diff options
author | Thom May <thom@may.lt> | 2018-02-12 19:20:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-12 19:20:57 +0100 |
commit | a48a1d9ad750e1bd389db60d12a99f76199f22cb (patch) | |
tree | cf3287779b564a5d37a9bd1d40e87f876a29638b /spec | |
parent | a8a1eaac555121759307e25e3382917b8282d080 (diff) | |
parent | 520c01e16658484a07ec3b71fddf2816c27fed44 (diff) | |
download | chef-a48a1d9ad750e1bd389db60d12a99f76199f22cb.tar.gz |
Merge pull request #6818 from chef/tm/better_resource_docs
Implement resource enhancement RFCs
Diffstat (limited to 'spec')
-rw-r--r-- | spec/unit/mixin/params_validate_spec.rb | 13 | ||||
-rw-r--r-- | spec/unit/mixin/properties_spec.rb | 14 | ||||
-rw-r--r-- | spec/unit/property/validation_spec.rb | 9 | ||||
-rw-r--r-- | spec/unit/resource_spec.rb | 31 |
4 files changed, 64 insertions, 3 deletions
diff --git a/spec/unit/mixin/params_validate_spec.rb b/spec/unit/mixin/params_validate_spec.rb index 0cafb925c8..7bc8a27398 100644 --- a/spec/unit/mixin/params_validate_spec.rb +++ b/spec/unit/mixin/params_validate_spec.rb @@ -1,6 +1,6 @@ # # Author:: Adam Jacob (<adam@chef.io>) -# Copyright:: Copyright 2008-2016, Chef Software Inc. +# Copyright:: Copyright 2008-2018, Chef Software Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -342,6 +342,17 @@ describe Chef::Mixin::ParamsValidate do end.to raise_error(Chef::Exceptions::ValidationFailed) end + it "allows a custom validation message" do + expect do + @vo.validate({ :not_blank => "should pass" }, + { :not_blank => { :cannot_be => [ :nil, :empty ], validation_message: "my validation message" } }) + end.not_to raise_error + expect do + @vo.validate({ :not_blank => "" }, + { :not_blank => { :cannot_be => [ :nil, :empty ], validation_message: "my validation message" } }) + end.to raise_error(Chef::Exceptions::ValidationFailed, "my validation message") + end + it "should set and return a value, then return the same value" do value = "meow" expect(@vo.set_or_return(:test, value, {}).object_id).to eq(value.object_id) diff --git a/spec/unit/mixin/properties_spec.rb b/spec/unit/mixin/properties_spec.rb index 1af0bc7abd..ee0c252381 100644 --- a/spec/unit/mixin/properties_spec.rb +++ b/spec/unit/mixin/properties_spec.rb @@ -11,6 +11,7 @@ module ChefMixinPropertiesSpec property :a, "a", default: "a" property :ab, %w{a b}, default: "a" property :ac, %w{a c}, default: "a" + property :d, "d", description: "The d property", introduced: "14.0" end context "and a module B with properties b, ab and bc" do @@ -30,11 +31,20 @@ module ChefMixinPropertiesSpec end it "A.properties has a, ab, and ac with types 'a', ['a', 'b'], and ['b', 'c']" do - expect(A.properties.keys).to eq [ :a, :ab, :ac ] + expect(A.properties.keys).to eq [ :a, :ab, :ac, :d ] expect(A.properties[:a].validation_options[:is]).to eq "a" expect(A.properties[:ab].validation_options[:is]).to eq %w{a b} expect(A.properties[:ac].validation_options[:is]).to eq %w{a c} end + + it "A.properties can get the description of `d`" do + expect(A.properties[:d].description).to eq "The d property" + end + + it "A.properties can get the release that introduced `d`" do + expect(A.properties[:d].introduced).to eq "14.0" + end + it "B.properties has b, ab, and bc with types 'b', nil and ['b', 'c']" do expect(B.properties.keys).to eq [ :b, :ab, :bc ] expect(B.properties[:b].validation_options[:is]).to eq "b" @@ -42,7 +52,7 @@ module ChefMixinPropertiesSpec expect(B.properties[:bc].validation_options[:is]).to eq %w{b c} end it "C.properties has a, b, c, ac and bc with merged types" do - expect(C.properties.keys).to eq [ :a, :ab, :ac, :b, :bc, :c ] + expect(C.properties.keys).to eq [ :a, :ab, :ac, :d, :b, :bc, :c ] expect(C.properties[:a].validation_options[:is]).to eq "a" expect(C.properties[:b].validation_options[:is]).to eq "b" expect(C.properties[:c].validation_options[:is]).to eq "c" diff --git a/spec/unit/property/validation_spec.rb b/spec/unit/property/validation_spec.rb index 13afcdfbc2..882ea3353b 100644 --- a/spec/unit/property/validation_spec.rb +++ b/spec/unit/property/validation_spec.rb @@ -699,4 +699,13 @@ describe "Chef::Resource.property validation" do end end end + + context "custom validation messages" do + with_property ":x, String, validation_message: 'Must be a string, fool'" do + it "raise with the correct error message" do + expect { resource.x 1 }.to raise_error Chef::Exceptions::ValidationFailed, + "Must be a string, fool" + end + end + end end diff --git a/spec/unit/resource_spec.rb b/spec/unit/resource_spec.rb index 934a613eee..fe853922a1 100644 --- a/spec/unit/resource_spec.rb +++ b/spec/unit/resource_spec.rb @@ -387,6 +387,37 @@ describe Chef::Resource do end end + context "Documentation of resources" do + it "can have a description" do + c = Class.new(Chef::Resource) do + description "my description" + end + expect(c.description).to eq "my description" + end + + it "can say when it was introduced" do + c = Class.new(Chef::Resource) do + introduced "14.0" + end + expect(c.introduced).to eq "14.0" + end + + it "can have some examples" do + c = Class.new(Chef::Resource) do + examples <<-EOH +resource "foo" do + foo foo +end + EOH + end + expect(c.examples).to eq <<-EOH +resource "foo" do + foo foo +end + EOH + end + end + describe "self.resource_name" do context "When resource_name is not set" do it "and there are no provides lines, resource_name is nil" do |