Sha256: 12e6cc008783055fb6f8bf9a0552c7931df86d5c44a30878015d6cd850c91a3a

Contents?: true

Size: 1.68 KB

Versions: 3

Compression:

Stored size: 1.68 KB

Contents

require File.dirname(__FILE__) + '/spec_helper'
require 'xsd_explanation_provider'

describe XsdExplanationProvider do
  let(:logger){
    logger = Logger.new(STDOUT)
    logger.level = Logger::WARN
    logger
  }

  let(:populator){
    XsdPopulator.new(:xsd_file => File.expand_path(File.join(File.dirname(__FILE__), 'examples', 'ddex-ern-v36.xsd')), :logger => logger)
  }

  let(:provider){
    XsdExplanationProvider.new(:data => {:xsd_reader => populator.xsd_reader}, :logger => logger)
  }

  it "requires an xsd reader" do
    msg = expect{ XsdExplanationProvider.new(:logger => logger).take(:something) }.to raise_error(RuntimeError, 'XsdExplanationProvider needs an xsd reader')
  end

  it "gives itself for complex elements" do
    expect(provider.take('NewReleaseMessage')).to eq provider
    expect(provider.take(['NewReleaseMessage', 'MessageHeader'])).to eq provider
  end

  it "gives the element type for simple elements" do
    expect(provider.take(['NewReleaseMessage', 'MessageHeader', 'MessageId'])).to eq 'xs:string'
  end

  it "gives the attribute type for attributes" do
    expect(provider.take(['NewReleaseMessage', 'MessageHeader', '@LanguageAndScriptCode'])).to eq 'xs:string'
  end

  it "is the default fallback provider for XsdPopulators without a specified provider" do
    expect(populator.provider.class).to eq XsdExplanationProvider
    xml = populator.populate_element(['NewReleaseMessage', 'MessageHeader', 'MessageSender'])
    # puts xml
    doc = Nokogiri.XML(xml)
    expect(doc.at('/MessageSender/PartyId').text).to eq 'xs:string'
    expect(doc.at('/MessageSender').attributes['LanguageAndScriptCode'].value).to eq 'xs:string'
  end
end # describe XsdExplanationProvider

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
xsd-populator-0.2.1 spec/xsd_explanation_provider_spec.rb
xsd-populator-0.2.0 spec/xsd_explanation_provider_spec.rb
xsd-populator-0.1.0 spec/xsd_explanation_provider_spec.rb