puppetlabs-stdlib/spec/functions/dig44_spec.rb
Nate Potter a2f980d44d (MODULES-3568) Move dig to dig44 and deprecate dig
A new version of dig was introduced in Puppet 4.5.0 that
isn't compatible with the stdlib version of dig. To maintain
backwards compatibility and ensure that tests for stdlib aren't
broken, this patch renames dig to dig44 and adds a deprecation
warning to the stdlib dig function.
2016-07-08 08:53:24 -07:00

44 lines
1.4 KiB
Ruby

require 'spec_helper'
describe 'dig44' do
it "should exist" do
expect(Puppet::Parser::Functions.function("dig44")).to eq("function_dig44")
end
it "should raise a ParseError if there are less than 2 arguments" do
expect { scope.function_dig44([]) }.to raise_error(Puppet::ParseError)
end
it "should raise a ParseError if the first argument isn't a hash or array" do
expect { scope.function_dig44(['bad', []]) }.to raise_error(Puppet::ParseError)
end
it "should raise a ParseError if the second argument isn't an array" do
expect { scope.function_dig44([{}, 'bad']) }.to raise_error(Puppet::ParseError)
end
it "should return an empty hash when given empty parameters" do
result = scope.function_dig44([{}, []])
expect(result).to(eq({}))
end
it "should return value when given simple hash" do
result = scope.function_dig44([{"a" => "b"}, ["a"]])
expect(result).to(eq("b"))
end
it "should find hash values two levels deep" do
result = scope.function_dig44([{"a" => {"b" => "c"}}, ["a", "b"]])
expect(result).to(eq("c"))
end
it "should return default value if nothing was found" do
result = scope.function_dig44([{}, ["a", "b"], "d"])
expect(result).to(eq("d"))
end
it "should work on booleans as well as strings" do
result = scope.function_dig44([{"a" => false}, ["a"]])
expect(result).to(eq(false))
end
end