Sha256: 4ddb7ac8d4e7170a49f685721f82b111684560537ab94de7c506a990b571f6c9

Contents?: true

Size: 1.9 KB

Versions: 3

Compression:

Stored size: 1.9 KB

Contents

require 'spec_helper'

describe SchemaTools::RefResolver do
  context 'class methods' do
    it 'should handle simple json pointer' do
      obj = { "bla" => {
        "blub" => :success
      }}

      pointer = "bla/blub"
      found = SchemaTools::RefResolver._retrieve_pointer_from_object pointer, obj
      # not sure what I am doing wrong here, but:
      #    found.should eq :success
      # does not work because
      #    undefined method `eq'
      found.should eq :success

      found = SchemaTools::RefResolver._retrieve_pointer_from_object "non/existant/path", obj
      found.should  be_nil
    end

    it 'should handle json pointer arrays' do
      obj = { "bla" => {
        "blub" => :success,
        "bling" => [3,2,1]
      }}
      pointer = "bla/bling/2"
      found = SchemaTools::RefResolver._retrieve_pointer_from_object pointer, obj
      found.should eq 1

      pointer = "bla/bling/3"
      found = SchemaTools::RefResolver._retrieve_pointer_from_object pointer, obj
      found.should be_nil

    end

    it 'should handle embedded json pointer arrays' do
      obj = { "bla" => {
        "blub" => :success,
        "bling" => [
          {"num" => 3},
          {"num" => 2},
          {"num" => 1}
        ]
      }}
      pointer = "bla/bling/1/num"
      found = SchemaTools::RefResolver._retrieve_pointer_from_object pointer, obj
      found.should eq 2
    end
  end

  it 'should throw an exception on an invalid path' do
    obj = {}
    expect {
      SchemaTools::RefResolver.load_json_pointer("bla")
    }.to raise_error
  end

  it 'should reject absolute URI part' do
    obj = {}
    expect {
      SchemaTools::RefResolver.load_json_pointer("http://www.example.com/#some/stuff")
    }.to raise_error
  end

  it 'should load local ref' do
    pointer = "./basic_definitions.json#definitions"
    obj = SchemaTools::RefResolver.load_json_pointer(pointer)
    obj.length.should eq 2
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
json_schema_tools-0.2.6 spec/schema_tools/ref_resolver_spec.rb
json_schema_tools-0.2.5 spec/schema_tools/ref_resolver_spec.rb
json_schema_tools-0.2.4 spec/schema_tools/ref_resolver_spec.rb