Add decription to geo_area

This commit is contained in:
Paul Chavard 2020-06-04 11:32:59 +02:00
parent 72d1ca1f42
commit d099314e56
3 changed files with 44 additions and 14 deletions

View file

@ -19,7 +19,7 @@ class Champs::CarteController < ApplicationController
def create
champ = policy_scope(Champ).find(params[:champ_id])
geo_area = champ.geo_areas.selections_utilisateur.new
save_geometry!(geo_area, params_feature)
save_feature!(geo_area, params_feature)
render json: { feature: geo_area.to_feature }, status: :created
end
@ -27,7 +27,7 @@ class Champs::CarteController < ApplicationController
def update
champ = policy_scope(Champ).find(params[:champ_id])
geo_area = champ.geo_areas.selections_utilisateur.find(params[:id])
save_geometry!(geo_area, params_feature)
save_feature!(geo_area, params_feature)
head :no_content
end
@ -43,7 +43,7 @@ class Champs::CarteController < ApplicationController
champ = policy_scope(Champ).find(params[:champ_id])
params_features.each do |feature|
geo_area = champ.geo_areas.selections_utilisateur.new
save_geometry!(geo_area, feature)
save_feature!(geo_area, feature)
end
render json: champ.to_feature_collection, status: :created
@ -59,8 +59,13 @@ class Champs::CarteController < ApplicationController
params[:features]
end
def save_geometry!(geo_area, feature)
geo_area.geometry = feature[:geometry]
def save_feature!(geo_area, feature)
if feature[:geometry]
geo_area.geometry = feature[:geometry]
end
if feature[:properties] && feature[:properties][:description]
geo_area.description = feature[:properties][:description]
end
geo_area.save!
end

View file

@ -2,6 +2,7 @@ class GeoArea < ApplicationRecord
belongs_to :champ
store :properties, accessors: [
:description,
:surface_intersection,
:surface_parcelle,
:numero,

View file

@ -44,19 +44,43 @@ describe Champs::CarteController, type: :controller do
end
describe 'PATCH #update' do
let(:params) do
{
champ_id: champ.id,
id: geo_area.id,
feature: feature
}
end
before do
patch :update, params: params
end
it { expect(response.status).to eq 204 }
context 'update geometry' do
let(:params) do
{
champ_id: champ.id,
id: geo_area.id,
feature: feature
}
end
it { expect(response.status).to eq 204 }
end
context 'update description' do
let(:feature) do
{
properties: {
description: 'un point'
}
}
end
let(:params) do
{
champ_id: champ.id,
id: geo_area.id,
feature: feature
}
end
it {
expect(response.status).to eq 204
expect(geo_area.reload.description).to eq('un point')
}
end
end
describe 'DELETE #destroy' do