json_test_data 1.1.3 → 1.2.0
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 +4 -4
- data/Gemfile.lock +37 -35
- data/fixtures/basic_schema.json +16 -0
- data/lib/json_test_data.rb +1 -1
- data/lib/json_test_data/json_schema.rb +13 -7
- data/spec/json_test_data/custom_handler_spec.rb +55 -0
- data/spec/json_test_data/json_schema_spec.rb +18 -0
- data/version.rb +1 -1
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91d511d9d89b523ca86526ab673249d1c5edea5e
|
4
|
+
data.tar.gz: bd8e1bc944c83cdc74bd8a4e89f666a60e269295
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b9655beb95eddddb1decba4e5249833da1c046503b2068bd5389ca155bb775be0dcbf3c183dbed12c64ce6588ab5f43e0b1806589436fd15e6e288b61a53464
|
7
|
+
data.tar.gz: 98f726b0e9636c94ff4a949abfef0674c5f43ded288c1d98c22835a5ad89780fa9c133ec29e7f0de13f4a737f54aff4992c5d40ce66edb9b9291151952a63fb8
|
data/Gemfile.lock
CHANGED
@@ -7,15 +7,16 @@ PATH
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
addressable (2.
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
addressable (2.5.2)
|
11
|
+
public_suffix (>= 2.0.2, < 4.0)
|
12
|
+
builder (3.2.3)
|
13
|
+
coderay (1.1.2)
|
14
|
+
coveralls (0.8.21)
|
15
|
+
json (>= 1.8, < 3)
|
16
|
+
simplecov (~> 0.14.1)
|
16
17
|
term-ansicolor (~> 1.3)
|
17
|
-
thor (~> 0.19.
|
18
|
-
tins (~> 1.6
|
18
|
+
thor (~> 0.19.4)
|
19
|
+
tins (~> 1.6)
|
19
20
|
cucumber (2.4.0)
|
20
21
|
builder (>= 2.1.2)
|
21
22
|
cucumber-core (~> 1.5.0)
|
@@ -27,44 +28,45 @@ GEM
|
|
27
28
|
cucumber-core (1.5.0)
|
28
29
|
gherkin (~> 4.0)
|
29
30
|
cucumber-wire (0.0.1)
|
30
|
-
diff-lcs (1.
|
31
|
+
diff-lcs (1.3)
|
31
32
|
docile (1.1.5)
|
32
|
-
gherkin (4.
|
33
|
-
json (1.8.
|
34
|
-
json-schema (2.
|
35
|
-
addressable (
|
33
|
+
gherkin (4.1.3)
|
34
|
+
json (1.8.6)
|
35
|
+
json-schema (2.8.0)
|
36
|
+
addressable (>= 2.4)
|
36
37
|
method_source (0.8.2)
|
37
|
-
multi_json (1.12.
|
38
|
+
multi_json (1.12.2)
|
38
39
|
multi_test (0.1.2)
|
39
|
-
pry (0.10.
|
40
|
+
pry (0.10.4)
|
40
41
|
coderay (~> 1.1.0)
|
41
42
|
method_source (~> 0.8.1)
|
42
43
|
slop (~> 3.4)
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
rspec-
|
48
|
-
rspec-
|
49
|
-
|
50
|
-
|
51
|
-
|
44
|
+
public_suffix (3.0.0)
|
45
|
+
rake (11.3.0)
|
46
|
+
regexp-examples (1.3.2)
|
47
|
+
rspec (3.6.0)
|
48
|
+
rspec-core (~> 3.6.0)
|
49
|
+
rspec-expectations (~> 3.6.0)
|
50
|
+
rspec-mocks (~> 3.6.0)
|
51
|
+
rspec-core (3.6.0)
|
52
|
+
rspec-support (~> 3.6.0)
|
53
|
+
rspec-expectations (3.6.0)
|
52
54
|
diff-lcs (>= 1.2.0, < 2.0)
|
53
|
-
rspec-support (~> 3.
|
54
|
-
rspec-mocks (3.
|
55
|
+
rspec-support (~> 3.6.0)
|
56
|
+
rspec-mocks (3.6.0)
|
55
57
|
diff-lcs (>= 1.2.0, < 2.0)
|
56
|
-
rspec-support (~> 3.
|
57
|
-
rspec-support (3.
|
58
|
-
simplecov (0.
|
58
|
+
rspec-support (~> 3.6.0)
|
59
|
+
rspec-support (3.6.0)
|
60
|
+
simplecov (0.14.1)
|
59
61
|
docile (~> 1.1.0)
|
60
|
-
json (
|
62
|
+
json (>= 1.8, < 3)
|
61
63
|
simplecov-html (~> 0.10.0)
|
62
|
-
simplecov-html (0.10.
|
64
|
+
simplecov-html (0.10.2)
|
63
65
|
slop (3.6.0)
|
64
|
-
term-ansicolor (1.
|
66
|
+
term-ansicolor (1.6.0)
|
65
67
|
tins (~> 1.0)
|
66
|
-
thor (0.19.
|
67
|
-
tins (1.
|
68
|
+
thor (0.19.4)
|
69
|
+
tins (1.15.0)
|
68
70
|
|
69
71
|
PLATFORMS
|
70
72
|
ruby
|
@@ -80,4 +82,4 @@ DEPENDENCIES
|
|
80
82
|
rspec (~> 3.4)
|
81
83
|
|
82
84
|
BUNDLED WITH
|
83
|
-
1.
|
85
|
+
1.15.4
|
@@ -0,0 +1,16 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema#",
|
3
|
+
"type": "object",
|
4
|
+
"properties": {
|
5
|
+
"created_at": {
|
6
|
+
"type": "string",
|
7
|
+
"format": "date-time"
|
8
|
+
},
|
9
|
+
"count": {
|
10
|
+
"type": "number"
|
11
|
+
},
|
12
|
+
"user_count": {
|
13
|
+
"type": "number"
|
14
|
+
}
|
15
|
+
}
|
16
|
+
}
|
data/lib/json_test_data.rb
CHANGED
@@ -5,7 +5,7 @@ require_relative "./json_test_data/json_schema"
|
|
5
5
|
|
6
6
|
module JsonTestData
|
7
7
|
def self.generate!(schema, opts={})
|
8
|
-
schema = JsonSchema.new(schema).generate_example
|
8
|
+
schema = JsonSchema.new(schema, opts[:handler]).generate_example
|
9
9
|
opts[:ruby] ? JSON.parse(schema, symbolize_names: true) : schema
|
10
10
|
end
|
11
11
|
end
|
@@ -3,10 +3,11 @@ require_relative "./data_structures/number"
|
|
3
3
|
|
4
4
|
module JsonTestData
|
5
5
|
class JsonSchema
|
6
|
-
attr_accessor :schema
|
6
|
+
attr_accessor :schema, :handler
|
7
7
|
|
8
|
-
def initialize(schema)
|
8
|
+
def initialize(schema, handler = nil)
|
9
9
|
@schema = JSON.parse(schema, symbolize_names: true)
|
10
|
+
@handler = handler
|
10
11
|
end
|
11
12
|
|
12
13
|
def generate_example
|
@@ -14,7 +15,9 @@ module JsonTestData
|
|
14
15
|
end
|
15
16
|
|
16
17
|
private
|
17
|
-
def generate_data(obj)
|
18
|
+
def generate_data(obj, key)
|
19
|
+
return handler.get_data(key, obj) if handler && handler.manages_key?(key)
|
20
|
+
|
18
21
|
case obj.fetch(:type)
|
19
22
|
when "number"
|
20
23
|
JsonTestData::Number.create(obj)
|
@@ -27,13 +30,13 @@ module JsonTestData
|
|
27
30
|
end
|
28
31
|
end
|
29
32
|
|
30
|
-
def generate(obj)
|
33
|
+
def generate(obj, key = nil)
|
31
34
|
if is_object?(obj)
|
32
35
|
generate_object(obj)
|
33
36
|
elsif is_array?(obj)
|
34
37
|
generate_array(obj)
|
35
38
|
else
|
36
|
-
generate_data(obj)
|
39
|
+
generate_data(obj, key)
|
37
40
|
end
|
38
41
|
end
|
39
42
|
|
@@ -65,9 +68,12 @@ module JsonTestData
|
|
65
68
|
|
66
69
|
if object.has_key?(:properties)
|
67
70
|
object.fetch(:properties).each do |k, v|
|
68
|
-
|
71
|
+
unless v.has_key?(:type)
|
72
|
+
obj[k] = nil
|
73
|
+
next
|
74
|
+
end
|
69
75
|
|
70
|
-
obj[k] = generate(v)
|
76
|
+
obj[k] = generate(v, k)
|
71
77
|
end
|
72
78
|
end
|
73
79
|
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class FakeHandler
|
4
|
+
def manages_key?(key); end
|
5
|
+
def get_data(key, obj); end
|
6
|
+
end
|
7
|
+
|
8
|
+
RSpec.describe 'Schema custom handler' do
|
9
|
+
let(:schema) { File.read('./fixtures/basic_schema.json') }
|
10
|
+
let(:result) { JSON.parse(subject.generate_example) }
|
11
|
+
|
12
|
+
subject { JsonTestData::JsonSchema.new(schema, handler) }
|
13
|
+
|
14
|
+
before do
|
15
|
+
allow(JsonTestData::Number).to receive(:create).and_return(9000)
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'when custom_handler is not passed' do
|
19
|
+
let(:handler) { nil }
|
20
|
+
|
21
|
+
it 'doesnt error' do
|
22
|
+
expect{result}.not_to raise_error
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'still generates data' do
|
26
|
+
expect(result['count']).to eq 9000
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'when handler passed' do
|
31
|
+
let(:handler) { FakeHandler.new }
|
32
|
+
|
33
|
+
before do
|
34
|
+
allow(handler).to receive(:manages_key?).and_return(false)
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'and it manages key' do
|
38
|
+
it 'gets data from the handler' do
|
39
|
+
expect(handler).to receive(:manages_key?).with(:count).and_return(true)
|
40
|
+
expect(handler).to receive(:get_data).with(:count, { type: 'number' }).and_return(5555)
|
41
|
+
expect(result['count']).to eq 5555
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context "and it doesn't manage key" do
|
46
|
+
it 'returns number test data' do
|
47
|
+
expect(handler).to receive(:manages_key?).with(:count).and_return(false)
|
48
|
+
allow(handler).to receive(:get_data).and_return(5555)
|
49
|
+
|
50
|
+
expect(result['count']).to eq 9000
|
51
|
+
expect(result['user_count']).to eq 9000
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -312,5 +312,23 @@ describe JsonTestData::JsonSchema do
|
|
312
312
|
end
|
313
313
|
end
|
314
314
|
end
|
315
|
+
|
316
|
+
describe 'when type is missing' do
|
317
|
+
let(:schema) do
|
318
|
+
{
|
319
|
+
:'$schema' => 'http://json-schema.org/draft-04/schema#',
|
320
|
+
:type => 'object',
|
321
|
+
:properties => {
|
322
|
+
:user => {},
|
323
|
+
:title => { :type => 'string', :enum => [ 'Foobar' ] },
|
324
|
+
}
|
325
|
+
}.to_json
|
326
|
+
end
|
327
|
+
|
328
|
+
it 'returns nil' do
|
329
|
+
json_schema = JsonTestData::JsonSchema.new(schema)
|
330
|
+
expect(json_schema.generate_example).to eq({ user: nil, title: 'Foobar' }.to_json)
|
331
|
+
end
|
332
|
+
end
|
315
333
|
end
|
316
334
|
end
|
data/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_test_data
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dana Scheider
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: regexp-examples
|
@@ -135,12 +135,14 @@ files:
|
|
135
135
|
- features/step_definitions/json_test_data_steps.rb
|
136
136
|
- features/string_constraints.feature
|
137
137
|
- features/support/env.rb
|
138
|
+
- fixtures/basic_schema.json
|
138
139
|
- json_test_data.gemspec
|
139
140
|
- lib/json_test_data.rb
|
140
141
|
- lib/json_test_data/data_structures/helpers/number_helper.rb
|
141
142
|
- lib/json_test_data/data_structures/number.rb
|
142
143
|
- lib/json_test_data/data_structures/string.rb
|
143
144
|
- lib/json_test_data/json_schema.rb
|
145
|
+
- spec/json_test_data/custom_handler_spec.rb
|
144
146
|
- spec/json_test_data/data_structures/helpers/number_helper_spec.rb
|
145
147
|
- spec/json_test_data/data_structures/number_spec.rb
|
146
148
|
- spec/json_test_data/data_structures/string_spec.rb
|
@@ -171,10 +173,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
171
173
|
version: '0'
|
172
174
|
requirements: []
|
173
175
|
rubyforge_project:
|
174
|
-
rubygems_version: 2.
|
176
|
+
rubygems_version: 2.6.11
|
175
177
|
signing_key:
|
176
178
|
specification_version: 4
|
177
|
-
summary: json_test_data-1.
|
179
|
+
summary: json_test_data-1.2.0
|
178
180
|
test_files:
|
179
181
|
- features/array_constraints.feature
|
180
182
|
- features/conditional_properties.feature
|
@@ -187,6 +189,7 @@ test_files:
|
|
187
189
|
- features/step_definitions/json_test_data_steps.rb
|
188
190
|
- features/string_constraints.feature
|
189
191
|
- features/support/env.rb
|
192
|
+
- spec/json_test_data/custom_handler_spec.rb
|
190
193
|
- spec/json_test_data/data_structures/helpers/number_helper_spec.rb
|
191
194
|
- spec/json_test_data/data_structures/number_spec.rb
|
192
195
|
- spec/json_test_data/data_structures/string_spec.rb
|