spec/element_spec.rb in xsd-reader-0.0.1 vs spec/element_spec.rb in xsd-reader-0.1.0

- old
+ new

@@ -1,25 +1,28 @@ require File.dirname(__FILE__) + '/spec_helper' describe XsdReader::Element do - before :all do - @reader ||= XsdReader::XML.new(:xsd_file => File.expand_path(File.join(File.dirname(__FILE__), 'examples', 'ddex-ern-v36.xsd'))) - @element = @reader.elements[0] - end + let(:reader){ + XsdReader::XML.new(:xsd_file => File.expand_path(File.join(File.dirname(__FILE__), 'examples', 'ddex-v36', 'ddex-ern-v36.xsd'))) + } + let(:element){ + reader.elements[0] + } + it "gives the element's name" do - expect(@element.name).to eq 'NewReleaseMessage' + expect(element.name).to eq 'NewReleaseMessage' end it "gives a complex type reader" do - expect(@element.complex_type.class).to eq XsdReader::ComplexType + expect(element.complex_type.class).to eq XsdReader::ComplexType end it "gives child elements defined within a complex type" do # byebug - expect(@element.elements.map(&:name)).to eq [ + expect(element.elements.map(&:name)).to eq [ "MessageHeader", "UpdateIndicator", "IsBackfill", "CatalogTransfer", "WorkList", @@ -29,28 +32,28 @@ "ReleaseList", "DealList"] end describe "External type definition" do - before :each do - @element = @element.elements.first - end + let(:header){ + element.elements.first + } it "gives the type name" do - expect(@element.type_name).to eq 'MessageHeader' + expect(header.type_name).to eq 'MessageHeader' end it "gives the type namespace" do - expect(@element.type_namespace).to eq 'ern' + expect(header.type_namespace).to eq 'ern' end it "gives the type string" do - expect(@element.type).to eq 'ern:MessageHeader' + expect(header.type).to eq 'ern:MessageHeader' end it "gives the remote complex_type, linked by type" do - expect(@element.complex_type.name).to eq 'MessageHeader' + expect(header.complex_type.name).to eq 'MessageHeader' end it "includes child elements defined in external the complex type type definitions" do expected = [ "MessageThreadId", @@ -62,19 +65,19 @@ "MessageCreatedDateTime", "MessageAuditTrail", "Comment", "MessageControlType"] - expect(@element.elements.map(&:name)).to eq expected - expect(@element.complex_type.all_elements.map(&:name)).to eq expected + expect(header.elements.map(&:name)).to eq expected + expect(header.complex_type.all_elements.map(&:name)).to eq expected end end describe "#elements" do it "includes elements within a choice node" do - el = @element.elements[3] + el = element.elements[3] expect(el.name).to eq 'CatalogTransfer' elements_without = ["CatalogTransferCompleted", "EffectiveTransferDate", "CatalogReleaseReferenceList", "TransferringFrom", "TransferringTo"] elements_with = ["CatalogTransferCompleted", "EffectiveTransferDate", "CatalogReleaseReferenceList", "TerritoryCode", "ExcludedTerritoryCode", "TransferringFrom", "TransferringTo"] expect(el.complex_type.sequences.map{|seq| seq.elements}.flatten.map(&:name)).to eq elements_without expect(el.complex_type.all_elements.map(&:name)).to eq elements_with @@ -109,22 +112,22 @@ "RightsClaimPolicy", "WebPolicy"] # byebug - expect(@reader['NewReleaseMessage']['DealList']['ReleaseDeal']['Deal']['DealTerms'].elements.map(&:name)).to eq expected + expect(reader['NewReleaseMessage']['DealList']['ReleaseDeal']['Deal']['DealTerms'].elements.map(&:name)).to eq expected end end # # this is pretty slow... # describe "#family_tree" do # before :each do - # @element = @reader.elements[0] + # element = reader.elements[0] # end # it "gives a family tree as a nested list of children, keys being nodes name, values being either another hash of children of strings with the names of the children" do - # expect(@element.family_tree.keys).to eq [ + # expect(element.family_tree.keys).to eq [ # "MessageHeader", # "UpdateIndicator", # "IsBackfill", # "CatalogTransfer", # "WorkList", @@ -133,37 +136,37 @@ # "CollectionList", # "ReleaseList", # "DealList" # ] - # expect(@element.family_tree['ResourceList'].keys).to eq [ + # expect(element.family_tree['ResourceList'].keys).to eq [ # "SoundRecording", # "MIDI", # "Video", # "Image", # "Text", # "SheetMusic", # "Software", # "UserDefinedResource" # ] - # expect(@element.family_tree['DealList']['ReleaseDeal']['Deal']['DealTerms']['RightsClaimPolicy']['Condition']['Unit']).to eq 'type:UnitOfConditionValue' + # expect(element.family_tree['DealList']['ReleaseDeal']['Deal']['DealTerms']['RightsClaimPolicy']['Condition']['Unit']).to eq 'type:UnitOfConditionValue' # end # end describe '#attributes' do it "gives attributes defined in a complexType" do expected = [ "MessageSchemaVersionId", "BusinessProfileVersionId", "ReleaseProfileVersionId", "LanguageAndScriptCode"] - expect(@element.attributes.map(&:name)).to eq expected - expect(@element.complex_type.attributes.map(&:name)).to eq expected + expect(element.attributes.map(&:name)).to eq expected + expect(element.complex_type.attributes.map(&:name)).to eq expected end it "gives attributes defined in a simpleContent extension" do - expect(@element['ResourceList']['SoundRecording']['SoundRecordingDetailsByTerritory']['DisplayArtist']['ArtistRole'].attributes.map(&:name)).to eq ["Namespace", "UserDefinedValue"] + expect(element['ResourceList']['SoundRecording']['SoundRecordingDetailsByTerritory']['DisplayArtist']['ArtistRole'].attributes.map(&:name)).to eq ["Namespace", "UserDefinedValue"] end end end