summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spec/unit/puppet/parser/functions/keys_spec.rb13
-rw-r--r--spec/unit/puppet/parser/functions/values_spec.rb21
2 files changed, 19 insertions, 15 deletions
diff --git a/spec/unit/puppet/parser/functions/keys_spec.rb b/spec/unit/puppet/parser/functions/keys_spec.rb
index 927be96..d928562 100644
--- a/spec/unit/puppet/parser/functions/keys_spec.rb
+++ b/spec/unit/puppet/parser/functions/keys_spec.rb
@@ -6,21 +6,20 @@ describe "the keys function" do
Puppet::Parser::Functions.autoloader.loadall
end
- before :each do
- @scope = Puppet::Parser::Scope.new
- end
+ let(:scope) { Puppet::Parser::Scope.new }
it "should exist" do
Puppet::Parser::Functions.function("keys").should == "function_keys"
end
it "should raise a ParseError if there is less than 1 arguments" do
- lambda { @scope.function_keys([]) }.should( raise_error(Puppet::ParseError))
+ lambda { scope.function_keys([]) }.should( raise_error(Puppet::ParseError))
end
it "should return an array of keys when given a hash" do
- result = @scope.function_keys([{'a'=>1, 'b' => 2}])
- result.should(eq(['a','b']))
+ result = scope.function_keys([{'a'=>1, 'b'=>2}])
+ # =~ performs 'array with same elements' (set) matching
+ # For more info see RSpec::Matchers::MatchArray
+ result.should =~ ['a','b']
end
-
end
diff --git a/spec/unit/puppet/parser/functions/values_spec.rb b/spec/unit/puppet/parser/functions/values_spec.rb
index f6eb5b6..a5fbbd8 100644
--- a/spec/unit/puppet/parser/functions/values_spec.rb
+++ b/spec/unit/puppet/parser/functions/values_spec.rb
@@ -6,25 +6,30 @@ describe "the values function" do
Puppet::Parser::Functions.autoloader.loadall
end
- before :each do
- @scope = Puppet::Parser::Scope.new
- end
+ let(:scope) { Puppet::Parser::Scope.new }
it "should exist" do
Puppet::Parser::Functions.function("values").should == "function_values"
end
it "should raise a ParseError if there is less than 1 arguments" do
- lambda { @scope.function_values([]) }.should( raise_error(Puppet::ParseError))
+ lambda { scope.function_values([]) }.should( raise_error(Puppet::ParseError))
end
it "should return values from a hash" do
- result = @scope.function_values([{'a'=>'1','b'=>'2','c'=>'3'}])
- result.should(eq(['1','2','3']))
+ result = scope.function_values([{'a'=>'1','b'=>'2','c'=>'3'}])
+ # =~ is the RSpec::Matchers::MatchArray matcher.
+ # A.K.A. "array with same elements" (multiset) matching
+ result.should =~ %w{ 1 2 3 }
end
- it "should return values from a hash" do
- lambda { @scope.function_values([['a','b','c']]) }.should( raise_error(Puppet::ParseError))
+ it "should return a multiset" do
+ result = scope.function_values([{'a'=>'1','b'=>'3','c'=>'3'}])
+ result.should =~ %w{ 1 3 3 }
+ result.should_not =~ %w{ 1 3 }
end
+ it "should raise a ParseError unless a Hash is provided" do
+ lambda { scope.function_values([['a','b','c']]) }.should( raise_error(Puppet::ParseError))
+ end
end