json_test_data 0.8.0 → 0.9.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: 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