# encoding: utf-8 describe "Cartographic coordinates" do let(:smods_rec) { Stanford::Mods::Record.new } let(:no_coord) do <<-EOF Scale 1:500,000 EOF end let(:with_coords) do <<-EOF Scale 1:500,000 (W16°--E28°/N13°--S15°). EOF end let(:with_bad_data) do <<-EOF Scale 1:500,000 (Unknown). EOF end context "coordinates" do it "returns empty array if no coordinates in the mods" do smods_rec.from_str(no_coord) expect(smods_rec.coordinates).to eq([""]) end it "returns decimal representation of latitude and longitude" do smods_rec.from_str(with_coords) expect(smods_rec.coordinates).to eq(["(W16°--E28°/N13°--S15°)."]) end end describe "#coordinates_as_bbox" do it "returns empty array if no coordinates in the mods" do smods_rec.from_str(no_coord) expect(smods_rec.point_bbox).to eq([]) end it "returns empty array if bad data is in the mods" do smods_rec.from_str(with_bad_data) expect(smods_rec.point_bbox).to eq([]) end it "returns decimal representation of latitude and longitude" do smods_rec.from_str(with_coords) expect(smods_rec.point_bbox).to eq(["-16.0 -15.0 28.0 13.0"]) end end describe "#coordinates_as_envelope" do it "returns empty array if no coordinates in the mods" do smods_rec.from_str(no_coord) expect(smods_rec.coordinates_as_envelope).to eq([]) end it "returns empty array if bad data is in the mods" do smods_rec.from_str(with_bad_data) expect(smods_rec.coordinates_as_envelope).to eq([]) end it "returns decimal representation of latitude and longitude" do smods_rec.from_str(with_coords) expect(smods_rec.coordinates_as_envelope).to eq(["ENVELOPE(-16.0, 28.0, 13.0, -15.0)"]) end end end # describe Cartographic coordinates describe '#geo_extension_as_envelope' do let(:modsbody) { '' } let(:mods) do rec = Stanford::Mods::Record.new rec.from_str %(#{modsbody}) rec end it 'without data, returns emtpy array' do expect(mods.geo_extensions_as_envelope).to eq [] end describe 'with geo extension bounding-box data' do let(:modsbody) do <<-EOF image/jpeg Image -122.191292 37.4063388 -122.149475 37.4435369 EOF end it 'returns an empty array' do allow(mods.mods_ng_xml).to receive(:extension).and_raise(RuntimeError) expect(mods.geo_extensions_as_envelope).to eq [] end it 'extract envelope strings' do expect(mods.geo_extensions_as_envelope).to eq ["ENVELOPE(-122.191292, -122.149475, 37.4435369, 37.4063388)"] end end describe 'with geo-extension point data' do let(:modsbody) do <<-EOF image/jpeg Image 41.8898687280593 12.4913412520789 EOF end it 'extract point strings' do expect(mods.geo_extensions_point_data).to eq ["12.4913412520789 41.8898687280593"] end end end