diff --git a/app/controllers/champs/carte_controller.rb b/app/controllers/champs/carte_controller.rb index 6790a9767..fc9a55833 100644 --- a/app/controllers/champs/carte_controller.rb +++ b/app/controllers/champs/carte_controller.rb @@ -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 diff --git a/app/models/geo_area.rb b/app/models/geo_area.rb index fe0ca9f2f..e576ccbe8 100644 --- a/app/models/geo_area.rb +++ b/app/models/geo_area.rb @@ -2,6 +2,7 @@ class GeoArea < ApplicationRecord belongs_to :champ store :properties, accessors: [ + :description, :surface_intersection, :surface_parcelle, :numero, diff --git a/spec/controllers/champs/carte_controller_spec.rb b/spec/controllers/champs/carte_controller_spec.rb index 30a30a393..da7f2a7af 100644 --- a/spec/controllers/champs/carte_controller_spec.rb +++ b/spec/controllers/champs/carte_controller_spec.rb @@ -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