Sha256: 517ea03d681e42a117b3a79f0d68f7059e63288acc4b5ce90eff1b4dc3087ec4

Contents?: true

Size: 1.81 KB

Versions: 18

Compression:

Stored size: 1.81 KB

Contents

shared_examples 'a geographic property' do |type_name|
  let(:subject) { klass.new(property_name, coordinates) }

  describe '#type' do
    it { expect(subject.type).to eq(type_name) }
  end

  describe '#srid' do
    it { expect(subject.srid).to eq(srid) }
  end

  describe '#value' do
    it { expect(subject.value).to eq(coordinates) }
  end

  describe '#value=' do
    it { expect { subject.value = 'invalid' }.to raise_error(ArgumentError) }

    it {
      subject.value = new_value_as_text
      expect(subject.value).to eq(new_value)
      expect(subject.srid).to eq(0)
    }

    it {
      subject.value = new_value
      expect(subject.value).to eq(new_value)
      expect(subject.srid).to eq(4326)
    }
  end

  describe '#url_value' do
    it { expect(subject.url_value).to eq(property_as_text) }
  end

  describe '#json_value' do
    it 'renders property value as a hash' do
      expect(subject.json_value).to eq(property_as_json)
    end
  end

  describe '#to_xml' do
    let(:builder) do
      Nokogiri::XML::Builder.new do |xml|
        xml.entry(Frodo::Entity::XML_NAMESPACES) do
          subject.to_xml(xml)
        end
      end
    end
    let(:xml) { Nokogiri::XML(builder.to_xml) }
    let(:property_xml) { xml.root.element_children.first.to_s }

    it { expect(property_xml).to be_equivalent_to(property_as_xml) }
  end

  describe '.from_xml' do
    let(:subject) { klass.from_xml(property_xml) }
    let(:xml_doc) do
      Nokogiri::XML::Builder.new do |xml|
        xml.entry(Frodo::Entity::XML_NAMESPACES)
      end.to_xml
    end
    let(:property_xml) do
      document = Nokogiri::XML(xml_doc)
      document.root << property_as_xml
      document.remove_namespaces!.root.element_children.first
    end

    it { expect(subject.value).to eq(coordinates) }
    it { expect(subject.srid).to eq(srid) }
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
frodo-0.12.8 spec/frodo/properties/geography/shared_examples.rb
frodo-0.12.7 spec/frodo/properties/geography/shared_examples.rb
frodo-0.12.6 spec/frodo/properties/geography/shared_examples.rb
frodo-0.12.5 spec/frodo/properties/geography/shared_examples.rb
frodo-0.12.4 spec/frodo/properties/geography/shared_examples.rb
frodo-0.12.2 spec/frodo/properties/geography/shared_examples.rb
frodo-0.12.1 spec/frodo/properties/geography/shared_examples.rb
frodo-0.12.0 spec/frodo/properties/geography/shared_examples.rb
frodo-0.11.0 spec/frodo/properties/geography/shared_examples.rb
frodo-0.10.8 spec/frodo/properties/geography/shared_examples.rb
frodo-0.10.7 spec/frodo/properties/geography/shared_examples.rb
frodo-0.10.6 spec/frodo/properties/geography/shared_examples.rb
frodo-0.10.5 spec/frodo/properties/geography/shared_examples.rb
frodo-0.10.4 spec/frodo/properties/geography/shared_examples.rb
frodo-0.10.3 spec/frodo/properties/geography/shared_examples.rb
frodo-0.10.2 spec/frodo/properties/geography/shared_examples.rb
frodo-0.10.1 spec/frodo/properties/geography/shared_examples.rb
frodo-0.10.0 spec/frodo/properties/geography/shared_examples.rb