From 17ca244a2f5f33b749dda5f97ed11f19e3899b81 Mon Sep 17 00:00:00 2001 From: Tanguy PATTE Date: Fri, 20 Nov 2015 15:12:47 +0100 Subject: [PATCH] end delete type de piece justificative --- .../admin/pieces_justificatives_controller.rb | 8 +++++ .../pieces_justificatives/_fields.html.haml | 4 ++- config/routes.rb | 1 + .../pieces_justificatives_controller_spec.rb | 29 ++++++++++++++++++- spec/factories/type_de_piece_justificative.rb | 4 +++ .../add_type_de_piece_justificative_spec.rb | 14 +++++++++ 6 files changed, 58 insertions(+), 2 deletions(-) diff --git a/app/controllers/admin/pieces_justificatives_controller.rb b/app/controllers/admin/pieces_justificatives_controller.rb index 636b08e43..ed9eb29ed 100644 --- a/app/controllers/admin/pieces_justificatives_controller.rb +++ b/app/controllers/admin/pieces_justificatives_controller.rb @@ -9,6 +9,14 @@ class Admin::PiecesJustificativesController < AdminController render 'show', format: :js end + def destroy + @procedure.types_de_piece_justificative.find(params[:id]).destroy + + render 'show', format: :js + rescue ActiveRecord::RecordNotFound + render json: { message: 'Type de piece justificative not found' }, status: 404 + end + def update_params params .require(:procedure) diff --git a/app/views/admin/pieces_justificatives/_fields.html.haml b/app/views/admin/pieces_justificatives/_fields.html.haml index 6c41069b2..656d56a19 100644 --- a/app/views/admin/pieces_justificatives/_fields.html.haml +++ b/app/views/admin/pieces_justificatives/_fields.html.haml @@ -9,8 +9,10 @@ %h4 Description =ff.text_area :description, class: 'form-control description', placeholder: 'Description' - -if ff.object.id.nil? + - if ff.object.id.nil? .form-group#add_type_de_piece_justificative_button %br   = f.submit('Ajouter la pièce') + - else + = link_to("", admin_procedure_piece_justificative_path(@procedure, ff.object.id), method: :delete, remote: true, id: "delete_type_de_piece_justificative_#{ff.object.id}", class: %w(form-control btn btn-danger fa fa-trash-o) ) diff --git a/config/routes.rb b/config/routes.rb index f3242f468..afaa84331 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -48,6 +48,7 @@ Rails.application.routes.draw do end resources :types_de_champ, only: [:destroy] resource :pieces_justificatives, only: [:show, :update] + resources :pieces_justificatives, only: :destroy end end diff --git a/spec/controllers/admin/pieces_justificatives_controller_spec.rb b/spec/controllers/admin/pieces_justificatives_controller_spec.rb index 958f278de..773145e10 100644 --- a/spec/controllers/admin/pieces_justificatives_controller_spec.rb +++ b/spec/controllers/admin/pieces_justificatives_controller_spec.rb @@ -21,7 +21,7 @@ describe Admin::PiecesJustificativesController, type: :controller do end end - describe 'POST #update' do + describe 'PUT #update' do let(:procedure) { create(:procedure, administrateur: admin) } let(:procedure_id) { procedure.id } let(:libelle) { 'RIB' } @@ -62,4 +62,31 @@ describe Admin::PiecesJustificativesController, type: :controller do it { expect{ subject }.not_to change(TypeDePieceJustificative, :count) } end end + + describe 'DELETE #destroy' do + let(:procedure) { create(:procedure, administrateur: admin) } + let!(:pj) { create(:type_de_piece_justificative, procedure: procedure) } + let(:procedure_id) { procedure.id } + let(:pj_id) { pj.id } + let(:request) { delete :destroy, procedure_id: procedure_id, id: pj_id } + subject { request } + context 'when procedure is not found' do + let(:procedure_id) { 9_999_999 } + it { expect(subject.status).to eq(404) } + end + context 'when pj id does not exist' do + let(:pj_id) { 9_999_999 } + it { expect(subject.status).to eq(404) } + end + context 'when pj id exist but is not linked to procedure' do + let(:procedure_1) { create(:procedure, administrateur: admin) } + let!(:pj_1) { create(:type_de_piece_justificative, procedure: procedure_1) } + let(:pj_id) { pj_1 } + it { expect(subject.status).to eq(404) } + end + context 'when pj is found' do + it { expect(subject.status).to eq(200) } + it { expect{ subject }.to change(TypeDePieceJustificative, :count).by(-1) } + end + end end \ No newline at end of file diff --git a/spec/factories/type_de_piece_justificative.rb b/spec/factories/type_de_piece_justificative.rb index 79f14c0d8..36084ab39 100644 --- a/spec/factories/type_de_piece_justificative.rb +++ b/spec/factories/type_de_piece_justificative.rb @@ -1,5 +1,9 @@ FactoryGirl.define do factory :type_de_piece_justificative do + + libelle 'RIB' + description 'Releve identité bancaire' + trait :rib do libelle 'RIB' description 'Releve identité bancaire' diff --git a/spec/features/admin/add_type_de_piece_justificative_spec.rb b/spec/features/admin/add_type_de_piece_justificative_spec.rb index 9d08d8aac..bc45ae701 100644 --- a/spec/features/admin/add_type_de_piece_justificative_spec.rb +++ b/spec/features/admin/add_type_de_piece_justificative_spec.rb @@ -43,6 +43,20 @@ feature 'add a new type de piece justificative', js: true do expect(page).to have_css('#procedure_types_de_piece_justificative_attributes_1_libelle') end end + context 'when user delete pj' do + before do + pj = procedure.types_de_piece_justificative.first + page.find_by_id("delete_type_de_piece_justificative_#{pj.id}").click + wait_for_ajax + end + scenario 'removes pj from page' do + within '#liste_piece_justificative' do + expect(page).not_to have_css('#procedure_types_de_piece_justificative_attributes_0_libelle') + expect(page.body).not_to match(libelle) + expect(page.body).not_to match(description) + end + end + end end end end