# 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