api_mini_tester 0.1.14 → 0.1.15

Sign up to get free protection for your applications and to get access to all the features.
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