From a8b30c0cdcf3b8b059ecb3d040bdda1ff3da3e84 Mon Sep 17 00:00:00 2001 From: kara Diaby Date: Thu, 1 Apr 2021 12:00:07 +0200 Subject: [PATCH] add react component (expert view) and block it when the flag is activated --- app/views/experts/shared/avis/_form.html.haml | 58 +++++++++++-------- .../features/instructeurs/instruction_spec.rb | 10 ++-- 2 files changed, 39 insertions(+), 29 deletions(-) diff --git a/app/views/experts/shared/avis/_form.html.haml b/app/views/experts/shared/avis/_form.html.haml index a1bcf1fac..a8ec6a80c 100644 --- a/app/views/experts/shared/avis/_form.html.haml +++ b/app/views/experts/shared/avis/_form.html.haml @@ -1,30 +1,38 @@ -%section.ask-avis - %h1.tab-title Inviter des personnes à donner leur avis - %p.avis-notice Les invités pourront consulter le dossier, donner un avis et contribuer au fil de messagerie. Ils ne pourront pas modifier le dossier. +- if @dossier.procedure.feature_enabled?(:admin_affect_experts_to_avis).blank? + %section.ask-avis + %h1.tab-title Inviter des personnes à donner leur avis + %p.avis-notice Les invités pourront consulter le dossier, donner un avis et contribuer au fil de messagerie. Ils ne pourront pas modifier le dossier. - = form_for avis, url: url, html: { class: 'form' } do |f| - = f.email_field :emails, placeholder: 'Adresses email, séparées par des virgules', required: true, multiple: true, onchange: "javascript:DS.replaceSemicolonByComma(event);" - = f.text_area :introduction, rows: 3, value: avis.introduction || 'Bonjour, merci de me donner votre avis sur ce dossier.', required: true - %p.tab-title Ajouter une pièce jointe - .form-group - = text_upload_and_render f, avis.introduction_file + = form_for avis, url: url, html: { class: 'form' } do |f| + - hidden_field_id = SecureRandom.uuid + = hidden_field_tag 'avis[emails]', nil, data: { uuid: hidden_field_id } + = react_component("ComboMultipleDropdownList", + options: [], + selected: [], disabled: [], + hiddenFieldId: hidden_field_id, + label: 'avis_emails', + acceptNewValues: true) + = f.text_area :introduction, rows: 3, value: avis.introduction || 'Bonjour, merci de me donner votre avis sur ce dossier.', required: true + %p.tab-title Ajouter une pièce jointe + .form-group + = text_upload_and_render f, avis.introduction_file - - if linked_dossiers.present? - = f.check_box :invite_linked_dossiers, {}, true, false - = f.label :invite_linked_dossiers, t('helpers.label.invite_linked_dossiers', count: linked_dossiers.length, ids: linked_dossiers.map(&:id).to_sentence) + - if linked_dossiers.present? + = f.check_box :invite_linked_dossiers, {}, true, false + = f.label :invite_linked_dossiers, t('helpers.label.invite_linked_dossiers', count: linked_dossiers.length, ids: linked_dossiers.map(&:id).to_sentence) - .flex.justify-between.align-baseline - - if must_be_confidentiel - %p.confidentiel.flex - %span.icon.lock - %span - Cet avis sera confidentiel : il ne sera pas affiché aux autres experts consultés, mais sera visible par les instructeurs. + .flex.justify-between.align-baseline + - if must_be_confidentiel + %p.confidentiel.flex + %span.icon.lock + %span + Cet avis sera confidentiel : il ne sera pas affiché aux autres experts consultés, mais sera visible par les instructeurs. - - else - .confidentiel-wrapper - = f.label :confidentiel, 'Cet avis sera ' - = f.select :confidentiel, [['partagé avec les autres experts', false], ['confidentiel', true]], {}, onchange: "javascript:DS.toggleCondidentielExplanation(event);" - .confidentiel-explanation.hidden - Il ne sera pas affiché aux autres experts consultés, mais sera visible par les instructeurs. + - else + .confidentiel-wrapper + = f.label :confidentiel, 'Cet avis sera ' + = f.select :confidentiel, [['partagé avec les autres experts', false], ['confidentiel', true]], {}, onchange: "javascript:DS.toggleCondidentielExplanation(event);" + .confidentiel-explanation.hidden + Il ne sera pas affiché aux autres experts consultés, mais sera visible par les instructeurs. - = f.submit 'Demander un avis', class: 'button primary send' + = f.submit 'Demander un avis', class: 'button primary send' diff --git a/spec/features/instructeurs/instruction_spec.rb b/spec/features/instructeurs/instruction_spec.rb index b1c5a794d..b0c9aeef6 100644 --- a/spec/features/instructeurs/instruction_spec.rb +++ b/spec/features/instructeurs/instruction_spec.rb @@ -1,4 +1,4 @@ -feature 'Instructing a dossier:' do +feature 'Instructing a dossier:', js: true do include ActiveJob::TestHelper let(:password) { 'my-s3cure-p4ssword' } @@ -101,11 +101,13 @@ feature 'Instructing a dossier:' do click_on 'Avis externes' expect(page).to have_current_path(avis_instructeur_dossier_path(procedure, dossier)) + expert_email_formated = "[\"expert@tps.com\"]" expert_email = 'expert@tps.com' - ask_confidential_avis(expert_email, 'a good introduction') + ask_confidential_avis(expert_email_formated, 'a good introduction') + expert_email_formated = "[\"#{instructeur2.email}\"]" expert_email = instructeur2.email - ask_confidential_avis(expert_email, 'a good introduction') + ask_confidential_avis(expert_email_formated, 'a good introduction') click_on 'Personnes impliquées' expect(page).to have_text(expert_email) @@ -206,7 +208,7 @@ feature 'Instructing a dossier:' do end def ask_confidential_avis(to, introduction) - fill_in 'avis_emails', with: to + page.execute_script("document.querySelector('#avis_emails').value = '#{to}'") fill_in 'avis_introduction', with: introduction select 'confidentiel', from: 'avis_confidentiel' click_on 'Demander un avis'