json_test_data 0.7.0 → 0.8.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: cd5fc0f13b45a7b50daab986818743a431b880cb
4
- data.tar.gz: 40aa2874ac448a29b96e7e078ed33785b20b1804
3
+ metadata.gz: 9b86fdfb10c18e8084d78373027dde9f12496835
4
+ data.tar.gz: 86d998ef02cb7fd786d8940d5fe076066ae90d77
5
5
  SHA512:
6
- metadata.gz: 9f20126004662b200b649b8ce669c706ee76f4c6a658932b58ef0ef91fa664ef78a06621c57691cd4d129f41be6cd20190cf3d18c9e0a760afb5026518c6f503
7
- data.tar.gz: e9664ea19d7bffbebee080bd1ec7ecfbf439f4e4897dcffb4fc2dd5348a8de2d213aff9028f724226b91e3b82485b4c227ed812cb1c2a4f03445778ad83d9a88
6
+ metadata.gz: 9ba51ec9788cdb8d85ad7d18333858c1a6a8458c88fb7a2985376de15b7dcc02f98060fd925cf4aaeac1c370bf88546df728783a207adff0660db742702f179e
7
+ data.tar.gz: 99b1056605ed53221ad7a273c9ab41ad60e58b780a75248cf9265882f12e0cd8b1d37b84bb29c3d5b79c02a928f69010a6d0c72587f39f5114363d9a66e343e0
data/.travis.yml CHANGED
@@ -2,7 +2,7 @@ language: ruby
2
2
  rvm:
3
3
  - 2.1.8
4
4
  - 2.2.4
5
- - 2.3.0
5
+ - 2.3.1
6
6
  sudo: false
7
7
  before_install:
8
8
  - gem install regxing --version 0.1.0.beta
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
+
5
+ gem 'pry'
data/Gemfile.lock CHANGED
@@ -1,14 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- json_test_data (0.7.0)
5
- regxing (~> 0.1.0.beta)
4
+ json_test_data (0.8.0)
5
+ regxing (~> 0.1.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  addressable (2.3.8)
11
11
  builder (3.2.2)
12
+ coderay (1.1.1)
12
13
  coveralls (0.8.13)
13
14
  json (~> 1.8)
14
15
  simplecov (~> 0.11.0)
@@ -30,10 +31,15 @@ GEM
30
31
  docile (1.1.5)
31
32
  gherkin (3.2.0)
32
33
  json (1.8.3)
33
- json-schema (2.6.1)
34
+ json-schema (2.6.2)
34
35
  addressable (~> 2.3.8)
35
- multi_json (1.11.3)
36
+ method_source (0.8.2)
37
+ multi_json (1.12.1)
36
38
  multi_test (0.1.2)
39
+ pry (0.10.3)
40
+ coderay (~> 1.1.0)
41
+ method_source (~> 0.8.1)
42
+ slop (~> 3.4)
37
43
  rake (11.1.2)
38
44
  regxing (0.1.0)
39
45
  rspec (3.4.0)
@@ -54,6 +60,7 @@ GEM
54
60
  json (~> 1.8)
55
61
  simplecov-html (~> 0.10.0)
56
62
  simplecov-html (0.10.0)
63
+ slop (3.6.0)
57
64
  term-ansicolor (1.3.2)
58
65
  tins (~> 1.0)
59
66
  thor (0.19.1)
@@ -68,6 +75,7 @@ DEPENDENCIES
68
75
  json (~> 1.7)
69
76
  json-schema (~> 2.6)
70
77
  json_test_data!
78
+ pry
71
79
  rake (~> 11.0)
72
80
  rspec (~> 3.4)
73
81
 
data/ISSUE_TEMPLATE.md ADDED
@@ -0,0 +1,45 @@
1
+ ## Summary
2
+
3
+ <!-- This sections are meant as guidance for you. If some doesn't fit, skip them. In general: Please provide as much information as you can to help us solving your problem -->
4
+
5
+ <!--- Provide a general summary of the issue in the Title above -->
6
+
7
+ ## Expected Behavior
8
+
9
+ <!--- If you're describing a bug, tell us what should happen -->
10
+ <!--- If you're suggesting a change/improvement, tell us how it should work -->
11
+
12
+ ## Current Behavior
13
+
14
+ <!--- If describing a bug, tell us what happens instead of the expected behavior -->
15
+ <!--- If suggesting a change/improvement, explain the difference from current behavior -->
16
+
17
+ <!--- If you have got some output place it in the code block below. Otherwise remove it. -->
18
+ ~~~
19
+ ~~~
20
+
21
+ ## Possible Solution
22
+
23
+ <!--- Not obligatory, but suggest a fix/reason for the bug, -->
24
+ <!--- or ideas how to implement the addition or change -->
25
+
26
+ ## Steps to Reproduce (for bugs)
27
+
28
+ <!--- Provide a link to a live example, or an unambiguous set of steps to -->
29
+ <!--- reproduce this bug. Include code to reproduce, if relevant -->
30
+ 1.
31
+ 2.
32
+ 3.
33
+ 4.
34
+
35
+ ## Context
36
+
37
+ <!--- How has this issue affected you? What are you trying to accomplish? -->
38
+ <!--- Providing context helps us come up with a solution that is most useful in the real world -->
39
+
40
+ ## Your Environment
41
+
42
+ <!--- Include as many relevant details about the environment you experienced the bug in -->
43
+ * Version used:
44
+ * Operating System and version:
45
+ * Link to your project:
data/README.md CHANGED
@@ -8,7 +8,7 @@ gem install json_test_data
8
8
  ```
9
9
  Alternatively, it can be included in your Gemfile:
10
10
  ```ruby
11
- gem "json_test_data", "~> 0.6.0"
11
+ gem "json_test_data", "~> 0.7.0"
12
12
  ```
13
13
  To use it, first require it, then generate the test data using:
14
14
  ```ruby
@@ -32,3 +32,24 @@ Feature: String constraints
32
32
  """
33
33
  When I run the JSON data generator
34
34
  Then the output should match the schema
35
+
36
+ Scenario: Possible values given
37
+ Given the following JSON schema:
38
+ """json
39
+ {
40
+ "$schema": "http://json-schema.org/draft-04/schema#",
41
+ "type": "object",
42
+ "properties": {
43
+ "name": {
44
+ "type": "string",
45
+ "enum": [
46
+ "foo",
47
+ "bar",
48
+ "baz"
49
+ ]
50
+ }
51
+ }
52
+ }
53
+ """
54
+ When I run the JSON data generator
55
+ Then the output should match the schema
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.platform = Gem::Platform::RUBY
13
13
  s.required_ruby_version = ">= 2.1.0"
14
14
 
15
- s.add_dependency "regxing", "~> 0.1.0.beta"
15
+ s.add_dependency "regxing", "~> 0.1.0"
16
16
 
17
17
  s.add_development_dependency "cucumber", "~> 2.1"
18
18
  s.add_development_dependency "rspec", "~> 3.4"
@@ -6,6 +6,8 @@ module JsonTestData
6
6
 
7
7
  class << self
8
8
  def create(schema)
9
+ return schema.fetch(:enum).sample if schema.fetch(:enum, nil)
10
+
9
11
  factor = schema.fetch(:multipleOf, nil)
10
12
  minimum, maximum = schema.fetch(:minimum, nil), schema.fetch(:maximum, nil)
11
13
 
@@ -57,12 +59,15 @@ module JsonTestData
57
59
  type == :integer && !@value.is_a?(Integer)
58
60
  end
59
61
 
62
+ def adjust_by!(step_size)
63
+ @value -= step_size if value_too_high?
64
+ @value += step_size if value_too_low?
65
+ end
66
+
60
67
  def adjust!
61
68
  while !value_divisible_by_factor? || value_too_low? || value_too_high? || should_be_int_but_isnt?
62
69
  adjust_for_divisibility!
63
-
64
- @value -= step_size if value_too_high?
65
- @value += step_size if value_too_low?
70
+ adjust_by!(step_size)
66
71
  end
67
72
 
68
73
  @value ||= 1
@@ -1,11 +1,11 @@
1
1
  module JsonTestData
2
2
  class String
3
- extend RegXing
4
-
5
3
  class << self
6
4
  def create(schema)
5
+ return schema.fetch(:enum).sample if schema.fetch(:enum, nil)
6
+
7
7
  len = schema.fetch(:maxLength, nil) || schema.fetch(:minLength, nil) || 1
8
- Generator.new(/.{#{len}}/).generate!
8
+ RegXing::Generator.new(/.{#{len}}/).generate!
9
9
  end
10
10
  end
11
11
  end
@@ -70,7 +70,7 @@ module JsonTestData
70
70
  object.fetch(:minItems, nil) || object[:minItems] = 1
71
71
 
72
72
  if object.fetch(:items, nil) && object.fetch(:items).has_key?(:type)
73
- Array.new(object.fetch(:minItems)).map {|item| generate(object.fetch(:items)) }
73
+ Array.new(object.fetch(:minItems)).map { generate(object.fetch(:items)) }
74
74
  else
75
75
  Array.new(object.fetch(:minItems))
76
76
  end
@@ -54,6 +54,20 @@ describe JsonTestData::Number do
54
54
  end
55
55
  end
56
56
 
57
+ context "enum constraint" do
58
+ let(:enum) { [ 5, 10, 15, 20, 25 ] }
59
+ let(:object) do
60
+ {
61
+ type: "number",
62
+ enum: enum
63
+ }
64
+ end
65
+
66
+ it "chooses from the given array" do
67
+ expect(described_class.create(object)).to be_in enum
68
+ end
69
+ end
70
+
57
71
  context "multiple constraints" do
58
72
  context "maximum and minimum" do
59
73
  let(:maximum) { 1 }
@@ -41,5 +41,20 @@ describe JsonTestData::String do
41
41
  expect(described_class.create(object).length).to eq 8
42
42
  end
43
43
  end
44
+
45
+ context "with enum" do
46
+ let(:enum) { ["foo", "bar", "baz"] }
47
+
48
+ let(:object) do
49
+ {
50
+ type: "string",
51
+ enum: enum
52
+ }
53
+ end
54
+
55
+ it "returns a string from the list" do
56
+ expect(described_class.create(object)).to be_in enum
57
+ end
58
+ end
44
59
  end
45
60
  end
@@ -0,0 +1,7 @@
1
+ require "rspec/expectations"
2
+
3
+ RSpec::Matchers.define :be_in do |expected|
4
+ match do |actual|
5
+ expected.include?(actual)
6
+ end
7
+ end
data/spec/spec_helper.rb CHANGED
@@ -8,6 +8,7 @@ require_relative "../lib/json_test_data/data_structures/string"
8
8
  require_relative "../lib/json_test_data/data_structures/number"
9
9
  require_relative "./matchers/number_matchers"
10
10
  require_relative "./matchers/json_schema_matchers"
11
+ require_relative "./matchers/array_matchers"
11
12
 
12
13
  RSpec.configure do |config|
13
14
  config.expect_with :rspec do |expectations|
data/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module JsonTestData
2
- VERSION = '0.7.0'
2
+ VERSION = '0.8.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: 0.7.0
4
+ version: 0.8.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-04-25 00:00:00.000000000 Z
11
+ date: 2016-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: regxing
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.0.beta
19
+ version: 0.1.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.0.beta
26
+ version: 0.1.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: cucumber
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -120,6 +120,7 @@ files:
120
120
  - ".travis.yml"
121
121
  - Gemfile
122
122
  - Gemfile.lock
123
+ - ISSUE_TEMPLATE.md
123
124
  - LICENSE
124
125
  - README.md
125
126
  - Rakefile
@@ -143,6 +144,7 @@ files:
143
144
  - spec/json_test_data/data_structures/number_spec.rb
144
145
  - spec/json_test_data/data_structures/string_spec.rb
145
146
  - spec/json_test_data/json_schema_spec.rb
147
+ - spec/matchers/array_matchers.rb
146
148
  - spec/matchers/json_schema_matchers.rb
147
149
  - spec/matchers/number_matchers.rb
148
150
  - spec/spec_helper.rb
@@ -171,7 +173,7 @@ rubyforge_project:
171
173
  rubygems_version: 2.5.1
172
174
  signing_key:
173
175
  specification_version: 4
174
- summary: json_test_data-0.7.0
176
+ summary: json_test_data-0.8.0
175
177
  test_files:
176
178
  - features/array_constraints.feature
177
179
  - features/data_types.feature
@@ -187,6 +189,7 @@ test_files:
187
189
  - spec/json_test_data/data_structures/number_spec.rb
188
190
  - spec/json_test_data/data_structures/string_spec.rb
189
191
  - spec/json_test_data/json_schema_spec.rb
192
+ - spec/matchers/array_matchers.rb
190
193
  - spec/matchers/json_schema_matchers.rb
191
194
  - spec/matchers/number_matchers.rb
192
195
  - spec/spec_helper.rb