json_test_data 1.1.3 → 1.2.0

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: 11ec919ef40122e3f7a7554a567d2de668c26141
4
- data.tar.gz: a67b25bb51a6ad31f0e53e1e99b3f50e72aa70db
3
+ metadata.gz: 91d511d9d89b523ca86526ab673249d1c5edea5e
4
+ data.tar.gz: bd8e1bc944c83cdc74bd8a4e89f666a60e269295
5
5
  SHA512:
6
- metadata.gz: b1e0053b67a99537671cbcff9d90cc1f07fc1195a4403592d2deb5ee0cfe05914901e6d7fe35890fea9a1ca2e92a2e1ff3973036082ebabfe15678902af42fab
7
- data.tar.gz: ce74240e11fd3175db3a93f850609b05ef4b1d3aa6c75e0c200d83742f6e304f31e2b6dac5fc0b4a6e9fd20b906466090720f4469a1de1fe7d2beebf5a49cc78
6
+ metadata.gz: 3b9655beb95eddddb1decba4e5249833da1c046503b2068bd5389ca155bb775be0dcbf3c183dbed12c64ce6588ab5f43e0b1806589436fd15e6e288b61a53464
7
+ data.tar.gz: 98f726b0e9636c94ff4a949abfef0674c5f43ded288c1d98c22835a5ad89780fa9c133ec29e7f0de13f4a737f54aff4992c5d40ce66edb9b9291151952a63fb8
@@ -7,15 +7,16 @@ PATH
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- addressable (2.3.8)
11
- builder (3.2.2)
12
- coderay (1.1.1)
13
- coveralls (0.8.13)
14
- json (~> 1.8)
15
- simplecov (~> 0.11.0)
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.1)
18
- tins (~> 1.6.0)
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.2.5)
31
+ diff-lcs (1.3)
31
32
  docile (1.1.5)
32
- gherkin (4.0.0)
33
- json (1.8.3)
34
- json-schema (2.6.2)
35
- addressable (~> 2.3.8)
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.1)
38
+ multi_json (1.12.2)
38
39
  multi_test (0.1.2)
39
- pry (0.10.3)
40
+ pry (0.10.4)
40
41
  coderay (~> 1.1.0)
41
42
  method_source (~> 0.8.1)
42
43
  slop (~> 3.4)
43
- rake (11.1.2)
44
- regexp-examples (1.2.1)
45
- rspec (3.4.0)
46
- rspec-core (~> 3.4.0)
47
- rspec-expectations (~> 3.4.0)
48
- rspec-mocks (~> 3.4.0)
49
- rspec-core (3.4.4)
50
- rspec-support (~> 3.4.0)
51
- rspec-expectations (3.4.0)
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.4.0)
54
- rspec-mocks (3.4.1)
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.4.0)
57
- rspec-support (3.4.1)
58
- simplecov (0.11.2)
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 (~> 1.8)
62
+ json (>= 1.8, < 3)
61
63
  simplecov-html (~> 0.10.0)
62
- simplecov-html (0.10.0)
64
+ simplecov-html (0.10.2)
63
65
  slop (3.6.0)
64
- term-ansicolor (1.3.2)
66
+ term-ansicolor (1.6.0)
65
67
  tins (~> 1.0)
66
- thor (0.19.1)
67
- tins (1.6.0)
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.12.5
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
+ }
@@ -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
- obj[k] = nil unless v.has_key?(:type)
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
@@ -1,3 +1,3 @@
1
1
  module JsonTestData
2
- VERSION = '1.1.3'
2
+ VERSION = '1.2.0'
3
3
  end
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.1.3
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: 2016-06-16 00:00:00.000000000 Z
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.5.1
176
+ rubygems_version: 2.6.11
175
177
  signing_key:
176
178
  specification_version: 4
177
- summary: json_test_data-1.1.3
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