f3e79ddcd5
Tests in the new style produces the following documentation output: abs should not eq nil should run abs() and raise an Puppet::ParseError should run abs(-34) and return 34 should run abs("-34") and return 34 should run abs(34) and return 34 should run abs("34") and return 34
55 lines
2.6 KiB
Ruby
Executable file
55 lines
2.6 KiB
Ruby
Executable file
require 'spec_helper'
|
|
|
|
describe 'deep_merge' do
|
|
it { is_expected.to run.with_params().and_raise_error(Puppet::ParseError, /wrong number of arguments/i) }
|
|
it { is_expected.to run.with_params({ 'key' => 'value' }).and_raise_error(Puppet::ParseError, /wrong number of arguments/i) }
|
|
it { is_expected.to run.with_params({}, '2').and_raise_error(Puppet::ParseError, /unexpected argument type String/) }
|
|
it { is_expected.to run.with_params({}, 2).and_raise_error(Puppet::ParseError, /unexpected argument type Fixnum/) }
|
|
it { is_expected.to run.with_params({}, '').and_return({}) }
|
|
it { is_expected.to run.with_params({}, {}).and_return({}) }
|
|
it { is_expected.to run.with_params({}, {}, {}).and_return({}) }
|
|
it { is_expected.to run.with_params({}, {}, {}, {}).and_return({}) }
|
|
it { is_expected.to run.with_params({'key' => 'value'}, '').and_return({'key' => 'value'}) }
|
|
it { is_expected.to run.with_params({'key1' => 'value1'}, {'key2' => 'value2' }).and_return({'key1' => 'value1', 'key2' => 'value2'}) }
|
|
|
|
describe 'when arguments have key collisions' do
|
|
it 'should prefer values from the last hash' do
|
|
is_expected.to run \
|
|
.with_params(
|
|
{'key1' => 'value1', 'key2' => 'value2' },
|
|
{'key2' => 'replacement_value', 'key3' => 'value3'}) \
|
|
.and_return(
|
|
{'key1' => 'value1', 'key2' => 'replacement_value', 'key3' => 'value3'})
|
|
end
|
|
it { is_expected.to run \
|
|
.with_params({'key1' => 'value1'}, {'key1' => 'value2'}, {'key1' => 'value3'}) \
|
|
.and_return({'key1' => 'value3' })
|
|
}
|
|
end
|
|
|
|
describe 'when arguments have subhashes' do
|
|
it { is_expected.to run \
|
|
.with_params({'key1' => 'value1'}, {'key2' => 'value2', 'key3' => {'subkey1' => 'value4'}}) \
|
|
.and_return( {'key1' => 'value1', 'key2' => 'value2', 'key3' => {'subkey1' => 'value4'}})
|
|
}
|
|
it { is_expected.to run \
|
|
.with_params({'key1' => {'subkey1' => 'value1'}}, {'key1' => {'subkey2' => 'value2'}}) \
|
|
.and_return( {'key1' => {'subkey1' => 'value1', 'subkey2' => 'value2'}})
|
|
}
|
|
it { is_expected.to run \
|
|
.with_params({'key1' => {'subkey1' => {'subsubkey1' => 'value1'}}}, {'key1' => {'subkey1' => {'subsubkey1' => 'value2'}}}) \
|
|
.and_return( {'key1' => {'subkey1' => {'subsubkey1' => 'value2'}}})
|
|
}
|
|
end
|
|
|
|
it 'should not change the original hashes' do
|
|
argument1 = { 'key1' => 'value1' }
|
|
original1 = argument1.dup
|
|
argument2 = { 'key2' => 'value2' }
|
|
original2 = argument2.dup
|
|
|
|
subject.call([argument1, argument2])
|
|
expect(argument1).to eq(original1)
|
|
expect(argument2).to eq(original2)
|
|
end
|
|
end
|