sk-api 1.0.6 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,9 +1,72 @@
1
1
  require 'test/unit'
2
+ require 'open-uri'
3
+ require 'pp'
2
4
  require File.dirname(__FILE__) + '/../lib/jsonschema'
3
5
 
4
6
  class JSONSchemaTest < Test::Unit::TestCase
7
+ def test_self_schema
8
+ data1 = {
9
+ "$schema"=> {
10
+ "properties"=> {
11
+ "name"=> {
12
+ "type"=> "string"
13
+ },
14
+ "age" => {
15
+ "type"=> "integer",
16
+ "maximum"=> 125,
17
+ "optional"=> true
18
+ }
19
+ }
20
+ },
21
+ "name" => "John Doe",
22
+ "age" => 30,
23
+ "type" => "object"
24
+ }
25
+ assert_nothing_raised{
26
+ JSON::Schema.validate(data1)
27
+ }
28
+ data2 = {
29
+ "$schema"=> {
30
+ "properties"=> {
31
+ "name"=> {
32
+ "type"=> "integer"
33
+ },
34
+ "age" => {
35
+ "type"=> "integer",
36
+ "maximum"=> 125,
37
+ "optional"=> true
38
+ }
39
+ }
40
+ },
41
+ "name" => "John Doe",
42
+ "age" => 30,
43
+ "type" => "object"
44
+ }
45
+ assert_raise(JSON::Schema::ValueError){
46
+ JSON::Schema.validate(data2)
47
+ }
48
+ data3 = {
49
+ "$schema"=> {
50
+ "properties"=> {
51
+ "name"=> {
52
+ "type"=> "integer"
53
+ },
54
+ "age" => {
55
+ "type"=> "integer",
56
+ "maximum"=> 125,
57
+ "optional"=> true
58
+ }
59
+ }
60
+ },
61
+ "name" => "John Doe",
62
+ }
63
+ assert_raise(JSON::Schema::ValueError){
64
+ JSON::Schema.validate(data3)
65
+ }
66
+ end
67
+
5
68
  def test_maximum
6
- schema = {
69
+ schema1 = {
7
70
  "type" => "object",
8
71
  "properties" => {
9
72
  "prop01" => {
@@ -32,6 +95,91 @@ class JSONSchemaTest < Test::Unit::TestCase
32
95
  "prop01"=> 9,
33
96
  "prop02"=> 21
34
97
  }
98
+ assert_nothing_raised{
99
+ JSON::Schema.validate(data1, schema1)
100
+ }
101
+ assert_nothing_raised{
102
+ JSON::Schema.validate(data2, schema1)
103
+ }
104
+ assert_raise(JSON::Schema::ValueError){
105
+ JSON::Schema.validate(data3, schema1)
106
+ }
107
+ assert_raise(JSON::Schema::ValueError){
108
+ JSON::Schema.validate(data4, schema1)
109
+ }
110
+ schema2 = {
111
+ "type" => "object",
112
+ "properties" => {
113
+ "prop01" => {
114
+ "type" => "number",
115
+ "maximum" => 10,
116
+ "maximumCanEqual" => true
117
+ },
118
+ "prop02" => {
119
+ "type" => "integer",
120
+ "maximum" => 20,
121
+ "maximumCanEqual" => false
122
+ }
123
+ }
124
+ }
125
+ data5 = {
126
+ "prop01"=> 10,
127
+ "prop02"=> 10
128
+ }
129
+ data6 = {
130
+ "prop01"=> 10,
131
+ "prop02"=> 19
132
+ }
133
+ data7 = {
134
+ "prop01"=> 11,
135
+ "prop02"=> 19
136
+ }
137
+ data8 = {
138
+ "prop01"=> 9,
139
+ "prop02"=> 20
140
+ }
141
+ assert_nothing_raised{
142
+ JSON::Schema.validate(data5, schema2)
143
+ }
144
+ assert_nothing_raised{
145
+ JSON::Schema.validate(data6, schema2)
146
+ }
147
+ assert_raise(JSON::Schema::ValueError){
148
+ JSON::Schema.validate(data7, schema2)
149
+ }
150
+ assert_raise(JSON::Schema::ValueError){
151
+ JSON::Schema.validate(data8, schema2)
152
+ }
153
+ end
154
+
155
+ def test_extends
156
+ schema = {
157
+ "type" => "object",
158
+ "properties" => {
159
+ "prop01" => {
160
+ "type" => "number",
161
+ "minimum" => 10
162
+ },
163
+ "prop02" => {}
164
+ }
165
+ }
166
+ schema["properties"]["prop02"]["extends"] = schema["properties"]["prop01"]
167
+ data1 = {
168
+ "prop01"=> 21,
169
+ "prop02"=> 21
170
+ }
171
+ data2 = {
172
+ "prop01"=> 10,
173
+ "prop02"=> 20
174
+ }
175
+ data3 = {
176
+ "prop01"=> 9,
177
+ "prop02"=> 21
178
+ }
179
+ data4 = {
180
+ "prop01"=> 10,
181
+ "prop02"=> 9
182
+ }
35
183
  assert_nothing_raised{
36
184
  JSON::Schema.validate(data1, schema)
37
185
  }
@@ -47,9 +195,9 @@ class JSONSchemaTest < Test::Unit::TestCase
47
195
  end
48
196
 
49
197
  def test_minimum
50
- schema = {
198
+ schema1 = {
51
199
  "type" => "object",
52
- "properties" => {
200
+ "properties" => {
53
201
  "prop01" => {
54
202
  "type" => "number",
55
203
  "minimum" => 10
@@ -77,16 +225,52 @@ class JSONSchemaTest < Test::Unit::TestCase
77
225
  "prop02"=> 19
78
226
  }
79
227
  assert_nothing_raised{
80
- JSON::Schema.validate(data1, schema)
228
+ JSON::Schema.validate(data1, schema1)
81
229
  }
82
230
  assert_nothing_raised{
83
- JSON::Schema.validate(data2, schema)
231
+ JSON::Schema.validate(data2, schema1)
84
232
  }
85
233
  assert_raise(JSON::Schema::ValueError){
86
- JSON::Schema.validate(data3, schema)
234
+ JSON::Schema.validate(data3, schema1)
87
235
  }
88
236
  assert_raise(JSON::Schema::ValueError){
89
- JSON::Schema.validate(data4, schema)
237
+ JSON::Schema.validate(data4, schema1)
238
+ }
239
+ schema2 = {
240
+ "type" => "object",
241
+ "properties" => {
242
+ "prop01" => {
243
+ "type" => "number",
244
+ "minimum" => 10,
245
+ "minimumCanEqual" => false
246
+ },
247
+ "prop02" => {
248
+ "type" => "integer",
249
+ "minimum" => 19,
250
+ "minimumCanEqual" => true
251
+ }
252
+ }
253
+ }
254
+ data5 = {
255
+ "prop01"=> 11,
256
+ "prop02"=> 19
257
+ }
258
+ data6 = {
259
+ "prop01"=> 10,
260
+ "prop02"=> 19
261
+ }
262
+ data7 = {
263
+ "prop01"=> 11,
264
+ "prop02"=> 18
265
+ }
266
+ assert_nothing_raised{
267
+ JSON::Schema.validate(data5, schema2)
268
+ }
269
+ assert_raise(JSON::Schema::ValueError){
270
+ JSON::Schema.validate(data6, schema2)
271
+ }
272
+ assert_raise(JSON::Schema::ValueError){
273
+ JSON::Schema.validate(data7, schema2)
90
274
  }
91
275
  end
92
276
 
@@ -392,9 +576,22 @@ class JSONSchemaTest < Test::Unit::TestCase
392
576
  data2 = {
393
577
  "prop02"=>"blah"
394
578
  }
579
+ data3 = {
580
+ "prop01"=>"blah"
581
+ }
582
+ data4 = {
583
+ "prop01"=>"test",
584
+ "prop03"=>1,
585
+ }
395
586
  assert_raise(JSON::Schema::ValueError){
396
587
  JSON::Schema.validate(data2, schema)
397
588
  }
589
+ assert_raise(JSON::Schema::ValueError){
590
+ JSON::Schema.validate(data3, schema)
591
+ }
592
+ assert_raise(JSON::Schema::ValueError){
593
+ JSON::Schema.validate(data4, schema)
594
+ }
398
595
  end
399
596
 
400
597
  def test_default
@@ -799,4 +996,3 @@ class JSONSchemaTest < Test::Unit::TestCase
799
996
  end
800
997
  end
801
998
  end
802
-
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sk-api
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 19
4
5
  prerelease: false
5
6
  segments:
6
7
  - 1
8
+ - 1
7
9
  - 0
8
- - 6
9
- version: 1.0.6
10
+ version: 1.1.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Georg Leciejewski
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-04-16 00:00:00 +02:00
18
+ date: 2010-11-07 00:00:00 +01:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: rspec
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 3
27
30
  segments:
28
31
  - 0
29
32
  version: "0"
@@ -45,9 +48,11 @@ files:
45
48
  - Rakefile
46
49
  - VERSION
47
50
  - init.rb
48
- - lib/activeresource_patches/README
49
- - lib/activeresource_patches/base.rb
50
- - lib/activeresource_patches/validations.rb
51
+ - lib/patches/README
52
+ - lib/patches/ar2/base.rb
53
+ - lib/patches/ar2/validations.rb
54
+ - lib/patches/ar3/base.rb
55
+ - lib/patches/ar3/validations.rb
51
56
  - lib/resources/address.rb
52
57
  - lib/resources/base.rb
53
58
  - lib/resources/client.rb
@@ -81,23 +86,27 @@ rdoc_options:
81
86
  require_paths:
82
87
  - lib
83
88
  required_ruby_version: !ruby/object:Gem::Requirement
89
+ none: false
84
90
  requirements:
85
91
  - - ">="
86
92
  - !ruby/object:Gem::Version
93
+ hash: 3
87
94
  segments:
88
95
  - 0
89
96
  version: "0"
90
97
  required_rubygems_version: !ruby/object:Gem::Requirement
98
+ none: false
91
99
  requirements:
92
100
  - - ">="
93
101
  - !ruby/object:Gem::Version
102
+ hash: 3
94
103
  segments:
95
104
  - 0
96
105
  version: "0"
97
106
  requirements: []
98
107
 
99
108
  rubyforge_project:
100
- rubygems_version: 1.3.6
109
+ rubygems_version: 1.3.7
101
110
  signing_key:
102
111
  specification_version: 3
103
112
  summary: Interact with SalesKing