json_test_data 0.8.0 → 0.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b86fdfb10c18e8084d78373027dde9f12496835
4
- data.tar.gz: 86d998ef02cb7fd786d8940d5fe076066ae90d77
3
+ metadata.gz: ac719ac362b258edeb0f24b3b1881fbf22cf6a7e
4
+ data.tar.gz: 574370a7adcc59916a5511eddaffc0e7b9cae0c2
5
5
  SHA512:
6
- metadata.gz: 9ba51ec9788cdb8d85ad7d18333858c1a6a8458c88fb7a2985376de15b7dcc02f98060fd925cf4aaeac1c370bf88546df728783a207adff0660db742702f179e
7
- data.tar.gz: 99b1056605ed53221ad7a273c9ab41ad60e58b780a75248cf9265882f12e0cd8b1d37b84bb29c3d5b79c02a928f69010a6d0c72587f39f5114363d9a66e343e0
6
+ metadata.gz: 231e12051d09c67f053cffed733bda7df18be80e248808ef91677ad0ea9f924fd3b4b6c194998e9de1cedf4ac196b360a8a13d34b58a6c5ec6d1a088ffc6abe9
7
+ data.tar.gz: 3ef5d40037be62780f5037e43e001e31bc4be49f3d5639e549a0661d3226bde01a2361e3743916b2cfab4315cd887de4cccf0eec97ddb99b59d27a550ea9cd42
data/.travis.yml CHANGED
@@ -4,8 +4,8 @@ rvm:
4
4
  - 2.2.4
5
5
  - 2.3.1
6
6
  sudo: false
7
- before_install:
8
- - gem install regxing --version 0.1.0.beta
7
+ env:
8
+ - COVERAGE=true
9
9
  branches:
10
10
  only:
11
11
  - master
data/Gemfile CHANGED
@@ -2,4 +2,4 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'pry'
5
+ gem "pry"
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- json_test_data (0.8.0)
5
- regxing (~> 0.1.0)
4
+ json_test_data (0.9.0)
5
+ regexp-examples (~> 1.2)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
@@ -41,7 +41,7 @@ GEM
41
41
  method_source (~> 0.8.1)
42
42
  slop (~> 3.4)
43
43
  rake (11.1.2)
44
- regxing (0.1.0)
44
+ regexp-examples (1.2.1)
45
45
  rspec (3.4.0)
46
46
  rspec-core (~> 3.4.0)
47
47
  rspec-expectations (~> 3.4.0)
@@ -1,6 +1,6 @@
1
1
  require "coveralls"
2
2
 
3
- Coveralls.wear!
3
+ Coveralls.wear! if ENV["COVERAGE"] == "true"
4
4
 
5
5
  require_relative "../../lib/json_test_data"
6
6
  require_relative "../../lib/json_test_data/json_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"
15
+ s.add_dependency "regexp-examples", "~> 1.2"
16
16
 
17
17
  s.add_development_dependency "cucumber", "~> 2.1"
18
18
  s.add_development_dependency "rspec", "~> 3.4"
@@ -1,5 +1,5 @@
1
1
  require 'json'
2
- require 'regxing'
2
+ require 'regexp-examples'
3
3
 
4
4
  require_relative './json_test_data/json_schema'
5
5
 
@@ -4,8 +4,29 @@ module JsonTestData
4
4
  def create(schema)
5
5
  return schema.fetch(:enum).sample if schema.fetch(:enum, nil)
6
6
 
7
- len = schema.fetch(:maxLength, nil) || schema.fetch(:minLength, nil) || 1
8
- RegXing::Generator.new(/.{#{len}}/).generate!
7
+ pattern(schema).random_example
8
+ end
9
+
10
+ private
11
+
12
+ def pattern(schema)
13
+ if schema.fetch(:format, nil)
14
+ Regexp.new(formats.fetch(schema.fetch(:format)))
15
+ elsif schema.fetch(:pattern, nil)
16
+ Regexp.new(schema.fetch(:pattern))
17
+ else
18
+ len = schema.fetch(:maxLength, nil) || schema.fetch(:minLength, nil) || 1
19
+ /.{#{len}}/
20
+ end
21
+ end
22
+
23
+ def formats
24
+ {
25
+ "date-time" => /^\d{4}(\-\d{2}){2}T\d{2}\:\d{2}\:\d{2}(Z|[\+\-]\d{2}\:\d{2})$/,
26
+ "email" => /^\S+@\S+\.\S{1,5}$/,
27
+ "hostname" => /^[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9]$/,
28
+ "uri" => /^https?\:\/\/\S{1,10}\.\S{1,10}\.\S{2,5}$/
29
+ }
9
30
  end
10
31
  end
11
32
  end
@@ -56,5 +56,92 @@ describe JsonTestData::String do
56
56
  expect(described_class.create(object)).to be_in enum
57
57
  end
58
58
  end
59
+
60
+ context "with a pattern" do
61
+ let(:object) do
62
+ {
63
+ type: "string",
64
+ pattern: '\d{2,}.*'
65
+ }
66
+ end
67
+
68
+ it "returns a string" do
69
+ expect(described_class.create(object)).to be_a String
70
+ end
71
+
72
+ it "returns a string of numbers" do
73
+ expect(described_class.create(object)).to match(/\d+/)
74
+ end
75
+ end
76
+
77
+ context "with a format" do
78
+ context "date-time" do
79
+ let(:object) do
80
+ {
81
+ type: "string",
82
+ format: "date-time"
83
+ }
84
+ end
85
+
86
+ let(:datetime_pattern) do
87
+ /^\d{4}(\-\d{2}){2}T\d{2}\:\d{2}\:\d{2}(Z|[\+\-]\d{2}\:\d{2})$/
88
+ end
89
+
90
+ it "generates a valid datetime" do
91
+ expect(described_class.create(object)).to match(datetime_pattern)
92
+ end
93
+ end
94
+
95
+ context "email" do
96
+ let(:object) do
97
+ {
98
+ type: "string",
99
+ format: "email"
100
+ }
101
+ end
102
+
103
+ let(:email_pattern) do
104
+ /^\S+@\S+\.\S{1,5}$/
105
+ end
106
+
107
+ it "generates a valid e-mail" do
108
+ expect(described_class.create(object)).to match(email_pattern)
109
+ end
110
+ end
111
+
112
+ context "hostname" do
113
+ let(:object) do
114
+ {
115
+ type: "string",
116
+ format: "hostname"
117
+ }
118
+ end
119
+
120
+ let(:hostname_pattern) do
121
+ /^[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9]$/
122
+ end
123
+
124
+ it "generates a valid hostname" do
125
+ expect(described_class.create(object)).to match(hostname_pattern)
126
+ end
127
+ end
128
+
129
+ context "uri" do
130
+ let(:object) do
131
+ {
132
+ type: "string",
133
+ format: "uri"
134
+ }
135
+ end
136
+
137
+ let(:uri_pattern) do
138
+ /^https?\:\/\/\S{1,10}\.\S{1,10}\.\S{2,5}$/
139
+ end
140
+
141
+ it "generates a valid URI" do
142
+ expect(described_class.create(object)).to match(uri_pattern)
143
+ end
144
+ end
145
+ end
59
146
  end
60
147
  end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require "coveralls"
2
2
 
3
- Coveralls.wear!
3
+ Coveralls.wear! if ENV["COVERAGE"] == "true"
4
4
 
5
5
  require_relative "../lib/json_test_data"
6
6
  require_relative "../lib/json_test_data/json_schema"
data/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module JsonTestData
2
- VERSION = '0.8.0'
2
+ VERSION = '0.9.0'
3
3
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_test_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.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-05-21 00:00:00.000000000 Z
11
+ date: 2016-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: regxing
14
+ name: regexp-examples
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.0
19
+ version: '1.2'
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
26
+ version: '1.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: cucumber
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -173,7 +173,7 @@ rubyforge_project:
173
173
  rubygems_version: 2.5.1
174
174
  signing_key:
175
175
  specification_version: 4
176
- summary: json_test_data-0.8.0
176
+ summary: json_test_data-0.9.0
177
177
  test_files:
178
178
  - features/array_constraints.feature
179
179
  - features/data_types.feature