alinta-cucumber-rest-bdd 0.5.8 → 0.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f7257eb4d31f2a2fae0379708133ecb33eb05ade
4
- data.tar.gz: f416fac845e041017ed21d987ef2597b72b83121
3
+ metadata.gz: bc3affbddafe52faf5c995a213a055d717228882
4
+ data.tar.gz: 845eca8241d3d85389fbaf034ba8a62e4db1f39d
5
5
  SHA512:
6
- metadata.gz: b9503caa143790b5ddbee289d664ae2a8e3287bca477ec54f8c41756c0b354fa7aa76eb76c6434ebfd2b518666c69421d5455cc6207988d3790eaf63a5714bb3
7
- data.tar.gz: 2a882dabe3dc34f770360d988c1aa2d0a7ee86c0ad73b59ca2c5bf8cc320443f615fc9a1882f0f89e8a7d86a8c8004ac42ed05998e843ac564097c4ce8bdce01
6
+ metadata.gz: 928840fe9666f63e56df84269a2c23d743dd2807efd4a9b9eb7a963ae6dd7c4909ba070fd489350330f07136fc66d6150cfa7212cc82b78a3f7ab92df4b5b2ad
7
+ data.tar.gz: 670bec83ec40969685862cf378f924fe8b3741ced46b433476ea895b313fb5dc7c04f0572864f0e34296b7a8955cff841796a3e5e55b0d2fda959eff0891ed02
@@ -116,13 +116,13 @@ def get_json_path(names)
116
116
  end
117
117
 
118
118
  def get_parameters(names)
119
- return names.split(':').map { |n| get_parameter(n) }
119
+ return names.split(':').map { |n| get_parameter(n.strip) }
120
120
  end
121
121
 
122
122
  def get_parameter(name)
123
123
  if name[0] == '`' && name[-1] == '`'
124
124
  name = name[1..-2]
125
- else
125
+ elsif name[0] != '[' || name[-1] != ']'
126
126
  separator = ENV.has_key?('field_separator') ? ENV['field_separator'] : '_'
127
127
  name = name.parameterize(separator: separator)
128
128
  name = name.camelize(:lower) if (ENV.has_key?('field_camel') && ENV['field_camel'] == 'true')
@@ -137,7 +137,26 @@ def get_attributes(hashes)
137
137
  value.gsub!(/\\n/, "\n")
138
138
  type = parse_type(type)
139
139
  names = get_parameters(name)
140
- new_hash = names.reverse.inject(value.to_type(type.camelize.constantize)) { |a, n| { n => a } }
141
- hash.deep_merge!(new_hash)
140
+ new_hash = names.reverse.inject(value.to_type(type.camelize.constantize)) { |a, n| add_to_hash(a, n) }
141
+ hash.deep_merge!(new_hash) { |key, old, new| new.kind_of?(Array) ? merge_arrays(old, new) : new }
142
142
  end
143
143
  end
144
+
145
+ def add_to_hash(a, n)
146
+ result = nil
147
+ if (n[0] == '[' && n[-1] == ']') then
148
+ array = Array.new(n[1..-2].to_i() + 1)
149
+ array[n[1..-2].to_i()] = a
150
+ result = array
151
+ end
152
+ result != nil ? result : { n => a };
153
+ end
154
+
155
+ def merge_arrays(a, b)
156
+ new_length = [a.length, b.length].max
157
+ new_array = Array.new(new_length)
158
+ new_length.times do |n|
159
+ new_array[n] = b[n] == nil ? a[n] : b[n]
160
+ end
161
+ return new_array
162
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alinta-cucumber-rest-bdd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.8
4
+ version: 0.5.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harry Bragg
@@ -91,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
91
  version: '0'
92
92
  requirements: []
93
93
  rubyforge_project:
94
- rubygems_version: 2.6.14
94
+ rubygems_version: 2.6.13
95
95
  signing_key:
96
96
  specification_version: 4
97
97
  summary: BDD Rest API specifics for cucumber