diff --git a/lib/stackup/parameters.rb b/lib/stackup/parameters.rb index 5071425..d1d0951 100644 --- a/lib/stackup/parameters.rb +++ b/lib/stackup/parameters.rb @@ -45,7 +45,7 @@ def to_a if value == :use_previous_value record[:use_previous_value] = true else - record[:parameter_value] = value + record[:parameter_value] = ParameterValue.new(value).to_param end end end @@ -75,7 +75,26 @@ def value if use_previous_value :use_previous_value else - parameter_value + ParameterValue.new(parameter_value).to_param + end + end + + end + + class ParameterValue + + def initialize(value) + @value = value + end + + def to_param + case @value + when TrueClass, FalseClass, Integer then + @value.to_s + when Array + @value.map { |v| ParameterValue.new(v).to_param }.join(",") + else + @value end end diff --git a/spec/stackup/parameters_spec.rb b/spec/stackup/parameters_spec.rb index 06267a4..e162592 100644 --- a/spec/stackup/parameters_spec.rb +++ b/spec/stackup/parameters_spec.rb @@ -146,6 +146,51 @@ end + context "with non-string values" do + + let(:input_records) do + [ + { :parameter_key => "Integer", :parameter_value => 123_456_789 }, + { :parameter_key => "Truthy", :parameter_value => true }, + { :parameter_key => "Falsey", :parameter_value => false }, + { :parameter_key => "Null", :parameter_value => nil }, + { :parameter_key => "Array", :parameter_value => ["one", 2] }, + { :parameter_key => "String", :parameter_value => "string" } + ] + end + + subject(:parameters) { Stackup::Parameters.new(input_records) } + + describe "#to_hash" do + it "converts the to strings where appropriate" do + expected = { + "Integer" => "123456789", + "Truthy" => "true", + "Falsey" => "false", + "Null" => nil, + "Array" => "one,2", + "String" => "string" + } + expect(parameters.to_hash).to eql(expected) + end + end + + describe "#to_a" do + it "converts the to strings where appropriate" do + expected = [ + { :parameter_key => "Integer", :parameter_value => "123456789" }, + { :parameter_key => "Truthy", :parameter_value => "true" }, + { :parameter_key => "Falsey", :parameter_value => "false" }, + { :parameter_key => "Null", :parameter_value => nil }, + { :parameter_key => "Array", :parameter_value => "one,2" }, + { :parameter_key => "String", :parameter_value => "string" } + ] + expect(parameters.to_a).to eql(expected) + end + end + + end + context "with empty parameter file" do let(:input_records) { false }