From e626eb69ceca3b128fd23fa78f9cce7a323351e4 Mon Sep 17 00:00:00 2001 From: Colin Darie Date: Thu, 9 Feb 2023 09:44:06 +0100 Subject: [PATCH] feat(admin): import groupe instructeurs csv when procedure is closed --- .../administrateurs/groupe_instructeurs_controller.rb | 2 +- app/models/procedure.rb | 4 ++++ .../groupe_instructeurs/_edit.html.haml | 2 +- .../groupe_instructeurs_controller_spec.rb | 10 ++++++++++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/controllers/administrateurs/groupe_instructeurs_controller.rb b/app/controllers/administrateurs/groupe_instructeurs_controller.rb index cdd6455dd..63390b1f1 100644 --- a/app/controllers/administrateurs/groupe_instructeurs_controller.rb +++ b/app/controllers/administrateurs/groupe_instructeurs_controller.rb @@ -192,7 +192,7 @@ module Administrateurs end def import - if procedure.publiee? + if procedure.publiee_or_close? if !CSV_ACCEPTED_CONTENT_TYPES.include?(group_csv_file.content_type) && !CSV_ACCEPTED_CONTENT_TYPES.include?(marcel_content_type) flash[:alert] = "Importation impossible : veuillez importer un fichier CSV" diff --git a/app/models/procedure.rb b/app/models/procedure.rb index bf910113c..b6ef52750 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -823,6 +823,10 @@ class Procedure < ApplicationRecord published_at || created_at end + def publiee_or_close? + publiee? || close? + end + def self.tags unnest = Arel::Nodes::NamedFunction.new('UNNEST', [self.arel_table[:tags]]) query = self.select(unnest.as('tags')).publiees.distinct.order('tags') diff --git a/app/views/administrateurs/groupe_instructeurs/_edit.html.haml b/app/views/administrateurs/groupe_instructeurs/_edit.html.haml index 313e608c4..7a5543d3b 100644 --- a/app/views/administrateurs/groupe_instructeurs/_edit.html.haml +++ b/app/views/administrateurs/groupe_instructeurs/_edit.html.haml @@ -24,7 +24,7 @@ = f.submit t('.button.add_group'), class: "button primary send" - csv_max_size = Administrateurs::GroupeInstructeursController::CSV_MAX_SIZE - - if procedure.publiee? + - if procedure.publiee_or_close? = form_tag import_admin_procedure_groupe_instructeurs_path(procedure), method: :post, multipart: true, class: "mt-4 form" do = label_tag t('.csv_import.title') %p.notice diff --git a/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb b/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb index aedc98b37..90e3a193f 100644 --- a/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb +++ b/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb @@ -431,6 +431,16 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do it { expect(flash.alert).to be_present } it { expect(flash.alert).to eq("Importation impossible, veuillez importer un csv suivant ce modèle") } end + + context 'when procedure is closed' do + let(:procedure) { create(:procedure, :closed, administrateurs: [admin]) } + let(:csv_file) { fixture_file_upload('spec/fixtures/files/groupe-instructeur.csv', 'text/csv') } + + before { subject } + + it { expect(procedure.groupe_instructeurs.first.label).to eq("Afrique") } + it { expect(flash.alert).to eq("Import terminé. Cependant les emails suivants ne sont pas pris en compte: kara") } + end end describe '#export_groupe_instructeurs' do