demarches-normaliennes/spec/controllers/champs/carte_controller_spec.rb

158 lines
3.8 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2018-10-22 15:00:52 +02:00
describe Champs::CarteController, type: :controller do
let(:user) { create(:user) }
let(:procedure) { create(:procedure, :published, types_de_champ_public: [{ type: :carte, options: { cadastres: true } }]) }
2018-10-22 15:00:52 +02:00
let(:dossier) { create(:dossier, user: user, procedure: procedure) }
let(:params) do
{
dossier: {
champs_public_attributes: {
champ.public_id => { value: value }
2018-10-22 15:00:52 +02:00
}
},
position: '1',
dossier_id: champ.dossier_id,
stable_id: champ.stable_id
2018-10-22 15:00:52 +02:00
}
end
let(:champ) { dossier.champs.first }
2020-05-14 11:21:33 +02:00
describe 'features' do
let(:feature) { attributes_for(:geo_area, :polygon) }
let(:geo_area) { create(:geo_area, :selection_utilisateur, :polygon, champ: champ) }
let(:params) do
{
dossier_id: champ.dossier_id,
stable_id: champ.stable_id,
feature: feature,
source: GeoArea.sources.fetch(:selection_utilisateur)
}
end
before do
sign_in user
request.accept = "application/json"
request.content_type = "application/json"
end
describe 'POST #create' do
before do
post :create, params: params
end
2021-06-02 12:43:24 +02:00
context 'success' do
it { expect(response.status).to eq 201 }
end
2021-06-02 12:43:24 +02:00
context 'error' do
let(:feature) { attributes_for(:geo_area, :invalid_point) }
2020-06-04 11:32:59 +02:00
let(:params) do
{
dossier_id: champ.dossier_id,
stable_id: champ.stable_id,
2021-06-02 12:43:24 +02:00
feature: feature,
source: GeoArea.sources.fetch(:selection_utilisateur)
2020-06-04 11:32:59 +02:00
}
end
2021-06-02 12:43:24 +02:00
it { expect(response.status).to eq 422 }
end
end
describe 'PATCH #update' do
let(:params) do
{
dossier_id: champ.dossier_id,
stable_id: champ.stable_id,
2021-06-02 12:43:24 +02:00
id: geo_area.id,
feature: feature
}
end
before do
patch :update, params: params
end
context 'update geometry' do
2020-06-04 11:32:59 +02:00
it { expect(response.status).to eq 204 }
end
context 'update description' do
let(:feature) do
{
properties: {
description: 'un point'
}
}
end
it {
expect(response.status).to eq 204
expect(geo_area.reload.description).to eq('un point')
}
end
2021-06-02 12:43:24 +02:00
context 'error' do
let(:feature) { attributes_for(:geo_area, :invalid_point) }
2021-06-02 12:43:24 +02:00
it { expect(response.status).to eq 422 }
end
end
describe 'DELETE #destroy' do
let(:params) do
{
dossier_id: champ.dossier_id,
stable_id: champ.stable_id,
id: geo_area.id
}
end
before do
delete :destroy, params: params
end
it { expect(response.status).to eq 204 }
end
describe 'GET #index' do
render_views
before do
2022-05-03 19:43:25 +02:00
get :index, params: params, format: :turbo_stream
end
context 'without focus' do
let(:params) do
{
dossier_id: champ.dossier_id,
stable_id: champ.stable_id
}
end
it 'updates the list' do
2022-05-03 19:43:25 +02:00
expect(response.body).not_to include("map:feature:focus")
expect(response.status).to eq 200
end
end
context "update list and focus" do
let(:params) do
{
dossier_id: champ.dossier_id,
stable_id: champ.stable_id,
focus: true
}
end
it 'updates the list and focuses the map' do
2022-05-03 19:43:25 +02:00
expect(response.body).to include(ActionView::RecordIdentifier.dom_id(champ, :geo_areas))
expect(response.body).to include("map:feature:focus")
expect(response.status).to eq 200
end
end
end
end
2018-10-22 15:00:52 +02:00
end