diff options
author | Serdar Sutay <serdar@opscode.com> | 2014-10-20 16:01:07 -0700 |
---|---|---|
committer | Serdar Sutay <serdar@opscode.com> | 2014-10-20 16:01:34 -0700 |
commit | 4f01fa8cae82d0f2d097b329f24fe07cba1315b9 (patch) | |
tree | 2c2748502d8cadc58dbfbc06ba0b803606953b52 /spec | |
parent | ad6c5532a8faa9e96624d7e6cf74aae587e90fe0 (diff) | |
download | chef-4f01fa8cae82d0f2d097b329f24fe07cba1315b9.tar.gz |
Convert resource_collection spec to Rspec3 syntax.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/unit/resource_collection_spec.rb | 127 |
1 files changed, 62 insertions, 65 deletions
diff --git a/spec/unit/resource_collection_spec.rb b/spec/unit/resource_collection_spec.rb index a575d2996c..5966fdd1f2 100644 --- a/spec/unit/resource_collection_spec.rb +++ b/spec/unit/resource_collection_spec.rb @@ -20,80 +20,77 @@ require 'spec_helper' describe Chef::ResourceCollection do - - before(:each) do - @rc = Chef::ResourceCollection.new() - @resource = Chef::Resource::ZenMaster.new("makoto") - end + let(:rc) { Chef::ResourceCollection.new() } + let(:resource) { Chef::Resource::ZenMaster.new("makoto") } it "should throw an error when calling a non-delegated method" do - expect { @rc.not_a_method }.to raise_error(NoMethodError) + expect { rc.not_a_method }.to raise_error(NoMethodError) end describe "initialize" do it "should return a Chef::ResourceCollection" do - @rc.should be_kind_of(Chef::ResourceCollection) + rc.should be_kind_of(Chef::ResourceCollection) end end describe "[]" do it "should accept Chef::Resources through [index]" do - lambda { @rc[0] = @resource }.should_not raise_error - lambda { @rc[0] = "string" }.should raise_error(ArgumentError) + lambda { rc[0] = resource }.should_not raise_error + lambda { rc[0] = "string" }.should raise_error(ArgumentError) end it "should allow you to fetch Chef::Resources by position" do - @rc[0] = @resource - @rc[0].should eql(@resource) + rc[0] = resource + rc[0].should eql(resource) end end describe "push" do it "should accept Chef::Resources through pushing" do - lambda { @rc.push(@resource) }.should_not raise_error - lambda { @rc.push("string") }.should raise_error(ArgumentError) + lambda { rc.push(resource) }.should_not raise_error + lambda { rc.push("string") }.should raise_error(ArgumentError) end end describe "<<" do it "should accept the << operator" do - lambda { @rc << @resource }.should_not raise_error + lambda { rc << resource }.should_not raise_error end end describe "insert" do it "should accept only Chef::Resources" do - lambda { @rc.insert(@resource) }.should_not raise_error - lambda { @rc.insert("string") }.should raise_error(ArgumentError) + lambda { rc.insert(resource) }.should_not raise_error + lambda { rc.insert("string") }.should raise_error(ArgumentError) end it "should accept named arguments in any order" do - @rc.insert(@resource, :instance_name => 'foo', :resource_type =>'bar') - expect(@rc[0]).to eq(@resource) + rc.insert(resource, :instance_name => 'foo', :resource_type =>'bar') + expect(rc[0]).to eq(resource) end it "should append resources to the end of the collection when not executing a run" do zmr = Chef::Resource::ZenMaster.new("there is no spoon") - @rc.insert(@resource) - @rc.insert(zmr) - @rc[0].should eql(@resource) - @rc[1].should eql(zmr) + rc.insert(resource) + rc.insert(zmr) + rc[0].should eql(resource) + rc[1].should eql(zmr) end it "should insert resources to the middle of the collection if called while executing a run" do resource_to_inject = Chef::Resource::ZenMaster.new("there is no spoon") zmr = Chef::Resource::ZenMaster.new("morpheus") dummy = Chef::Resource::ZenMaster.new("keanu reeves") - @rc.insert(zmr) - @rc.insert(dummy) + rc.insert(zmr) + rc.insert(dummy) - @rc.execute_each_resource do |resource| - @rc.insert(resource_to_inject) if resource == zmr + rc.execute_each_resource do |resource| + rc.insert(resource_to_inject) if resource == zmr end - @rc[0].should eql(zmr) - @rc[1].should eql(resource_to_inject) - @rc[2].should eql(dummy) + rc[0].should eql(zmr) + rc[1].should eql(resource_to_inject) + rc[2].should eql(dummy) end end @@ -102,7 +99,7 @@ describe Chef::ResourceCollection do load_up_resources results = Array.new lambda { - @rc.each do |r| + rc.each do |r| results << r.name end }.should_not raise_error @@ -124,8 +121,8 @@ describe Chef::ResourceCollection do load_up_resources results = Array.new lambda { - @rc.each_index do |i| - results << @rc[i].name + rc.each_index do |i| + results << rc[i].name end }.should_not raise_error results.each_index do |i| @@ -144,24 +141,24 @@ describe Chef::ResourceCollection do describe "lookup" do it "should allow you to find resources by name via lookup" do zmr = Chef::Resource::ZenMaster.new("dog") - @rc << zmr - @rc.lookup(zmr.to_s).should eql(zmr) + rc << zmr + rc.lookup(zmr.to_s).should eql(zmr) zmr = Chef::Resource::ZenMaster.new("cat") - @rc[0] = zmr - @rc.lookup(zmr).should eql(zmr) + rc[0] = zmr + rc.lookup(zmr).should eql(zmr) zmr = Chef::Resource::ZenMaster.new("monkey") - @rc.push(zmr) - @rc.lookup(zmr).should eql(zmr) + rc.push(zmr) + rc.lookup(zmr).should eql(zmr) end it "should raise an exception if you send something strange to lookup" do - lambda { @rc.lookup(:symbol) }.should raise_error(ArgumentError) + lambda { rc.lookup(:symbol) }.should raise_error(ArgumentError) end it "should raise an exception if it cannot find a resource with lookup" do - lambda { @rc.lookup("zen_master[dog]") }.should raise_error(Chef::Exceptions::ResourceNotFound) + lambda { rc.lookup("zen_master[dog]") }.should raise_error(Chef::Exceptions::ResourceNotFound) end end @@ -169,80 +166,80 @@ describe Chef::ResourceCollection do it "should find a resource by symbol and name (:zen_master => monkey)" do load_up_resources - @rc.resources(:zen_master => "monkey").name.should eql("monkey") + rc.resources(:zen_master => "monkey").name.should eql("monkey") end it "should find a resource by symbol and array of names (:zen_master => [a,b])" do load_up_resources - results = @rc.resources(:zen_master => [ "monkey", "dog" ]) + results = rc.resources(:zen_master => [ "monkey", "dog" ]) results.length.should eql(2) check_by_names(results, "monkey", "dog") end it "should find resources of multiple kinds (:zen_master => a, :file => b)" do load_up_resources - results = @rc.resources(:zen_master => "monkey", :file => "something") + results = rc.resources(:zen_master => "monkey", :file => "something") results.length.should eql(2) check_by_names(results, "monkey", "something") end it "should find a resource by string zen_master[a]" do load_up_resources - @rc.resources("zen_master[monkey]").name.should eql("monkey") + rc.resources("zen_master[monkey]").name.should eql("monkey") end it "should find resources by strings of zen_master[a,b]" do load_up_resources - results = @rc.resources("zen_master[monkey,dog]") + results = rc.resources("zen_master[monkey,dog]") results.length.should eql(2) check_by_names(results, "monkey", "dog") end it "should find resources of multiple types by strings of zen_master[a]" do load_up_resources - results = @rc.resources("zen_master[monkey]", "file[something]") + results = rc.resources("zen_master[monkey]", "file[something]") results.length.should eql(2) check_by_names(results, "monkey", "something") end it "should raise an exception if you pass a bad name to resources" do - lambda { @rc.resources("michael jackson") }.should raise_error(ArgumentError) + lambda { rc.resources("michael jackson") }.should raise_error(ArgumentError) end it "should raise an exception if you pass something other than a string or hash to resource" do - lambda { @rc.resources([Array.new]) }.should raise_error(ArgumentError) + lambda { rc.resources([Array.new]) }.should raise_error(ArgumentError) end it "raises an error when attempting to find a resource that does not exist" do - lambda {@rc.find("script[nonesuch]")}.should raise_error(Chef::Exceptions::ResourceNotFound) + lambda {rc.find("script[nonesuch]")}.should raise_error(Chef::Exceptions::ResourceNotFound) end end describe "when validating a resource query object" do it "accepts a string of the form 'resource_type[resource_name]'" do - @rc.validate_lookup_spec!("resource_type[resource_name]").should be_true + rc.validate_lookup_spec!("resource_type[resource_name]").should be_true end it "accepts a single-element :resource_type => 'resource_name' Hash" do - @rc.validate_lookup_spec!(:service => "apache2").should be_true + rc.validate_lookup_spec!(:service => "apache2").should be_true end it "accepts a chef resource object" do res = Chef::Resource.new("foo", nil) - @rc.validate_lookup_spec!(res).should be_true + rc.validate_lookup_spec!(res).should be_true end it "rejects a malformed query string" do lambda do - @rc.validate_lookup_spec!("resource_type[missing-end-bracket") + rc.validate_lookup_spec!("resource_type[missing-end-bracket") end.should raise_error(Chef::Exceptions::InvalidResourceSpecification) end it "rejects an argument that is not a String, Hash, or Chef::Resource" do lambda do - @rc.validate_lookup_spec!(Object.new) + rc.validate_lookup_spec!(Object.new) end.should raise_error(Chef::Exceptions::InvalidResourceSpecification) end @@ -250,40 +247,40 @@ describe Chef::ResourceCollection do describe "to_json" do it "should serialize to json" do - json = @rc.to_json + json = rc.to_json json.should =~ /json_class/ json.should =~ /instance_vars/ end include_examples "to_json equalivent to Chef::JSONCompat.to_json" do - let(:jsonable) { @rc } + let(:jsonable) { rc } end end describe "self.from_json" do it "should not respond to this method" do - expect(@rc.respond_to?(:from_json)).to eq(false) + expect(rc.respond_to?(:from_json)).to eq(false) end it "should convert from json using the CHEF::JSONCompat library" do - @rc << @resource - json = Chef::JSONCompat.to_json(@rc) + rc << resource + json = Chef::JSONCompat.to_json(rc) s_rc = Chef::JSONCompat.from_json(json) s_rc.should be_a_kind_of(Chef::ResourceCollection) - s_rc[0].name.should eql(@resource.name) + s_rc[0].name.should eql(resource.name) end end describe "provides access to the raw resources array" do it "returns the resources via the all_resources method" do - @rc.all_resources.should equal(@rc.instance_variable_get(:@resource_list).instance_variable_get(:@resources)) + rc.all_resources.should equal(rc.instance_variable_get(:@resource_list).instance_variable_get(:@resources)) end end describe "provides access to stepable iterator" do it "returns the iterator object" do - @rc.instance_variable_get(:@resource_list).instance_variable_set(:@iterator, :fooboar) - @rc.iterator.should == :fooboar + rc.instance_variable_get(:@resource_list).instance_variable_set(:@iterator, :fooboar) + rc.iterator.should == :fooboar end end @@ -295,9 +292,9 @@ describe Chef::ResourceCollection do def load_up_resources %w{dog cat monkey}.each do |n| - @rc << Chef::Resource::ZenMaster.new(n) + rc << Chef::Resource::ZenMaster.new(n) end - @rc << Chef::Resource::File.new("something") + rc << Chef::Resource::File.new("something") end end |