spec/unit/lwrp_spec.rb in microwave-1.0.4 vs spec/unit/lwrp_spec.rb in microwave-11.400.2
- old
+ new
@@ -4,13 +4,13 @@
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
@@ -23,27 +23,27 @@
$stderr.stub!(:write)
end
it "should log if attempting to load resource of same name" do
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp", "resources", "*"))].each do |file|
- Chef::Resource.build_from_file("lwrp", file, nil)
+ Chef::Resource::LWRPBase.build_from_file("lwrp", file, nil)
end
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp_override", "resources", "*"))].each do |file|
Chef::Log.should_receive(:info).with(/overriding/)
- Chef::Resource.build_from_file("lwrp", file, nil)
+ Chef::Resource::LWRPBase.build_from_file("lwrp", file, nil)
end
end
it "should log if attempting to load provider of same name" do
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp", "providers", "*"))].each do |file|
- Chef::Provider.build_from_file("lwrp", file, nil)
+ Chef::Provider::LWRPBase.build_from_file("lwrp", file, nil)
end
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp_override", "providers", "*"))].each do |file|
Chef::Log.should_receive(:info).with(/overriding/)
- Chef::Provider.build_from_file("lwrp", file, nil)
+ Chef::Provider::LWRPBase.build_from_file("lwrp", file, nil)
end
end
end
@@ -59,15 +59,15 @@
describe "Lightweight Chef::Resource" do
before do
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp", "resources", "*"))].each do |file|
- Chef::Resource.build_from_file("lwrp", file, nil)
+ Chef::Resource::LWRPBase.build_from_file("lwrp", file, nil)
end
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp_override", "resources", "*"))].each do |file|
- Chef::Resource.build_from_file("lwrp", file, nil)
+ Chef::Resource::LWRPBase.build_from_file("lwrp", file, nil)
end
end
it "should load the resource into a properly-named class" do
Chef::Resource.const_get("LwrpFoo").should be_kind_of(Class)
@@ -92,16 +92,16 @@
it "should build attribute methods that respect validation rules" do
lambda { Chef::Resource::LwrpFoo.new("blah").monkey(42) }.should raise_error(ArgumentError)
end
it "should have access to the run context and node during class definition" do
- node = Chef::Node.new(nil)
- node[:penguin_name] = "jackass"
+ node = Chef::Node.new
+ node.normal[:penguin_name] = "jackass"
run_context = Chef::RunContext.new(node, Chef::CookbookCollection.new, @events)
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp", "resources_with_default_attributes", "*"))].each do |file|
- Chef::Resource.build_from_file("lwrp", file, run_context)
+ Chef::Resource::LWRPBase.build_from_file("lwrp", file, run_context)
end
cls = Chef::Resource.const_get("LwrpNodeattr")
cls.node.should be_kind_of(Chef::Node)
cls.run_context.should be_kind_of(Chef::RunContext)
@@ -111,32 +111,32 @@
end
describe "Lightweight Chef::Provider" do
before do
@node = Chef::Node.new
- @node.platform(:ubuntu)
- @node.platform_version('8.10')
+ @node.automatic[:platform] = :ubuntu
+ @node.automatic[:platform_version] = '8.10'
@events = Chef::EventDispatch::Dispatcher.new
@run_context = Chef::RunContext.new(@node, Chef::CookbookCollection.new({}), @events)
@runner = Chef::Runner.new(@run_context)
end
before(:each) do
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp", "resources", "*"))].each do |file|
- Chef::Resource.build_from_file("lwrp", file, @run_context)
+ Chef::Resource::LWRPBase.build_from_file("lwrp", file, @run_context)
end
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp_override", "resources", "*"))].each do |file|
- Chef::Resource.build_from_file("lwrp", file, @run_context)
+ Chef::Resource::LWRPBase.build_from_file("lwrp", file, @run_context)
end
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp", "providers", "*"))].each do |file|
- Chef::Provider.build_from_file("lwrp", file, @run_context)
+ Chef::Provider::LWRPBase.build_from_file("lwrp", file, @run_context)
end
Dir[File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "lwrp_override", "providers", "*"))].each do |file|
- Chef::Provider.build_from_file("lwrp", file, @run_context)
+ Chef::Provider::LWRPBase.build_from_file("lwrp", file, @run_context)
end
end
it "should properly handle a new_resource reference" do
@@ -222,9 +222,51 @@
provider = Chef::Platform.provider_for_resource(resource, :twiddle_thumbs)
#provider = @runner.build_provider(resource)
provider.action_twiddle_thumbs
provider.enclosed_resource.monkey.should == 'bob, the monkey'
+ end
+
+ describe "when using inline compilation" do
+ before do
+ # Behavior in these examples depends on implementation of fixture provider.
+ # See spec/data/lwrp/providers/inline_compiler
+
+ # Side effect of lwrp_inline_compiler provider for testing notifications.
+ $interior_ruby_block_2 = nil
+ # resource type doesn't matter, so make an existing resource type work with provider.
+ @resource = Chef::Resource::LwrpFoo.new("morpheus", @run_context)
+ @resource.allowed_actions << :test
+ @resource.action(:test)
+ @resource.provider(:lwrp_inline_compiler)
+ end
+
+ it "does not add interior resources to the exterior resource collection" do
+ @resource.run_action(:test)
+ @run_context.resource_collection.should be_empty
+ end
+
+ context "when interior resources are updated" do
+ it "processes notifications within the LWRP provider's action" do
+ @resource.run_action(:test)
+ $interior_ruby_block_2.should == "executed"
+ end
+
+ it "marks the parent resource updated" do
+ @resource.run_action(:test)
+ @resource.should be_updated
+ @resource.should be_updated_by_last_action
+ end
+ end
+
+ context "when interior resources are not updated" do
+ it "does not mark the parent resource updated" do
+ @resource.run_action(:no_updates)
+ @resource.should_not be_updated
+ @resource.should_not be_updated_by_last_action
+ end
+ end
+
end
end
end