Note that in the budgets wizard test we now create district with no associated geozone, so the text "all city" will appear in the districts table too, meaning we can't use `within "section", text: "All city" do` anymore since it would result in an ambiguous match. Co-Authored-By: Julian Herrero <microweb10@gmail.com> Co-Authored-By: Javi Martín <javim@elretirao.net>
80 lines
2.2 KiB
Ruby
80 lines
2.2 KiB
Ruby
require "rails_helper"
|
|
|
|
describe Geozone do
|
|
let(:geozone) { build(:geozone) }
|
|
|
|
it "is valid" do
|
|
expect(geozone).to be_valid
|
|
end
|
|
|
|
it "is not valid without a name" do
|
|
geozone.name = nil
|
|
expect(geozone).not_to be_valid
|
|
end
|
|
|
|
it "is valid without geojson" do
|
|
geozone.geojson = nil
|
|
expect(geozone).to be_valid
|
|
end
|
|
|
|
it "is not valid with invalid geojson file format" do
|
|
geozone.geojson = '{"geo\":{"type":"Incorrect key","coordinates": [
|
|
[40.8792937308316, -3.9259027239257],
|
|
[40.8788966596619, -3.9249047078766],
|
|
[40.8789131852224, -3.9247799675785]]}}'
|
|
expect(geozone).not_to be_valid
|
|
end
|
|
|
|
describe "#safe_to_destroy?" do
|
|
let(:geozone) { create(:geozone) }
|
|
|
|
it "is true when not linked to other models" do
|
|
expect(geozone).to be_safe_to_destroy
|
|
end
|
|
|
|
it "is false when already linked to user" do
|
|
create(:user, geozone: geozone)
|
|
expect(geozone).not_to be_safe_to_destroy
|
|
end
|
|
|
|
it "is false when already linked to proposal" do
|
|
create(:proposal, geozone: geozone)
|
|
expect(geozone).not_to be_safe_to_destroy
|
|
end
|
|
|
|
it "is false when already linked to debate" do
|
|
create(:debate, geozone: geozone)
|
|
expect(geozone).not_to be_safe_to_destroy
|
|
end
|
|
|
|
it "is false when already linked to a heading" do
|
|
create(:budget_heading, geozone: geozone)
|
|
expect(geozone).not_to be_safe_to_destroy
|
|
end
|
|
end
|
|
|
|
describe "#outline_points" do
|
|
it "returns empty array when geojson is nil" do
|
|
expect(geozone.outline_points).to eq([])
|
|
end
|
|
|
|
it "returns coordinates array when geojson is not nil" do
|
|
geozone = build(:geozone, geojson: '{
|
|
"geometry": {
|
|
"type": "Polygon",
|
|
"coordinates": [
|
|
[40.8792937308316, -3.9259027239257],
|
|
[40.8788966596619, -3.9249047078766],
|
|
[40.8789131852224, -3.9247799675785]
|
|
]
|
|
}
|
|
}')
|
|
|
|
expect(geozone.outline_points).to eq(
|
|
[[-3.9259027239257, 40.8792937308316],
|
|
[-3.9249047078766, 40.8788966596619],
|
|
[-3.9247799675785, 40.8789131852224]])
|
|
end
|
|
end
|
|
end
|