json-generator 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/json-generator.rb +2 -0
- data/lib/json/generator.rb +3 -0
- data/lib/json/generator/array_attribute.rb +2 -0
- data/lib/json/generator/attribute_factory.rb +4 -1
- data/lib/json/generator/basic_attribute.rb +2 -0
- data/lib/json/generator/boolean_attribute.rb +2 -0
- data/lib/json/generator/dereferencer.rb +2 -0
- data/lib/json/generator/empty_attribute.rb +2 -0
- data/lib/json/generator/integer_attribute.rb +2 -0
- data/lib/json/generator/number_attribute.rb +9 -0
- data/lib/json/generator/object_attribute.rb +2 -0
- data/lib/json/generator/string_attribute.rb +2 -0
- data/lib/json/generator/version.rb +3 -1
- data/spec/json/generator/array_attribute_spec.rb +3 -1
- data/spec/json/generator/attribute_factory_spec.rb +36 -7
- data/spec/json/generator/basic_attribute_spec.rb +2 -0
- data/spec/json/generator/boolean_attribute_spec.rb +3 -1
- data/spec/json/generator/dereferencer_spec.rb +2 -0
- data/spec/json/generator/empty_attribute_spec.rb +2 -0
- data/spec/json/generator/integer_attribute_spec.rb +3 -1
- data/spec/json/generator/number_attribute_spec.rb +19 -0
- data/spec/json/generator/object_attribute_spec.rb +2 -0
- data/spec/json/generator/string_attribute_spec.rb +3 -1
- data/spec/json/generator_spec.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- metadata +7 -4
data/lib/json-generator.rb
CHANGED
data/lib/json/generator.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require "json/generator/version"
|
2
4
|
|
3
5
|
require "json/generator/basic_attribute"
|
@@ -7,6 +9,7 @@ require "json/generator/integer_attribute"
|
|
7
9
|
require "json/generator/array_attribute"
|
8
10
|
require "json/generator/object_attribute"
|
9
11
|
require "json/generator/boolean_attribute"
|
12
|
+
require "json/generator/number_attribute"
|
10
13
|
require "json/generator/attribute_factory"
|
11
14
|
require "json/generator/dereferencer"
|
12
15
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module JSON
|
2
4
|
module Generator
|
3
5
|
class AttributeFactory
|
@@ -7,8 +9,9 @@ module JSON
|
|
7
9
|
'integer' => IntegerAttribute,
|
8
10
|
'array' => ArrayAttribute,
|
9
11
|
'boolean' => BooleanAttribute,
|
10
|
-
|
12
|
+
'number' => NumberAttribute,
|
11
13
|
}
|
14
|
+
CLASSES.default = EmptyAttribute
|
12
15
|
|
13
16
|
def self.create(properties)
|
14
17
|
CLASSES[Array(properties['type']).first].new(properties)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module JSON
|
2
4
|
module Generator
|
3
5
|
describe ArrayAttribute do
|
@@ -7,7 +9,7 @@ module JSON
|
|
7
9
|
|
8
10
|
describe '#generate' do
|
9
11
|
context 'with minItems' do
|
10
|
-
it 'should generate an array with
|
12
|
+
it 'should generate an array with the minimum number of items of the expected type' do
|
11
13
|
stubbed_item = stub('item', :generate => 'foo')
|
12
14
|
AttributeFactory.should_receive(:create).twice.
|
13
15
|
with('type' => 'dummy_type').
|
@@ -1,10 +1,12 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module JSON
|
2
4
|
module Generator
|
3
5
|
describe AttributeFactory do
|
4
6
|
describe '.create' do
|
5
7
|
let(:attribute) { stub('attribute') }
|
6
8
|
|
7
|
-
context 'when type is
|
9
|
+
context 'when type is string' do
|
8
10
|
let(:properties) { {'type' => 'string'} }
|
9
11
|
|
10
12
|
it 'should create a StringAttribute' do
|
@@ -13,7 +15,7 @@ module JSON
|
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
16
|
-
context 'when type is
|
18
|
+
context 'when type is object' do
|
17
19
|
let(:properties) { {'type' => 'object'} }
|
18
20
|
|
19
21
|
it 'should create an ObjectAttribute' do
|
@@ -22,7 +24,7 @@ module JSON
|
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
25
|
-
context 'when type is
|
27
|
+
context 'when type is array' do
|
26
28
|
let(:properties) { {'type' => 'array'} }
|
27
29
|
|
28
30
|
it 'should create an ArrayAttribute' do
|
@@ -31,7 +33,7 @@ module JSON
|
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
34
|
-
context 'when type is
|
36
|
+
context 'when type is integer' do
|
35
37
|
let(:properties) { {'type' => 'integer'} }
|
36
38
|
|
37
39
|
it 'should create an IntegerAttribute' do
|
@@ -40,7 +42,7 @@ module JSON
|
|
40
42
|
end
|
41
43
|
end
|
42
44
|
|
43
|
-
context 'when type is
|
45
|
+
context 'when type is boolean' do
|
44
46
|
let(:properties) { {'type' => 'boolean'} }
|
45
47
|
|
46
48
|
it 'should create a BooleanAttribute' do
|
@@ -49,10 +51,37 @@ module JSON
|
|
49
51
|
end
|
50
52
|
end
|
51
53
|
|
52
|
-
context 'when
|
54
|
+
context 'when type is number' do
|
55
|
+
let(:properties) { {'type' => 'number'} }
|
56
|
+
|
57
|
+
it 'should create a NumberAttribute' do
|
58
|
+
NumberAttribute.should_receive(:new).with(properties).and_return(attribute)
|
59
|
+
described_class.create(properties).should == attribute
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'when type is null' do
|
64
|
+
let(:properties) { {'type' => 'null'} }
|
65
|
+
|
66
|
+
it 'should create an EmptyAttribute' do
|
67
|
+
EmptyAttribute.should_receive(:new).with(properties).and_return(attribute)
|
68
|
+
described_class.create(properties).should == attribute
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'when type is any' do
|
73
|
+
let(:properties) { {'type' => 'any'} }
|
74
|
+
|
75
|
+
it 'should create an EmptyAttribute' do
|
76
|
+
EmptyAttribute.should_receive(:new).with(properties).and_return(attribute)
|
77
|
+
described_class.create(properties).should == attribute
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'when there is more than one type' do
|
53
82
|
let(:properties) { {'type' => ['string', 'boolean']} }
|
54
83
|
|
55
|
-
it 'should create
|
84
|
+
it 'should create an attribute for the first type' do
|
56
85
|
StringAttribute.should_receive(:new).with(properties).and_return(attribute)
|
57
86
|
described_class.create(properties).should == attribute
|
58
87
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module JSON
|
2
4
|
module Generator
|
3
5
|
describe BooleanAttribute do
|
@@ -7,7 +9,7 @@ module JSON
|
|
7
9
|
|
8
10
|
describe '#generate' do
|
9
11
|
context 'without a default value' do
|
10
|
-
it 'should return
|
12
|
+
it 'should return false' do
|
11
13
|
described_class.new({'type' => 'boolean'}).generate.should == false
|
12
14
|
end
|
13
15
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module JSON
|
2
4
|
module Generator
|
3
5
|
describe IntegerAttribute do
|
@@ -7,7 +9,7 @@ module JSON
|
|
7
9
|
|
8
10
|
describe '#generate' do
|
9
11
|
context 'without a default value' do
|
10
|
-
it 'should return
|
12
|
+
it 'should return 0' do
|
11
13
|
described_class.new({'type' => 'integer'}).generate.should == 0
|
12
14
|
end
|
13
15
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module JSON
|
4
|
+
module Generator
|
5
|
+
describe NumberAttribute do
|
6
|
+
it 'should be a BasicAttribute' do
|
7
|
+
described_class.new(nil).should be_kind_of(BasicAttribute)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#generate' do
|
11
|
+
context 'without a default value' do
|
12
|
+
it 'should return 0.0' do
|
13
|
+
described_class.new({'type' => 'number'}).generate.should == 0.0
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module JSON
|
2
4
|
module Generator
|
3
5
|
describe StringAttribute do
|
@@ -7,7 +9,7 @@ module JSON
|
|
7
9
|
|
8
10
|
describe '#generate' do
|
9
11
|
context 'without a default value' do
|
10
|
-
it 'should return
|
12
|
+
it 'should return bar' do
|
11
13
|
described_class.new({'type' => 'string'}).generate.should == 'bar'
|
12
14
|
end
|
13
15
|
end
|
data/spec/json/generator_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json-generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json-schema
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- lib/json/generator/dereferencer.rb
|
90
90
|
- lib/json/generator/empty_attribute.rb
|
91
91
|
- lib/json/generator/integer_attribute.rb
|
92
|
+
- lib/json/generator/number_attribute.rb
|
92
93
|
- lib/json/generator/object_attribute.rb
|
93
94
|
- lib/json/generator/string_attribute.rb
|
94
95
|
- lib/json/generator/version.rb
|
@@ -101,6 +102,7 @@ files:
|
|
101
102
|
- spec/json/generator/dereferencer_spec.rb
|
102
103
|
- spec/json/generator/empty_attribute_spec.rb
|
103
104
|
- spec/json/generator/integer_attribute_spec.rb
|
105
|
+
- spec/json/generator/number_attribute_spec.rb
|
104
106
|
- spec/json/generator/object_attribute_spec.rb
|
105
107
|
- spec/json/generator/string_attribute_spec.rb
|
106
108
|
- spec/json/generator_spec.rb
|
@@ -120,7 +122,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
120
122
|
version: '0'
|
121
123
|
segments:
|
122
124
|
- 0
|
123
|
-
hash:
|
125
|
+
hash: 1309752435689555124
|
124
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
127
|
none: false
|
126
128
|
requirements:
|
@@ -129,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
131
|
version: '0'
|
130
132
|
segments:
|
131
133
|
- 0
|
132
|
-
hash:
|
134
|
+
hash: 1309752435689555124
|
133
135
|
requirements: []
|
134
136
|
rubyforge_project:
|
135
137
|
rubygems_version: 1.8.24
|
@@ -144,6 +146,7 @@ test_files:
|
|
144
146
|
- spec/json/generator/dereferencer_spec.rb
|
145
147
|
- spec/json/generator/empty_attribute_spec.rb
|
146
148
|
- spec/json/generator/integer_attribute_spec.rb
|
149
|
+
- spec/json/generator/number_attribute_spec.rb
|
147
150
|
- spec/json/generator/object_attribute_spec.rb
|
148
151
|
- spec/json/generator/string_attribute_spec.rb
|
149
152
|
- spec/json/generator_spec.rb
|