2020-04-15 15:43:38 +02:00
|
|
|
RSpec.describe GeoArea, type: :model do
|
|
|
|
describe '#area' do
|
2020-07-20 16:50:12 +02:00
|
|
|
let(:geo_area) { build(:geo_area, :polygon) }
|
2020-04-15 15:43:38 +02:00
|
|
|
|
2020-10-01 11:32:56 +02:00
|
|
|
it { expect(geo_area.area).to eq(103.6) }
|
2020-04-15 15:43:38 +02:00
|
|
|
end
|
|
|
|
|
2020-09-23 14:37:07 +02:00
|
|
|
describe '#area (hourglass polygon)' do
|
|
|
|
let(:geo_area) { build(:geo_area, :hourglass_polygon) }
|
|
|
|
|
2020-10-01 11:32:56 +02:00
|
|
|
it { expect(geo_area.area).to eq(32.4) }
|
2020-09-23 14:37:07 +02:00
|
|
|
end
|
|
|
|
|
2020-04-15 15:43:38 +02:00
|
|
|
describe '#length' do
|
2020-07-20 16:50:12 +02:00
|
|
|
let(:geo_area) { build(:geo_area, :line_string) }
|
2020-04-15 15:43:38 +02:00
|
|
|
|
2020-10-01 11:33:15 +02:00
|
|
|
it { expect(geo_area.length).to eq(21.2) }
|
2020-04-15 15:43:38 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
describe '#location' do
|
2020-07-20 16:50:12 +02:00
|
|
|
let(:geo_area) { build(:geo_area, :point) }
|
2020-04-15 15:43:38 +02:00
|
|
|
|
2020-09-23 11:34:10 +02:00
|
|
|
it { expect(geo_area.location).to eq("46°32'19\"N 2°25'42\"E") }
|
2020-04-15 15:43:38 +02:00
|
|
|
end
|
2020-05-05 10:26:13 +02:00
|
|
|
|
|
|
|
describe '#rgeo_geometry' do
|
2020-07-20 16:50:12 +02:00
|
|
|
let(:geo_area) { build(:geo_area, geometry: geometry) }
|
2020-05-05 10:26:13 +02:00
|
|
|
|
|
|
|
context 'invalid' do
|
|
|
|
let(:geometry) do
|
|
|
|
{
|
|
|
|
"type" => "MultiPolygon",
|
|
|
|
"coordinates" => [
|
|
|
|
[
|
|
|
|
[
|
|
|
|
[5.894422531127931, 48.22810341752755],
|
|
|
|
[5.893049240112306, 48.22427237832278],
|
|
|
|
[5.892534255981446, 48.22593062452037],
|
|
|
|
[5.892791748046875, 48.2260449843468],
|
|
|
|
[5.894422531127931, 48.229933066408215],
|
|
|
|
[5.894422531127931, 48.22810341752755]
|
|
|
|
]
|
|
|
|
],
|
|
|
|
[
|
|
|
|
[
|
|
|
|
[5.8950233459472665, 48.229933066408215],
|
|
|
|
[5.893478393554688, 48.228961073585126],
|
|
|
|
[5.892791748046875, 48.228903896961775],
|
|
|
|
[5.892705917358398, 48.230390468407535],
|
|
|
|
[5.8950233459472665, 48.229933066408215]
|
|
|
|
]
|
|
|
|
],
|
|
|
|
[
|
|
|
|
[
|
|
|
|
[5.893220901489259, 48.229246955743626],
|
|
|
|
[5.893392562866212, 48.22884672027457],
|
|
|
|
[5.892705917358398, 48.22878954352343],
|
|
|
|
[5.892019271850587, 48.22856083588024],
|
|
|
|
[5.892019271850587, 48.2277031731152],
|
|
|
|
[5.890989303588868, 48.22787470681807],
|
|
|
|
[5.889959335327149, 48.22787470681807],
|
|
|
|
[5.890560150146485, 48.22838930447709],
|
|
|
|
[5.890645980834962, 48.22878954352343],
|
|
|
|
[5.890989303588868, 48.229018250144584],
|
|
|
|
[5.892362594604493, 48.22930413198368],
|
|
|
|
[5.893220901489259, 48.229246955743626]
|
|
|
|
]
|
|
|
|
]
|
|
|
|
]
|
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
it { expect(geo_area.rgeo_geometry).to be_nil }
|
|
|
|
end
|
|
|
|
end
|
2020-04-15 15:43:38 +02:00
|
|
|
end
|