diff --git a/app/controllers/instructeurs/export_templates_controller.rb b/app/controllers/instructeurs/export_templates_controller.rb index e04cf8152..9065b2d21 100644 --- a/app/controllers/instructeurs/export_templates_controller.rb +++ b/app/controllers/instructeurs/export_templates_controller.rb @@ -37,6 +37,14 @@ module Instructeurs end end + def destroy + if @export_template.destroy + redirect_to exports_instructeur_procedure_path(procedure: @procedure), notice: "Le modèle d'export #{@export_template.name} a bien été supprimé" + else + redirect_to exports_instructeur_procedure_path(procedure: @procedure), alert: "Le modèle d'export #{@export_template.name} n'a pu être supprimé" + end + end + def preview param = params.require(:export_template).keys.first @preview_param = param.delete_prefix("tiptap_") diff --git a/app/models/export_template.rb b/app/models/export_template.rb index 2a7282fdc..8dc01aa85 100644 --- a/app/models/export_template.rb +++ b/app/models/export_template.rb @@ -3,6 +3,7 @@ class ExportTemplate < ApplicationRecord belongs_to :groupe_instructeur has_one :procedure, through: :groupe_instructeur + has_many :exports, dependent: :nullify validates_with ExportTemplateValidator DOSSIER_STATE = Dossier.states.fetch(:en_construction) diff --git a/app/views/instructeurs/export_templates/_form.html.haml b/app/views/instructeurs/export_templates/_form.html.haml index 30dde872f..057120f28 100644 --- a/app/views/instructeurs/export_templates/_form.html.haml +++ b/app/views/instructeurs/export_templates/_form.html.haml @@ -47,7 +47,11 @@ = f.submit "Enregistrer", class: "fr-btn" %li = link_to "Annuler", instructeur_procedure_path(@procedure), class: "fr-btn fr-btn--secondary" - - if @export_template.sample_dossier + - if @export_template.persisted? + %li + = link_to "Supprimer", instructeur_export_template_path(@export_template, procedure_id: @procedure.id), method: :delete, data: { confirm: "Voulez-vous vraiment supprimer ce modèle ? Il sera supprimé pour tous les instructeurs du groupe"}, class: "fr-btn fr-btn--secondary" + - sample_dossier = @procedure.dossier_for_preview(current_instructeur) + - if sample_dossier .fr-col-12.fr-col-md-4.fr-background-alt--blue-france .export-template-preview.fr-p-2w.sticky--top %h2.fr-h4 Aperçu diff --git a/config/routes.rb b/config/routes.rb index 461575d5b..3905bb24f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -450,7 +450,7 @@ Rails.application.routes.draw do resources :procedures, only: [:index, :show], param: :procedure_id do member do resources :archives, only: [:index, :create] - resources :export_templates, only: [:new, :create, :edit, :update] do + resources :export_templates, only: [:new, :create, :edit, :update, :destroy] do collection do get 'preview' end diff --git a/spec/controllers/instructeurs/export_templates_controller_spec.rb b/spec/controllers/instructeurs/export_templates_controller_spec.rb index 83adb32ac..8b8d73b82 100644 --- a/spec/controllers/instructeurs/export_templates_controller_spec.rb +++ b/spec/controllers/instructeurs/export_templates_controller_spec.rb @@ -117,4 +117,17 @@ describe Instructeurs::ExportTemplatesController, type: :controller do end end end + + describe '#destroy' do + let(:export_template) { create(:export_template, groupe_instructeur:) } + let(:subject) { delete :destroy, params: { procedure_id: procedure.id, id: export_template.id } } + + context 'with valid params' do + it 'redirect to some page' do + subject + expect(response).to redirect_to(exports_instructeur_procedure_path(procedure:)) + expect(flash.notice).to eq "Le modèle d'export Mon export a bien été supprimé" + end + end + end end