poise 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.kitchen.travis.yml +9 -0
- data/.kitchen.yml +18 -0
- data/.rubocop.yml +2 -0
- data/.travis.yml +25 -0
- data/.yardopts +5 -0
- data/Berksfile +26 -0
- data/Berksfile.lock +10 -0
- data/CHANGELOG.md +58 -0
- data/Gemfile +32 -0
- data/LICENSE +202 -0
- data/README.md +198 -0
- data/Rakefile +17 -0
- data/lib/poise.rb +71 -0
- data/lib/poise/error.rb +24 -0
- data/lib/poise/helpers.rb +33 -0
- data/lib/poise/helpers/chefspec_matchers.rb +92 -0
- data/lib/poise/helpers/defined_in.rb +111 -0
- data/lib/poise/helpers/fused.rb +127 -0
- data/lib/poise/helpers/include_recipe.rb +62 -0
- data/lib/poise/helpers/inversion.rb +374 -0
- data/lib/poise/helpers/inversion/options_provider.rb +41 -0
- data/lib/poise/helpers/inversion/options_resource.rb +101 -0
- data/lib/poise/helpers/lazy_default.rb +62 -0
- data/lib/poise/helpers/lwrp_polyfill.rb +96 -0
- data/lib/poise/helpers/notifying_block.rb +78 -0
- data/lib/poise/helpers/option_collector.rb +117 -0
- data/lib/poise/helpers/resource_name.rb +99 -0
- data/lib/poise/helpers/subcontext_block.rb +58 -0
- data/lib/poise/helpers/subresources.rb +29 -0
- data/lib/poise/helpers/subresources/child.rb +217 -0
- data/lib/poise/helpers/subresources/container.rb +165 -0
- data/lib/poise/helpers/subresources/default_containers.rb +73 -0
- data/lib/poise/helpers/template_content.rb +165 -0
- data/lib/poise/provider.rb +55 -0
- data/lib/poise/resource.rb +75 -0
- data/lib/poise/subcontext.rb +27 -0
- data/lib/poise/subcontext/resource_collection.rb +56 -0
- data/lib/poise/subcontext/runner.rb +50 -0
- data/lib/poise/utils.rb +60 -0
- data/lib/poise/utils/resource_provider_mixin.rb +53 -0
- data/lib/poise/version.rb +20 -0
- data/poise.gemspec +38 -0
- data/test/cookbooks/poise_test/attributes/default.rb +17 -0
- data/test/cookbooks/poise_test/libraries/app.rb +43 -0
- data/test/cookbooks/poise_test/libraries/app_config.rb +46 -0
- data/test/cookbooks/poise_test/libraries/inversion.rb +67 -0
- data/test/cookbooks/poise_test/metadata.rb +18 -0
- data/test/cookbooks/poise_test/recipes/default.rb +25 -0
- data/test/cookbooks/poise_test/recipes/inversion.rb +42 -0
- data/test/gemfiles/chef-12.0.gemfile +18 -0
- data/test/gemfiles/chef-12.1.gemfile +18 -0
- data/test/gemfiles/chef-12.2.gemfile +18 -0
- data/test/gemfiles/chef-12.gemfile +18 -0
- data/test/gemfiles/master.gemfile +20 -0
- data/test/integration/default/serverspec/default_spec.rb +35 -0
- data/test/integration/default/serverspec/inversion_spec.rb +43 -0
- data/test/spec/helpers/chefspec_matchers_spec.rb +45 -0
- data/test/spec/helpers/defined_in_spec.rb +62 -0
- data/test/spec/helpers/fused_spec.rb +92 -0
- data/test/spec/helpers/include_recipe_spec.rb +34 -0
- data/test/spec/helpers/inversion/options_resource_spec.rb +212 -0
- data/test/spec/helpers/inversion_spec.rb +273 -0
- data/test/spec/helpers/lazy_default_spec.rb +74 -0
- data/test/spec/helpers/lwrp_polyfill_spec.rb +128 -0
- data/test/spec/helpers/notifying_block_spec.rb +87 -0
- data/test/spec/helpers/option_collector_spec.rb +82 -0
- data/test/spec/helpers/resource_name_spec.rb +39 -0
- data/test/spec/helpers/subcontext_block_spec.rb +94 -0
- data/test/spec/helpers/subresources/child_spec.rb +339 -0
- data/test/spec/helpers/subresources/container_spec.rb +175 -0
- data/test/spec/helpers/template_context_spec.rb +147 -0
- data/test/spec/poise_spec.rb +185 -0
- data/test/spec/provider_spec.rb +28 -0
- data/test/spec/resource_spec.rb +85 -0
- data/test/spec/spec_helper.rb +18 -0
- data/test/spec/utils/resource_provider_mixin_spec.rb +52 -0
- data/test/spec/utils_spec.rb +110 -0
- metadata +190 -0
@@ -0,0 +1,147 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'spec_helper'
|
18
|
+
|
19
|
+
describe Poise::Helpers::TemplateContent do
|
20
|
+
resource(:poise_test) do
|
21
|
+
include described_class
|
22
|
+
attribute('', template: true)
|
23
|
+
end
|
24
|
+
provider(:poise_test)
|
25
|
+
recipe do
|
26
|
+
poise_test 'test'
|
27
|
+
end
|
28
|
+
|
29
|
+
# Stub out template rendering
|
30
|
+
let(:required_template_options) { Hash.new }
|
31
|
+
before do
|
32
|
+
@fake_finder = double('fake TemplateFinder')
|
33
|
+
allow(Chef::Provider::TemplateFinder).to receive(:new).and_return(@fake_finder)
|
34
|
+
allow(@fake_finder).to receive(:find)
|
35
|
+
@fake_ctx = double('fake TemplateContext')
|
36
|
+
if required_template_options.empty?
|
37
|
+
allow(Chef::Mixin::Template::TemplateContext).to receive(:new).and_return(@fake_ctx)
|
38
|
+
else
|
39
|
+
expect(Chef::Mixin::Template::TemplateContext).to receive(:new).with(hash_including(required_template_options)).and_return(@fake_ctx)
|
40
|
+
end
|
41
|
+
allow(@fake_ctx).to receive(:[]=)
|
42
|
+
allow(@fake_ctx).to receive(:render_template).and_return('rendered template')
|
43
|
+
# Also fake the cookbook lookup since that won't work in our test setup
|
44
|
+
allow(Poise::Utils).to receive(:find_cookbook_name).and_return('poise')
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'with no input' do
|
48
|
+
recipe do
|
49
|
+
poise_test 'test'
|
50
|
+
end
|
51
|
+
|
52
|
+
it { is_expected.to run_poise_test('test').with(content: nil) }
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'with a simple template' do
|
56
|
+
recipe do
|
57
|
+
poise_test 'test' do
|
58
|
+
source 'test.erb'
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
it { is_expected.to run_poise_test('test').with(source: 'test.erb', content: 'rendered template') }
|
63
|
+
|
64
|
+
it 'only runs the template render once' do
|
65
|
+
expect(@fake_ctx).to receive(:render_template).and_return('rendered template').once
|
66
|
+
subject.find_resource('poise_test', 'test').content
|
67
|
+
subject.find_resource('poise_test', 'test').content
|
68
|
+
end
|
69
|
+
end # /context with a template
|
70
|
+
|
71
|
+
context 'with some template variables' do
|
72
|
+
recipe do
|
73
|
+
poise_test 'test' do
|
74
|
+
source 'test.erb'
|
75
|
+
options do
|
76
|
+
one '1'
|
77
|
+
two 2
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
let(:required_template_options) { {'one' => '1', 'two' => 2} }
|
82
|
+
|
83
|
+
it { is_expected.to run_poise_test('test').with(source: 'test.erb', options: required_template_options, content: 'rendered template') }
|
84
|
+
end # /context with some template variables
|
85
|
+
|
86
|
+
context 'with explicit content' do
|
87
|
+
recipe do
|
88
|
+
poise_test 'test' do
|
89
|
+
content 'something explicit'
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
it { is_expected.to run_poise_test('test').with(content: 'something explicit') }
|
94
|
+
end # /context with explicit content
|
95
|
+
|
96
|
+
context 'with a default template' do
|
97
|
+
resource(:poise_test) do
|
98
|
+
include described_class
|
99
|
+
attribute('', template: true, default_source: 'test.erb')
|
100
|
+
end
|
101
|
+
|
102
|
+
it { is_expected.to run_poise_test('test').with(content: 'rendered template') }
|
103
|
+
end # /context with a default template
|
104
|
+
|
105
|
+
context 'with default content' do
|
106
|
+
resource(:poise_test) do
|
107
|
+
include described_class
|
108
|
+
attribute('', template: true, default: 'default content')
|
109
|
+
end
|
110
|
+
|
111
|
+
it { is_expected.to run_poise_test('test').with(content: 'default content') }
|
112
|
+
end # /context with default content
|
113
|
+
|
114
|
+
context 'with a name prefix' do
|
115
|
+
resource(:poise_test) do
|
116
|
+
include described_class
|
117
|
+
attribute(:config, template: true)
|
118
|
+
end
|
119
|
+
recipe do
|
120
|
+
poise_test 'test' do
|
121
|
+
config_source 'test.erb'
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
it { is_expected.to run_poise_test('test').with(config_content: 'rendered template') }
|
126
|
+
end # /context with a name prefix
|
127
|
+
|
128
|
+
context 'with required content' do
|
129
|
+
resource(:poise_test) do
|
130
|
+
include described_class
|
131
|
+
attribute(:config, template: true, required: true)
|
132
|
+
end
|
133
|
+
|
134
|
+
it { expect{chef_run}.to raise_error(Chef::Exceptions::ValidationFailed) }
|
135
|
+
end # /context with required content
|
136
|
+
|
137
|
+
context 'with both source and content' do
|
138
|
+
recipe do
|
139
|
+
poise_test 'test' do
|
140
|
+
source 'test.erb'
|
141
|
+
content 'content'
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
it { expect{chef_run}.to raise_error(Chef::Exceptions::ValidationFailed) }
|
146
|
+
end # /context with both source and content
|
147
|
+
end
|
@@ -0,0 +1,185 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2013-2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'spec_helper'
|
18
|
+
|
19
|
+
describe Poise do
|
20
|
+
context 'with a Resource' do
|
21
|
+
resource(:poise_test) do
|
22
|
+
include Poise
|
23
|
+
end
|
24
|
+
subject { resource(:poise_test) }
|
25
|
+
|
26
|
+
it { is_expected.to include Poise::Resource }
|
27
|
+
it { is_expected.to include Poise::Helpers::LazyDefault }
|
28
|
+
it { is_expected.to include Poise::Helpers::LWRPPolyfill }
|
29
|
+
it { is_expected.to include Poise::Helpers::LWRPPolyfill::Resource }
|
30
|
+
it { is_expected.to include Poise::Helpers::OptionCollector }
|
31
|
+
it { is_expected.to include Poise::Helpers::ResourceName }
|
32
|
+
it { is_expected.to include Poise::Helpers::TemplateContent }
|
33
|
+
it { is_expected.to include Poise::Helpers::ChefspecMatchers }
|
34
|
+
|
35
|
+
context 'as a function call' do
|
36
|
+
context 'with no arguments' do
|
37
|
+
resource(:poise_test) do
|
38
|
+
include Poise()
|
39
|
+
end
|
40
|
+
|
41
|
+
it { is_expected.to include Poise }
|
42
|
+
it { is_expected.to include Poise::Resource }
|
43
|
+
end # /context with no arguments
|
44
|
+
|
45
|
+
context 'with a parent class' do
|
46
|
+
resource(:poise_test) do
|
47
|
+
include Poise(parent: Chef::Resource::RubyBlock)
|
48
|
+
end
|
49
|
+
|
50
|
+
it { is_expected.to include Poise }
|
51
|
+
it { is_expected.to include Poise::Resource }
|
52
|
+
it { is_expected.to include Poise::Helpers::Subresources::Child }
|
53
|
+
its(:parent_type) { is_expected.to eq Chef::Resource::RubyBlock }
|
54
|
+
its(:parent_optional) { is_expected.to be_falsey }
|
55
|
+
end # /context with a parent class
|
56
|
+
|
57
|
+
context 'with a parent class shortcut' do
|
58
|
+
resource(:poise_test) do
|
59
|
+
include Poise(Chef::Resource::RubyBlock)
|
60
|
+
end
|
61
|
+
|
62
|
+
it { is_expected.to include Poise }
|
63
|
+
it { is_expected.to include Poise::Resource }
|
64
|
+
it { is_expected.to include Poise::Helpers::Subresources::Child }
|
65
|
+
its(:parent_type) { is_expected.to eq Chef::Resource::RubyBlock }
|
66
|
+
its(:parent_optional) { is_expected.to be_falsey }
|
67
|
+
end # /context with a parent class shortcut
|
68
|
+
|
69
|
+
context 'with an optional parent' do
|
70
|
+
resource(:poise_test) do
|
71
|
+
include Poise(parent: Chef::Resource::RubyBlock, parent_optional: true)
|
72
|
+
end
|
73
|
+
|
74
|
+
it { is_expected.to include Poise }
|
75
|
+
it { is_expected.to include Poise::Resource }
|
76
|
+
it { is_expected.to include Poise::Helpers::Subresources::Child }
|
77
|
+
its(:parent_type) { is_expected.to eq Chef::Resource::RubyBlock }
|
78
|
+
its(:parent_optional) { is_expected.to be_truthy }
|
79
|
+
end # /context with an optional parent
|
80
|
+
|
81
|
+
context 'with a container' do
|
82
|
+
resource(:poise_test) do
|
83
|
+
include Poise(container: true)
|
84
|
+
end
|
85
|
+
|
86
|
+
it { is_expected.to include Poise }
|
87
|
+
it { is_expected.to include Poise::Resource }
|
88
|
+
it { is_expected.to include Poise::Helpers::Subresources::Container }
|
89
|
+
end # /context with a container
|
90
|
+
|
91
|
+
context 'with a container namespace' do
|
92
|
+
resource(:poise_test) do
|
93
|
+
include Poise(container: true, container_namespace: true)
|
94
|
+
end
|
95
|
+
|
96
|
+
it { is_expected.to include Poise }
|
97
|
+
it { is_expected.to include Poise::Resource }
|
98
|
+
it { is_expected.to include Poise::Helpers::Subresources::Container }
|
99
|
+
its(:container_namespace) { is_expected.to eq true }
|
100
|
+
end # /context with a container namespace
|
101
|
+
|
102
|
+
context 'with a container namespace as a string' do
|
103
|
+
resource(:poise_test) do
|
104
|
+
include Poise(container: true, container_namespace: 'example')
|
105
|
+
end
|
106
|
+
|
107
|
+
it { is_expected.to include Poise }
|
108
|
+
it { is_expected.to include Poise::Resource }
|
109
|
+
it { is_expected.to include Poise::Helpers::Subresources::Container }
|
110
|
+
its(:container_namespace) { is_expected.to eq 'example' }
|
111
|
+
end # /context with a container namespaceas a string
|
112
|
+
|
113
|
+
context 'with a container namespace as a proc' do
|
114
|
+
resource(:poise_test) do
|
115
|
+
include Poise(container: true, container_namespace: Proc.new { name })
|
116
|
+
end
|
117
|
+
|
118
|
+
it { is_expected.to include Poise }
|
119
|
+
it { is_expected.to include Poise::Resource }
|
120
|
+
it { is_expected.to include Poise::Helpers::Subresources::Container }
|
121
|
+
its(:container_namespace) { is_expected.to be_a Proc }
|
122
|
+
end # /context with a container namespaceas a proc
|
123
|
+
|
124
|
+
context 'with a no container namespace' do
|
125
|
+
resource(:poise_test) do
|
126
|
+
include Poise(container: true, container_namespace: false)
|
127
|
+
end
|
128
|
+
|
129
|
+
it { is_expected.to include Poise }
|
130
|
+
it { is_expected.to include Poise::Resource }
|
131
|
+
it { is_expected.to include Poise::Helpers::Subresources::Container }
|
132
|
+
its(:container_namespace) { is_expected.to eq false }
|
133
|
+
end # /context with no container namespace
|
134
|
+
|
135
|
+
context 'with both a parent and a container' do
|
136
|
+
resource(:poise_test) do
|
137
|
+
include Poise(parent: Chef::Resource::RubyBlock, container: true)
|
138
|
+
end
|
139
|
+
|
140
|
+
it { is_expected.to include Poise }
|
141
|
+
it { is_expected.to include Poise::Resource }
|
142
|
+
it { is_expected.to include Poise::Helpers::Subresources::Child }
|
143
|
+
it { is_expected.to include Poise::Helpers::Subresources::Container }
|
144
|
+
its(:parent_type) { is_expected.to eq Chef::Resource::RubyBlock }
|
145
|
+
its(:parent_optional) { is_expected.to be_falsey }
|
146
|
+
end # /context with both a parent and a container
|
147
|
+
|
148
|
+
context 'with fused' do
|
149
|
+
resource(:poise_test) do
|
150
|
+
include Poise(fused: true)
|
151
|
+
end
|
152
|
+
|
153
|
+
it { is_expected.to include Poise }
|
154
|
+
it { is_expected.to include Poise::Resource }
|
155
|
+
it { is_expected.to include Poise::Helpers::Fused }
|
156
|
+
end # /context with fused
|
157
|
+
end # /context as a function call
|
158
|
+
end # /context for a Resource
|
159
|
+
|
160
|
+
context 'with a Provider' do
|
161
|
+
provider(:poise_test) do
|
162
|
+
include Poise
|
163
|
+
end
|
164
|
+
subject { provider(:poise_test) }
|
165
|
+
|
166
|
+
it { is_expected.to include Poise::Provider }
|
167
|
+
it { is_expected.to include Poise::Helpers::IncludeRecipe }
|
168
|
+
it { is_expected.to include Poise::Helpers::LWRPPolyfill }
|
169
|
+
it { is_expected.to include Poise::Helpers::LWRPPolyfill::Provider }
|
170
|
+
it { is_expected.to include Poise::Helpers::NotifyingBlock }
|
171
|
+
|
172
|
+
context 'as a function call' do
|
173
|
+
provider(:poise_test) do
|
174
|
+
include Poise()
|
175
|
+
end
|
176
|
+
|
177
|
+
it { is_expected.to include Poise }
|
178
|
+
it { is_expected.to include Poise::Provider }
|
179
|
+
end # /context as a function call
|
180
|
+
end # /context for a Provider
|
181
|
+
|
182
|
+
it 'has a fake name when used a function' do
|
183
|
+
expect(Poise().name).to eq 'Poise'
|
184
|
+
end # /it has a fake name when used a function
|
185
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'spec_helper'
|
18
|
+
|
19
|
+
describe Poise::Provider do
|
20
|
+
provider(:poise_test) do
|
21
|
+
include described_class
|
22
|
+
end
|
23
|
+
subject { provider(:poise_test) }
|
24
|
+
|
25
|
+
it { is_expected.to include(Poise::Helpers::IncludeRecipe) }
|
26
|
+
it { is_expected.to include(Poise::Helpers::LWRPPolyfill) }
|
27
|
+
it { is_expected.to include(Poise::Helpers::NotifyingBlock) }
|
28
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'spec_helper'
|
18
|
+
|
19
|
+
describe Poise::Resource do
|
20
|
+
resource(:poise_test) do
|
21
|
+
include described_class
|
22
|
+
end
|
23
|
+
subject { resource(:poise_test) }
|
24
|
+
|
25
|
+
it { is_expected.to include Poise::Helpers::LazyDefault }
|
26
|
+
it { is_expected.to include Poise::Helpers::LWRPPolyfill }
|
27
|
+
it { is_expected.to include Poise::Helpers::OptionCollector }
|
28
|
+
it { is_expected.to include Poise::Helpers::ResourceName }
|
29
|
+
it { is_expected.to include Poise::Helpers::TemplateContent }
|
30
|
+
it { is_expected.to include Poise::Helpers::ChefspecMatchers }
|
31
|
+
|
32
|
+
describe '#poise_subresource_container' do
|
33
|
+
resource(:poise_test) do
|
34
|
+
include described_class
|
35
|
+
poise_subresource_container
|
36
|
+
end
|
37
|
+
|
38
|
+
it { is_expected.to include Poise::Helpers::Subresources::Container }
|
39
|
+
end # /describe #poise_subresource_container
|
40
|
+
|
41
|
+
describe '#poise_subresource' do
|
42
|
+
context 'with no arguments' do
|
43
|
+
resource(:poise_test) do
|
44
|
+
include described_class
|
45
|
+
poise_subresource
|
46
|
+
end
|
47
|
+
|
48
|
+
it { is_expected.to include Poise::Helpers::Subresources::Child }
|
49
|
+
its(:parent_type) { is_expected.to eq Chef::Resource }
|
50
|
+
its(:parent_optional) { is_expected.to be_falsey }
|
51
|
+
end # /context with no arguments
|
52
|
+
|
53
|
+
context 'with a parent class' do
|
54
|
+
resource(:poise_test) do
|
55
|
+
include described_class
|
56
|
+
poise_subresource(Chef::Resource::RubyBlock)
|
57
|
+
end
|
58
|
+
|
59
|
+
it { is_expected.to include Poise::Helpers::Subresources::Child }
|
60
|
+
its(:parent_type) { is_expected.to eq Chef::Resource::RubyBlock }
|
61
|
+
its(:parent_optional) { is_expected.to be_falsey }
|
62
|
+
end # /context with a parent class
|
63
|
+
|
64
|
+
context 'with an optional parent' do
|
65
|
+
resource(:poise_test) do
|
66
|
+
include described_class
|
67
|
+
poise_subresource(Chef::Resource::RubyBlock, true)
|
68
|
+
end
|
69
|
+
|
70
|
+
it { is_expected.to include Poise::Helpers::Subresources::Child }
|
71
|
+
its(:parent_type) { is_expected.to eq Chef::Resource::RubyBlock }
|
72
|
+
its(:parent_optional) { is_expected.to be_truthy }
|
73
|
+
end # /context with an optional parent
|
74
|
+
end # /describe #poise_subresource
|
75
|
+
|
76
|
+
context 'with fused' do
|
77
|
+
resource(:poise_test) do
|
78
|
+
include described_class
|
79
|
+
poise_fused
|
80
|
+
end
|
81
|
+
|
82
|
+
it { is_expected.to include Poise::Resource }
|
83
|
+
it { is_expected.to include Poise::Helpers::Fused }
|
84
|
+
end # /context with fused
|
85
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2013-2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'poise_boiler/spec_helper'
|
18
|
+
require 'poise'
|