diff --git a/lib/json-schema/attributes/minitems.rb b/lib/json-schema/attributes/minitems.rb index d1e4e028..71cefdae 100644 --- a/lib/json-schema/attributes/minitems.rb +++ b/lib/json-schema/attributes/minitems.rb @@ -4,7 +4,7 @@ module JSON class Schema class MinItemsAttribute < Attribute def self.validate(current_schema, data, fragments, processor, validator, options = {}) - if data.is_a?(Array) && (data.compact.size < current_schema.schema['minItems']) + if data.is_a?(Array) && (data.size < current_schema.schema['minItems']) message = "The property '#{build_fragment(fragments)}' did not contain a minimum number of items #{current_schema.schema['minItems']}" validation_error(processor, message, fragments, current_schema, self, options[:record_errors]) end diff --git a/test/test_minitems.rb b/test/test_minitems.rb new file mode 100644 index 00000000..8257a9f4 --- /dev/null +++ b/test/test_minitems.rb @@ -0,0 +1,18 @@ +require 'test/unit' +require File.dirname(__FILE__) + '/../lib/json-schema' + +class MinItemsTest < Test::Unit::TestCase + def test_minitems_nils + schema = { + "type" => "array", + "minItems" => 1, + "items" => { "type" => "object" } + } + data = [nil] + + errors = JSON::Validator.fully_validate(schema, [nil]) + assert_equal(errors.length, 1) + assert(errors[0] !~ /minimum/) + assert(errors[0] =~ /NilClass/) + end +end