json_schema-faker 0.6.0 → 0.6.1

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: 7ebcb70af9b5de9a47ba9a6a8d539add9631e80e
4
- data.tar.gz: 8c7d300c7562ef22fa6d29788f53dd464f742cde
3
+ metadata.gz: 55f8ba801612ccb07d821cc0428a9909b3ddff4c
4
+ data.tar.gz: 7c4f071e4a7c0e0ba22025dc6d5334d7a6a3c32f
5
5
  SHA512:
6
- metadata.gz: afea57d43a6f1862473597c5f4ec93ce9ae5a88f8abee2107b77b9d7c8c872544f098f0e4c2a62131e13ddcf8ebbd6de4a87c4657dcc3662e2ef83ad4f6228db
7
- data.tar.gz: '09ee363bb4a24a32f8cd26f690335a0f25fe019b4e63ec6db4e311da07fe8e32a8370d6a13bc8e12c844c9d6e69d98b02fb2042e2873f874e4b40d2f071f6dec'
6
+ metadata.gz: '04390e5b4ab6c4a3a9782f32a55656465d6b0c4ecdfebd5507eca7cff91177acaa7ecc16eceb0d2be8e3773915dd156265530820693ccc713723ab2dcd02077b'
7
+ data.tar.gz: 664d28afe382ea2764198fab2a811129c78b01cbafae64b97668fb367ced53abdaa6db2fa0381c8ef6e6564d7644168731f1e9d2cf12fd8afe37a3d7e7043bfc
@@ -1,3 +1,8 @@
1
+ ## 0.6.1
2
+
3
+ * Fixed
4
+ * hint-example descending
5
+
1
6
  ## 0.6.0
2
7
 
3
8
  * Added
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.6.1
@@ -8,7 +8,7 @@ module JsonSchema::Faker::Strategy
8
8
  hint[:example].each.with_object({}) do |(key, value), hash|
9
9
  if value.is_a?(Hash)
10
10
  if schema.properties.has_key?(key)
11
- hash[key] = generate(schema.properties[key], hint: { example: hint[:example][key] }, position: "#{position}/#{key}")
11
+ hash[key] = generate(schema.properties[key], hint: { example: hint[:example][key] }, position: "#{position}/#{key}")
12
12
  else
13
13
  # TODO: support pattern properties
14
14
  hash[key] = value
@@ -18,6 +18,19 @@ module JsonSchema::Faker::Strategy
18
18
  end
19
19
  end
20
20
 
21
+ def hint_descend(hint, key)
22
+ if hint && hint[:example]
23
+ hint_without_example = hint.reject{|k,v|k == :example}
24
+ if hint[:example][key]
25
+ hint_without_example.merge(example: hint[:example][key])
26
+ else
27
+ hint_without_example
28
+ end
29
+ else
30
+ hint
31
+ end
32
+ end
33
+
21
34
  def call(schema, hint: nil, position:)
22
35
  if ::JsonSchema::Faker::Configuration.logger
23
36
  ::JsonSchema::Faker::Configuration.logger.debug "current position: #{position}"
@@ -56,7 +69,7 @@ module JsonSchema::Faker::Strategy
56
69
  hint[:example].each.with_object({}) do |(key, value), hash|
57
70
  if value.is_a?(Hash)
58
71
  if schema.properties.has_key?(key)
59
- hash[key] = generate(schema.properties[key], hint: { example: hint[:example][key] }, position: "#{position}/#{key}")
72
+ hash[key] = generate(schema.properties[key], hint: { example: hint[:example][key] }, position: "#{position}/#{key}")
60
73
  else
61
74
  # TODO: support pattern properties
62
75
  hash[key] = value
@@ -75,7 +88,7 @@ module JsonSchema::Faker::Strategy
75
88
  required_length = schema.min_properties || keys.length
76
89
 
77
90
  (keys - object.keys).each.with_object(object) do |key, hash|
78
- hash[key] = generate(schema.properties[key], hint: hint, position: "#{position}/#{key}")
91
+ hash[key] = generate(schema.properties[key], hint: hint_descend(hint, key), position: "#{position}/#{key}")
79
92
  end
80
93
  else
81
94
  required_length = schema.min_properties || schema.max_properties || 0
@@ -84,7 +97,7 @@ module JsonSchema::Faker::Strategy
84
97
  keys -= hint[:not_have_keys] if hint && hint[:not_have_keys]
85
98
 
86
99
  keys.first(required_length).each.with_object(object) do |key, hash|
87
- hash[key] = generate(schema.properties[key], hint: hint, position: "#{position}/#{key}")
100
+ hash[key] = generate(schema.properties[key], hint: hint_descend(hint, key), position: "#{position}/#{key}")
88
101
  end
89
102
  end
90
103
 
@@ -93,10 +106,10 @@ module JsonSchema::Faker::Strategy
93
106
  (required_length - object.keys.length).times.each.with_object(object) do |i, hash|
94
107
  if schema.pattern_properties.empty?
95
108
  key = (schema.properties.keys - object.keys).first
96
- hash[key] = generate(schema.properties[key], hint: hint, position: "#{position}/#{key}")
109
+ hash[key] = generate(schema.properties[key], hint: hint_descend(hint, key), position: "#{position}/#{key}")
97
110
  else
98
111
  name = ::Pxeger.new(schema.pattern_properties.keys.first).generate
99
- hash[name] = generate(schema.pattern_properties.values.first, hint: hint, position: "#{position}/#{name}")
112
+ hash[name] = generate(schema.pattern_properties.values.first, hint: hint_descend(hint, name), position: "#{position}/#{name}")
100
113
  end
101
114
  end
102
115
  else
@@ -112,7 +125,7 @@ module JsonSchema::Faker::Strategy
112
125
  # FIXME: circular dependency is not supported
113
126
  depended_keys.each.with_object(object) do |key, hash|
114
127
  schema.dependencies[key].each do |additional_key|
115
- hash[additional_key] = generate(schema.properties[additional_key], hint: hint, position: "#{position}/dependencies/#{key}/#{additional_key}") unless object.has_key?(additional_key)
128
+ hash[additional_key] = generate(schema.properties[additional_key], hint: hint_descend(hint, additional_key), position: "#{position}/dependencies/#{key}/#{additional_key}") unless object.has_key?(additional_key)
116
129
  end
117
130
  end
118
131
  else
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_schema-faker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - okitan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-17 00:00:00.000000000 Z
11
+ date: 2017-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json_schema