lib/ruby-jmeter/helpers/helper.rb in ruby-jmeter-2.0.3 vs lib/ruby-jmeter/helpers/helper.rb in ruby-jmeter-2.0.4

- old
+ new

@@ -15,18 +15,35 @@ module_function :dsl_eval module Helper def update(params) params.delete(:name) - params.each do |name, value| - node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]") - node.first.content = value unless node.empty? + if params.class == Array + update_collection params + else + params.each do |name, value| + node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]") + node.first.content = value unless node.empty? + end end end def update_at_xpath(params) params[:update_at_xpath].each do |fragment| @doc.at_xpath(fragment[:xpath]) << fragment[:value] + end + end + + def update_collection(params) + elements = @doc.at_xpath("//collectionProp/elementProp") + params.each_with_index do |param, index| + param.each do |name, value| + element = elements.element_children.xpath("//*[contains(@name,\"#{name}\")]") + element.last.content = value + end + if index != params.size - 1 + @doc.at_xpath("//collectionProp") << elements.dup + end end end def enabled(params) #default to true unless explicitly set to false