44596e73da
85d5ead
Updated the concat function so that it wouldn't modify the
original array. A side-effect of this change is that it now always calls
`Array()` on the second argument. If thit is a Hash, this results in
`to_a` being called on the hash, which converts it to an array or
tuples. This is undesired.
Update the behaviour so that it doesn't (indirectly) call `to_a` on
anything, instead test for the type of the argument, wrapping it in an
array if it's not already an array.
25 lines
1.3 KiB
Ruby
Executable file
25 lines
1.3 KiB
Ruby
Executable file
require 'spec_helper'
|
|
|
|
describe 'concat' do
|
|
it { is_expected.not_to eq(nil) }
|
|
it { is_expected.to run.with_params().and_raise_error(Puppet::ParseError) }
|
|
it { is_expected.to run.with_params([1]).and_raise_error(Puppet::ParseError) }
|
|
it { is_expected.to run.with_params(1, [2]).and_raise_error(Puppet::ParseError) }
|
|
it { is_expected.to run.with_params([1], [2], [3]).and_return([1, 2, 3]) }
|
|
it { is_expected.to run.with_params(['1','2','3'],['4','5','6']).and_return(['1','2','3','4','5','6']) }
|
|
it { is_expected.to run.with_params(['1','2','3'],'4').and_return(['1','2','3','4']) }
|
|
it { is_expected.to run.with_params(['1','2','3'],[['4','5'],'6']).and_return(['1','2','3',['4','5'],'6']) }
|
|
it { is_expected.to run.with_params(['1','2'],['3','4'],['5','6']).and_return(['1','2','3','4','5','6']) }
|
|
it { is_expected.to run.with_params(['1','2'],'3','4',['5','6']).and_return(['1','2','3','4','5','6']) }
|
|
it { is_expected.to run.with_params([{"a" => "b"}], {"c" => "d", "e" => "f"}).and_return([{"a" => "b"}, {"c" => "d", "e" => "f"}]) }
|
|
|
|
it "should leave the original array intact" do
|
|
argument1 = ['1','2','3']
|
|
original1 = argument1.dup
|
|
argument2 = ['4','5','6']
|
|
original2 = argument2.dup
|
|
result = subject.call([argument1,argument2])
|
|
expect(argument1).to eq(original1)
|
|
expect(argument2).to eq(original2)
|
|
end
|
|
end
|