api_mini_tester 0.1.14 → 0.1.15

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: f83272726d49bd2cfcd5cd997cb67b3060b4937c
4
- data.tar.gz: 7d6016767627b337c843fe639d1a1496465d9fed
3
+ metadata.gz: 868c314aa5c1c44fcfc934efb75e1eeeb5a3591c
4
+ data.tar.gz: d205d3f88084c22025bea0f047761afbf0f720e8
5
5
  SHA512:
6
- metadata.gz: 3c1e835c0a6b83a5ce9682114f89e0bf0d46b39dd2adefbdd17a3fc204b22704fc11bba79c6f8ce2e60b41ba0eff55828d2439f2c3767f4a0ca8110430fe2570
7
- data.tar.gz: 69b1f58dd3833ac731a157a9b1f4ae272787e5a8d2b673957ba1c8a83f86f8bbe10717e53d8eae22f1399bd17320ec23b8791712d5dc28dcfb7b30869e69a0ea
6
+ metadata.gz: af4150a382255cebcba1b5c147523adf242fda1194216264940b87cd64cc36c70d9484804d9ba5d3c1c0770ed90e6095499adb68f3a88cc195ca81c8867aade9
7
+ data.tar.gz: b5319905e37feada8cef2a1c5d36fd92ca18194914de6ffe837c59e626f096d00c3b60d583bab77291ab04e957e57c8b45effb4da8cc90950365e3e95e0934a1
@@ -13,6 +13,11 @@ module ApiMiniTester
13
13
 
14
14
  SUPPORTED_METHODS = %i[ get post put delete ].freeze
15
15
  SUPPORTED_RANDOM_DISTRIBUTION = %w[ static norm uniform ].freeze
16
+ TYPE_TO_METHOD_MAP = {
17
+ 'integer' => 'to_i',
18
+ 'float' => 'to_f',
19
+ 'string' => 'to_s'
20
+ }.freeze
16
21
 
17
22
  attr_accessor :name, :input, :output, :timing
18
23
  attr_reader :results, :sleeps, :method, :uri, :debug
@@ -81,12 +86,18 @@ module ApiMiniTester
81
86
  when 'multipart/form-data'
82
87
  body_to_form_data
83
88
  else
84
- @input["body"].to_json
89
+ body_by_anotations
85
90
  end
86
91
  end
87
92
 
93
+ def body_by_anotations
94
+ resolve_annotations(@input["body"]).to_json
95
+ end
96
+
88
97
  def raw_body
89
98
  @input["body"].to_hash
99
+ rescue StandardError
100
+ ""
90
101
  end
91
102
 
92
103
  def body_to_form_data
@@ -280,6 +291,42 @@ module ApiMiniTester
280
291
  end
281
292
  end
282
293
  end
294
+
295
+ def type_to_method(type)
296
+ TYPE_TO_METHOD_MAP[type.downcase].to_sym
297
+ end
298
+
299
+ def resolve_annotations(struct)
300
+ if struct.instance_of?(Hash)
301
+ struct = resolve_annotations_hash(struct)
302
+ end
303
+ struct
304
+ end
305
+
306
+ def resolve_annotations_hash(hash)
307
+ hash.each do |k, v|
308
+ next unless matched = /\A\.(?<key>.*)\Z/.match(k)
309
+ type = v
310
+ typed_key = matched[:key]
311
+ next if hash[typed_key].nil?
312
+ hash[typed_key] = if hash[typed_key].instance_of?(Array)
313
+ resolve_annotations_array(hash[typed_key], type)
314
+ else
315
+ resolve_annotations_value(hash[typed_key], type)
316
+ end
317
+ hash.delete(k)
318
+ end
319
+ end
320
+
321
+ def resolve_annotations_value(value, type)
322
+ value.send(type_to_method(type))
323
+ rescue StandardError
324
+ value
325
+ end
326
+
327
+ def resolve_annotations_array(array, type)
328
+ array.map(&type_to_method(type))
329
+ end
283
330
  end
284
331
  end
285
332
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_mini_tester
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jindrich Skupa (@eMan)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-09 00:00:00.000000000 Z
11
+ date: 2019-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder