From a9ffaf942e10ef0bd5d9e5b1b88a856cfdc3dd20 Mon Sep 17 00:00:00 2001 From: Martin Date: Tue, 4 Jan 2022 14:44:17 +0100 Subject: [PATCH] feat(attestation): can enable/disable attestation no matter the state of the procedure --- .../attestation_templates/edit.html.haml | 16 ++--- .../procedure_attestation_template_spec.rb | 59 +++++++++++++++++++ 2 files changed, 64 insertions(+), 11 deletions(-) create mode 100644 spec/system/administrateurs/procedure_attestation_template_spec.rb diff --git a/app/views/administrateurs/attestation_templates/edit.html.haml b/app/views/administrateurs/attestation_templates/edit.html.haml index 28d0bea63..235f988f8 100644 --- a/app/views/administrateurs/attestation_templates/edit.html.haml +++ b/app/views/administrateurs/attestation_templates/edit.html.haml @@ -19,10 +19,6 @@ - else %span.text-inactive désactivée - - if @attestation_template.activated && @procedure.locked? - .card.warning - %p L’attestation ne peut plus être désactivée car la démarche est publiée. - %p.notice L’attestation, si elle est activée, est émise au moment où un dossier est accepté. %br @@ -33,13 +29,11 @@ .procedure-form__actions.sticky--bottom .actions-left - -# Admins cannot disactivate the Attestation if it is activated and the procedure is published - - if !(@attestation_template.activated && @procedure.locked?) - %label.toggle-switch - = f.check_box :activated, class: 'toggle-switch-checkbox' - %span.toggle-switch-control.round - %span.toggle-switch-label.on Attestation activée - %span.toggle-switch-label.off Attestation désactivée + %label.toggle-switch + = f.check_box :activated, class: 'toggle-switch-checkbox' + %span.toggle-switch-control.round + %span.toggle-switch-label.on Attestation activée + %span.toggle-switch-label.off Attestation désactivée .actions-right = link_to 'Annuler', edit_admin_procedure_attestation_template_path(id: @procedure), class: 'button', data: { confirm: 'Êtes-vous sûr de vouloir annuler les modifications effectuées ?'} diff --git a/spec/system/administrateurs/procedure_attestation_template_spec.rb b/spec/system/administrateurs/procedure_attestation_template_spec.rb new file mode 100644 index 000000000..5ea1d6ca7 --- /dev/null +++ b/spec/system/administrateurs/procedure_attestation_template_spec.rb @@ -0,0 +1,59 @@ +require 'system/administrateurs/procedure_spec_helper' + +describe 'As an administrateur, I want to manage the procedure’s attestation', js: true do + include ProcedureSpecHelper + + let(:administrateur) { create(:administrateur) } + let(:procedure) do + create(:procedure, :with_service, :with_instructeur, + aasm_state: :brouillon, + administrateurs: [administrateur], + libelle: 'libellé de la procédure', + path: 'libelle-de-la-procedure') + end + before { login_as(administrateur.user, scope: :user) } + + def find_attestation_card(with_nested_selector: nil) + full_selector = [ + ".card-admin[href=\"#{edit_admin_procedure_attestation_template_path(procedure)}\"]", + with_nested_selector + ].compact.join(" ") + page.find(full_selector) + end + + context 'Enable, publish, Disable' do + scenario do + visit admin_procedure_path(procedure) + # start with no attestation + find_attestation_card(with_nested_selector: ".icon.clock") + + # now process to enable attestation + find_attestation_card.click + fill_in "Titre de l'attestation", with: 'BOOM' + fill_in "Corps du document", with: 'BOOM' + find('.toggle-switch-control').click + click_on 'Enregistrer' + page.find(".alert-success", text: "L'attestation a bien été sauvegardée") + + # check attestation + visit admin_procedure_path(procedure) + find_attestation_card(with_nested_selector: ".icon.accept") + + # publish procedure + # click CTA for publication screen + click_on("Publier") + # validate publication + click_on("Publier") + + # now process to disable attestation + find_attestation_card.click + find('.toggle-switch-control').click + click_on 'Enregistrer' + page.find(".alert-success", text: "L'attestation a bien été modifiée") + + # check attestation is now disabled + visit admin_procedure_path(procedure) + find_attestation_card(with_nested_selector: ".icon.clock") + end + end +end