File: any_of_ref_schema_test.rb

package info (click to toggle)
ruby-json-schema 6.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 960 kB
  • sloc: ruby: 6,373; makefile: 4
file content (37 lines) | stat: -rw-r--r-- 1,584 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
require File.expand_path('support/test_helper', __dir__)

class AnyOfRefSchemaTest < Minitest::Test
  def schema
    schema_fixture_path('any_of_ref_schema.json')
  end

  def test_any_of_ref_schema
    assert_valid schema, data_fixture_path('any_of_ref_data.json')
  end

  def test_any_of_ref_subschema_errors
    data = %({"names": ["jack"]})
    errors = JSON::Validator.fully_validate(schema, data, errors_as_objects: true)
    nested_errors = errors[0][:errors]

    assert_equal(%i[anyof_0 anyof_1 anyof_2], nested_errors.keys, 'should have nested errors for each anyOf subschema')
    assert_match(%r{the property '#/names/0' value "jack" did not match the regex 'john'}i, nested_errors[:anyof_0][0][:message])
    assert_match(%r{the property '#/names/0' value "jack" did not match the regex 'jane'}i, nested_errors[:anyof_1][0][:message])
    assert_match(%r{the property '#/names/0' value "jack" did not match the regex 'jimmy'}i, nested_errors[:anyof_2][0][:message])
  end

  def test_any_of_ref_message
    data = %({"names": ["jack"]})
    errors = JSON::Validator.fully_validate(schema, data)
    expected_message = "The property '#/names/0' of type string did not match one or more of the required schemas. The schema specific errors were:

- anyOf #0:
    - The property '#/names/0' value \"jack\" did not match the regex 'john'
- anyOf #1:
    - The property '#/names/0' value \"jack\" did not match the regex 'jane'
- anyOf #2:
    - The property '#/names/0' value \"jack\" did not match the regex 'jimmy'"

    assert_equal(expected_message, errors[0])
  end
end