jschema 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +7 -0
  2. data/lib/jschema.rb +41 -0
  3. data/lib/jschema/json_reference.rb +65 -0
  4. data/lib/jschema/schema.rb +84 -0
  5. data/lib/jschema/schema_ref.rb +13 -0
  6. data/lib/jschema/simple_validator.rb +86 -0
  7. data/lib/jschema/string_length_validator.rb +17 -0
  8. data/lib/jschema/validator.rb +14 -0
  9. data/lib/jschema/validator/all_of.rb +29 -0
  10. data/lib/jschema/validator/any_of.rb +29 -0
  11. data/lib/jschema/validator/dependencies.rb +63 -0
  12. data/lib/jschema/validator/enum.rb +23 -0
  13. data/lib/jschema/validator/format.rb +75 -0
  14. data/lib/jschema/validator/items.rb +79 -0
  15. data/lib/jschema/validator/max_items.rb +28 -0
  16. data/lib/jschema/validator/max_length.rb +23 -0
  17. data/lib/jschema/validator/max_properties.rb +31 -0
  18. data/lib/jschema/validator/maximum.rb +31 -0
  19. data/lib/jschema/validator/min_items.rb +28 -0
  20. data/lib/jschema/validator/min_length.rb +23 -0
  21. data/lib/jschema/validator/min_properties.rb +31 -0
  22. data/lib/jschema/validator/minimum.rb +31 -0
  23. data/lib/jschema/validator/multiple_of.rb +32 -0
  24. data/lib/jschema/validator/not.rb +23 -0
  25. data/lib/jschema/validator/one_of.rb +29 -0
  26. data/lib/jschema/validator/pattern.rb +36 -0
  27. data/lib/jschema/validator/properties.rb +106 -0
  28. data/lib/jschema/validator/required.rb +34 -0
  29. data/lib/jschema/validator/type.rb +57 -0
  30. data/lib/jschema/validator/unique_items.rb +27 -0
  31. data/test/assert_received.rb +15 -0
  32. data/test/string_length_validator_tests.rb +18 -0
  33. data/test/test_assert_received.rb +39 -0
  34. data/test/test_integration.rb +30 -0
  35. data/test/test_json_reference.rb +84 -0
  36. data/test/test_schema.rb +125 -0
  37. data/test/test_schema_ref.rb +11 -0
  38. data/test/test_validator.rb +29 -0
  39. data/test/validator/argument_is_array_of_schemas_tests.rb +22 -0
  40. data/test/validator/assertions.rb +56 -0
  41. data/test/validator/properties_limit_tests.rb +13 -0
  42. data/test/validator/schema_validation_helpers.rb +29 -0
  43. data/test/validator/test_all_of.rb +30 -0
  44. data/test/validator/test_any_of.rb +31 -0
  45. data/test/validator/test_dependencies.rb +106 -0
  46. data/test/validator/test_enum.rb +30 -0
  47. data/test/validator/test_format.rb +70 -0
  48. data/test/validator/test_items.rb +113 -0
  49. data/test/validator/test_max_items.rb +26 -0
  50. data/test/validator/test_max_length.rb +30 -0
  51. data/test/validator/test_max_properties.rb +29 -0
  52. data/test/validator/test_maximum.rb +58 -0
  53. data/test/validator/test_min_items.rb +27 -0
  54. data/test/validator/test_min_length.rb +30 -0
  55. data/test/validator/test_min_properties.rb +29 -0
  56. data/test/validator/test_minimum.rb +58 -0
  57. data/test/validator/test_multiple_of.rb +38 -0
  58. data/test/validator/test_not.rb +32 -0
  59. data/test/validator/test_one_of.rb +31 -0
  60. data/test/validator/test_pattern.rb +32 -0
  61. data/test/validator/test_properties.rb +136 -0
  62. data/test/validator/test_required.rb +30 -0
  63. data/test/validator/test_simple_validator.rb +100 -0
  64. data/test/validator/test_type.rb +97 -0
  65. data/test/validator/test_unique_items.rb +30 -0
  66. data/test/validator/validation_against_schemas_tests.rb +24 -0
  67. metadata +144 -0
@@ -0,0 +1,97 @@
1
+ require 'minitest/autorun'
2
+ require 'jschema'
3
+
4
+ require_relative 'assertions'
5
+
6
+ class TestType < Minitest::Test
7
+ include Assertions
8
+
9
+ def test_that_argument_is_a_string_or_an_array
10
+ assert_raises_unless 'type', :string, :array
11
+ end
12
+
13
+ def test_that_argument_is_a_unique_string_array
14
+ assert_raises_unless_string_array 'type'
15
+ end
16
+
17
+ def test_passing_string_validation
18
+ assert validator('string').valid?('str')
19
+ end
20
+
21
+ def test_failing_string_validation
22
+ refute validator('string').valid?(1)
23
+ end
24
+
25
+ def test_passing_integer_validation
26
+ assert validator('integer').valid?(1)
27
+ assert validator('integer').valid?(2**64)
28
+ end
29
+
30
+ def test_failing_integer_validation
31
+ refute validator('integer').valid?('str')
32
+ end
33
+
34
+ def test_passing_array_validation
35
+ assert validator('array').valid?([])
36
+ end
37
+
38
+ def test_failing_array_validation
39
+ refute validator('array').valid?('str')
40
+ end
41
+
42
+ def test_passing_boolean_validation
43
+ assert validator('boolean').valid?(true)
44
+ assert validator('boolean').valid?(false)
45
+ end
46
+
47
+ def test_failing_boolean_validation
48
+ refute validator('boolean').valid?(nil)
49
+ refute validator('boolean').valid?(0)
50
+ end
51
+
52
+ def test_passing_null_validation
53
+ assert validator('null').valid?(nil)
54
+ end
55
+
56
+ def test_failing_null_validation
57
+ refute validator('null').valid?(false)
58
+ refute validator('null').valid?('')
59
+ end
60
+
61
+ def test_passing_object_validation
62
+ assert validator('object').valid?('test' => 123)
63
+ end
64
+
65
+ def test_failing_object_validation
66
+ refute validator('object').valid?([])
67
+ end
68
+
69
+ def test_passing_number_validation
70
+ assert validator('number').valid?(1)
71
+ assert validator('number').valid?(1.2)
72
+ assert validator('number').valid?(BigDecimal.new('1.2'))
73
+ assert validator('number').valid?(2**64)
74
+ end
75
+
76
+ def test_failing_number_validation
77
+ refute validator('number').valid?('1')
78
+ end
79
+
80
+ def test_passing_multiple_type_validation
81
+ mvalidator = validator ['string', 'null']
82
+ assert mvalidator.valid?('str')
83
+ assert mvalidator.valid?(nil)
84
+ end
85
+
86
+ def test_failing_multiple_type_validation
87
+ mvalidator = validator ['string', 'null']
88
+ refute mvalidator.valid?(1)
89
+ refute mvalidator.valid?(false)
90
+ end
91
+
92
+ private
93
+
94
+ def validator_class
95
+ JSchema::Validator::Type
96
+ end
97
+ end
@@ -0,0 +1,30 @@
1
+ require 'minitest/autorun'
2
+ require 'jschema'
3
+
4
+ require_relative 'assertions'
5
+
6
+ class TestUniqueItems < Minitest::Test
7
+ include Assertions
8
+
9
+ def test_that_argument_is_boolean
10
+ assert_raises_unless 'uniqueItems', :boolean
11
+ end
12
+
13
+ def test_passing_validation_when_unique_items_is_true
14
+ assert validator(true).valid?([1, 2])
15
+ end
16
+
17
+ def test_passing_validation_when_unique_items_is_false
18
+ assert validator(false).valid?([1, 1])
19
+ end
20
+
21
+ def test_failing_validation
22
+ refute validator(true).valid?([1, 1])
23
+ end
24
+
25
+ private
26
+
27
+ def validator_class
28
+ JSchema::Validator::UniqueItems
29
+ end
30
+ end
@@ -0,0 +1,24 @@
1
+ require_relative 'argument_is_array_of_schemas_tests'
2
+
3
+ module ValidationAgainstSchemasTests
4
+ include SchemaValidationHelpers
5
+ include ArgumentIsArrayOfSchemasTests
6
+
7
+ def test_passing_validation_against_one_schema
8
+ stub_schema_validations(true) do
9
+ assert validator([generate_schema]).valid?('test')
10
+ end
11
+ end
12
+
13
+ def test_failing_validation_against_one_schema
14
+ stub_schema_validations(false) do
15
+ refute validator([generate_schema]).valid?('test')
16
+ end
17
+ end
18
+
19
+ def test_failing_validation_all_validations_fail
20
+ stub_schema_validations(false, false) do
21
+ refute validator([generate_schema, generate_schema]).valid?('test')
22
+ end
23
+ end
24
+ end
metadata ADDED
@@ -0,0 +1,144 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jschema
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Konstantin Papkovskiy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-29 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Implementation of JSON Schema Draft 4
14
+ email: konstantin@papkovskiy.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/jschema.rb
20
+ - lib/jschema/json_reference.rb
21
+ - lib/jschema/schema.rb
22
+ - lib/jschema/schema_ref.rb
23
+ - lib/jschema/simple_validator.rb
24
+ - lib/jschema/string_length_validator.rb
25
+ - lib/jschema/validator.rb
26
+ - lib/jschema/validator/all_of.rb
27
+ - lib/jschema/validator/any_of.rb
28
+ - lib/jschema/validator/dependencies.rb
29
+ - lib/jschema/validator/enum.rb
30
+ - lib/jschema/validator/format.rb
31
+ - lib/jschema/validator/items.rb
32
+ - lib/jschema/validator/max_items.rb
33
+ - lib/jschema/validator/max_length.rb
34
+ - lib/jschema/validator/max_properties.rb
35
+ - lib/jschema/validator/maximum.rb
36
+ - lib/jschema/validator/min_items.rb
37
+ - lib/jschema/validator/min_length.rb
38
+ - lib/jschema/validator/min_properties.rb
39
+ - lib/jschema/validator/minimum.rb
40
+ - lib/jschema/validator/multiple_of.rb
41
+ - lib/jschema/validator/not.rb
42
+ - lib/jschema/validator/one_of.rb
43
+ - lib/jschema/validator/pattern.rb
44
+ - lib/jschema/validator/properties.rb
45
+ - lib/jschema/validator/required.rb
46
+ - lib/jschema/validator/type.rb
47
+ - lib/jschema/validator/unique_items.rb
48
+ - test/assert_received.rb
49
+ - test/string_length_validator_tests.rb
50
+ - test/test_assert_received.rb
51
+ - test/test_integration.rb
52
+ - test/test_json_reference.rb
53
+ - test/test_schema.rb
54
+ - test/test_schema_ref.rb
55
+ - test/test_validator.rb
56
+ - test/validator/argument_is_array_of_schemas_tests.rb
57
+ - test/validator/assertions.rb
58
+ - test/validator/properties_limit_tests.rb
59
+ - test/validator/schema_validation_helpers.rb
60
+ - test/validator/test_all_of.rb
61
+ - test/validator/test_any_of.rb
62
+ - test/validator/test_dependencies.rb
63
+ - test/validator/test_enum.rb
64
+ - test/validator/test_format.rb
65
+ - test/validator/test_items.rb
66
+ - test/validator/test_max_items.rb
67
+ - test/validator/test_max_length.rb
68
+ - test/validator/test_max_properties.rb
69
+ - test/validator/test_maximum.rb
70
+ - test/validator/test_min_items.rb
71
+ - test/validator/test_min_length.rb
72
+ - test/validator/test_min_properties.rb
73
+ - test/validator/test_minimum.rb
74
+ - test/validator/test_multiple_of.rb
75
+ - test/validator/test_not.rb
76
+ - test/validator/test_one_of.rb
77
+ - test/validator/test_pattern.rb
78
+ - test/validator/test_properties.rb
79
+ - test/validator/test_required.rb
80
+ - test/validator/test_simple_validator.rb
81
+ - test/validator/test_type.rb
82
+ - test/validator/test_unique_items.rb
83
+ - test/validator/validation_against_schemas_tests.rb
84
+ homepage: http://github.com/Soylent/jschema
85
+ licenses:
86
+ - MIT
87
+ metadata: {}
88
+ post_install_message:
89
+ rdoc_options: []
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 1.9.3
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ requirements: []
103
+ rubyforge_project:
104
+ rubygems_version: 2.2.0
105
+ signing_key:
106
+ specification_version: 4
107
+ summary: JSON Schema implementation
108
+ test_files:
109
+ - test/assert_received.rb
110
+ - test/string_length_validator_tests.rb
111
+ - test/test_assert_received.rb
112
+ - test/test_integration.rb
113
+ - test/test_json_reference.rb
114
+ - test/test_schema.rb
115
+ - test/test_schema_ref.rb
116
+ - test/test_validator.rb
117
+ - test/validator/argument_is_array_of_schemas_tests.rb
118
+ - test/validator/assertions.rb
119
+ - test/validator/properties_limit_tests.rb
120
+ - test/validator/schema_validation_helpers.rb
121
+ - test/validator/test_all_of.rb
122
+ - test/validator/test_any_of.rb
123
+ - test/validator/test_dependencies.rb
124
+ - test/validator/test_enum.rb
125
+ - test/validator/test_format.rb
126
+ - test/validator/test_items.rb
127
+ - test/validator/test_max_items.rb
128
+ - test/validator/test_max_length.rb
129
+ - test/validator/test_max_properties.rb
130
+ - test/validator/test_maximum.rb
131
+ - test/validator/test_min_items.rb
132
+ - test/validator/test_min_length.rb
133
+ - test/validator/test_min_properties.rb
134
+ - test/validator/test_minimum.rb
135
+ - test/validator/test_multiple_of.rb
136
+ - test/validator/test_not.rb
137
+ - test/validator/test_one_of.rb
138
+ - test/validator/test_pattern.rb
139
+ - test/validator/test_properties.rb
140
+ - test/validator/test_required.rb
141
+ - test/validator/test_simple_validator.rb
142
+ - test/validator/test_type.rb
143
+ - test/validator/test_unique_items.rb
144
+ - test/validator/validation_against_schemas_tests.rb