Error 403 when admin would edit a procedure with at least one dossier

This commit is contained in:
Xavier J 2015-12-21 12:02:53 +01:00
parent 5d4a36e6c3
commit 43779aafee
11 changed files with 65 additions and 32 deletions

View file

@ -9,11 +9,19 @@ describe Admin::PiecesJustificativesController, type: :controller do
describe 'GET #show' do
let(:procedure) { create(:procedure, administrateur: admin) }
let(:procedure_id) { procedure.id }
subject { get :show, procedure_id: procedure_id }
context 'when procedure is not found' do
let(:procedure_id) { 9_999_999 }
it { expect(subject.status).to eq(404) }
end
context 'when procedure have at least a file' do
let!(:dossier) { create(:dossier, :with_user, procedure: procedure) }
it { expect(subject.status).to eq(403) }
end
context 'when procedure does not belong to admin' do
let(:admin_2) { create(:administrateur) }
let(:procedure) { create(:procedure, administrateur: admin_2) }

View file

@ -66,10 +66,15 @@ describe Admin::ProceduresController, type: :controller do
it { expect(subject).to have_http_status(:success) }
end
context 'when procedure have at least a file' do
let!(:dossier) { create(:dossier, :with_user, procedure: procedure) }
it { expect(subject.status).to eq(403) }
end
context "when procedure doesn't exist" do
let(:procedure_id) { bad_procedure_id }
it { expect(subject).to redirect_to admin_procedures_path }
it { expect(subject).to have_http_status(404) }
end
end
end

View file

@ -2,12 +2,36 @@ require 'spec_helper'
describe Admin::TypesDeChampController, type: :controller do
let(:admin) { create(:administrateur) }
let(:procedure) { create(:procedure, administrateur: admin) }
before do
sign_in admin
end
describe 'GET #show' do
let(:procedure) { create(:procedure, administrateur: admin) }
let(:procedure_id) { procedure.id }
subject { get :show, procedure_id: procedure_id }
context 'when procedure is not found' do
let(:procedure_id) { 9_999_999 }
it { expect(subject.status).to eq(404) }
end
context 'when procedure have at least a file' do
let!(:dossier) { create(:dossier, :with_user, procedure: procedure) }
it { expect(subject.status).to eq(403) }
end
context 'when procedure does not belong to admin' do
let(:admin_2) { create(:administrateur) }
let(:procedure) { create(:procedure, administrateur: admin_2) }
it { expect(subject.status).to eq(404) }
end
end
describe '#update' do
let(:procedure) { create(:procedure) }
let(:libelle) { 'mon libelle' }
let(:type_champ) { 'text' }
let(:description) { 'titi' }
@ -47,7 +71,7 @@ describe Admin::TypesDeChampController, type: :controller do
end
context 'when type_de_champ already exist' do
let(:procedure) { create(:procedure, :with_type_de_champ) }
let(:procedure) { create(:procedure, :with_type_de_champ, administrateur: admin) }
let(:type_de_champ) { procedure.types_de_champ.first }
let(:types_de_champ_id) { type_de_champ.id }
let(:libelle) { 'toto' }
@ -77,13 +101,13 @@ describe Admin::TypesDeChampController, type: :controller do
before do
delete :destroy, procedure_id: procedure.id, id: type_de_champ_id, format: :js
end
context 'when type de champs does not exist' do
let(:type_de_champ_id) { 99999999 }
let(:procedure) { create(:procedure) }
it { expect(subject.status).to eq(404) }
end
context 'when types_de_champ exists' do
let(:procedure) { create(:procedure, :with_type_de_champ) }
let(:procedure) { create(:procedure, :with_type_de_champ, administrateur: admin) }
let(:type_de_champ_id) { procedure.types_de_champ.first.id }
it { expect(subject.status).to eq(200) }
it 'destroy type de champ' do
@ -92,7 +116,6 @@ describe Admin::TypesDeChampController, type: :controller do
end
end
context 'when procedure and type de champs are not linked' do
let(:procedure) { create(:procedure) }
let(:type_de_champ) { create(:type_de_champ) }
let(:type_de_champ_id) { type_de_champ.id }
it { expect(subject.status).to eq(404) }
@ -101,28 +124,25 @@ describe Admin::TypesDeChampController, type: :controller do
describe 'POST #move_up' do
subject { post :move_up, procedure_id: procedure.id, index: index, format: :js }
context 'when procedure have no type de champ' do
let(:index) { 0 }
let(:procedure) { create(:procedure) }
it { expect(subject.status).to eq(400) }
end
context 'when procedure have only one type de champ' do
let(:index) { 1 }
let(:procedure) { create(:procedure) }
let!(:type_de_champ) { create(:type_de_champ, procedure: procedure) }
it { expect(subject.status).to eq(400) }
end
context 'when procedure have tow type de champs' do
context 'when index == 0' do
let(:index) { 0 }
let(:procedure) { create(:procedure) }
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure) }
let!(:type_de_champ_2) { create(:type_de_champ, procedure: procedure) }
it { expect(subject.status).to eq(400) }
end
context 'when index > 0' do
let(:index) { 1 }
let(:procedure) { create(:procedure) }
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0) }
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 1) }
@ -141,9 +161,10 @@ describe Admin::TypesDeChampController, type: :controller do
describe 'POST #move_down' do
let(:request) { post :move_down, procedure_id: procedure.id, index: index, format: :js }
subject { request }
let(:index) { 0 }
let(:procedure) { create(:procedure) }
subject { request }
context 'when procedure have no type de champ' do
it { expect(subject.status).to eq(400) }
end