add move_up for type de champ controller
This commit is contained in:
parent
7e4b26274b
commit
0503e2f278
3 changed files with 57 additions and 1 deletions
|
@ -21,6 +21,20 @@ class Admin::TypesDeChampController < AdminController
|
||||||
params.require(:procedure).permit(types_de_champ_attributes: [:libelle, :description, :order_place, :type_champ, :id])
|
params.require(:procedure).permit(types_de_champ_attributes: [:libelle, :description, :order_place, :type_champ, :id])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def move_up
|
||||||
|
index = params[:index].to_i
|
||||||
|
if @procedure.types_de_champ.count < 2 || index < 1
|
||||||
|
render json: {}, status: 400
|
||||||
|
else
|
||||||
|
types_de_champ_to_move_down = @procedure.types_de_champ_ordered[index - 1]
|
||||||
|
types_de_champ_to_move_up = @procedure.types_de_champ_ordered[index]
|
||||||
|
types_de_champ_to_move_down.update_attributes(order_place: index)
|
||||||
|
types_de_champ_to_move_up.update_attributes(order_place: index - 1)
|
||||||
|
|
||||||
|
render 'show', format: :js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def retrieve_procedure
|
def retrieve_procedure
|
||||||
|
|
|
@ -42,7 +42,9 @@ Rails.application.routes.draw do
|
||||||
namespace :admin do
|
namespace :admin do
|
||||||
get 'sign_in' => '/administrateurs/sessions#new'
|
get 'sign_in' => '/administrateurs/sessions#new'
|
||||||
resources :procedures do
|
resources :procedures do
|
||||||
resource :types_de_champ, only: [:show, :update]
|
resource :types_de_champ, only: [:show, :update] do
|
||||||
|
post '/:index/move_up' => 'types_de_champ#move_up'
|
||||||
|
end
|
||||||
resources :types_de_champ, only: [:destroy]
|
resources :types_de_champ, only: [:destroy]
|
||||||
resource :pieces_justificatives, only: [:edit, :update]
|
resource :pieces_justificatives, only: [:edit, :update]
|
||||||
end
|
end
|
||||||
|
|
|
@ -98,4 +98,44 @@ describe Admin::TypesDeChampController, type: :controller do
|
||||||
it { expect(subject.status).to eq(404) }
|
it { expect(subject.status).to eq(404) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
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) }
|
||||||
|
|
||||||
|
it { expect(subject.status).to eq(200) }
|
||||||
|
it { expect(subject).to render_template('show') }
|
||||||
|
it 'changes order places' do
|
||||||
|
post :move_up, procedure_id: procedure.id, index: index, format: :js
|
||||||
|
type_de_champ_0.reload
|
||||||
|
type_de_champ_1.reload
|
||||||
|
expect(type_de_champ_0.order_place).to eq(1)
|
||||||
|
expect(type_de_champ_1.order_place).to eq(0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue