renammed into monavis_embed
This commit is contained in:
parent
c8f9e3b5f8
commit
6d43465ee5
8 changed files with 56 additions and 36 deletions
|
@ -277,7 +277,7 @@ class Admin::ProceduresController < AdminController
|
||||||
end
|
end
|
||||||
|
|
||||||
def procedure_params
|
def procedure_params
|
||||||
editable_params = [:libelle, :description, :organisation, :direction, :lien_site_web, :cadre_juridique, :deliberation, :notice, :web_hook_url, :euro_flag, :logo, :auto_archive_on, :monavis]
|
editable_params = [:libelle, :description, :organisation, :direction, :lien_site_web, :cadre_juridique, :deliberation, :notice, :web_hook_url, :euro_flag, :logo, :auto_archive_on, :monavis_embed]
|
||||||
if @procedure&.locked?
|
if @procedure&.locked?
|
||||||
params.require(:procedure).permit(*editable_params)
|
params.require(:procedure).permit(*editable_params)
|
||||||
else
|
else
|
||||||
|
|
|
@ -74,8 +74,8 @@ class Procedure < ApplicationRecord
|
||||||
|
|
||||||
class MonavisValidator < ActiveModel::Validator
|
class MonavisValidator < ActiveModel::Validator
|
||||||
def validate(record)
|
def validate(record)
|
||||||
r = Regexp.new('<a href="https://monavis.numerique.gouv.fr/Demarches/\d+\?&view-mode=formulaire-avis&nd_mode=en-ligne-enti%C3%A8rement&nd_source=button&key=[[:alnum:]]+">\s*<img src="https://monavis.numerique.gouv.fr/monavis-static/bouton-blanc|bleu.png" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" />\s*</a>', Regexp::MULTILINE)
|
r = Regexp.new('<a href="https://monavis.numerique.gouv.fr/Demarches/\d+.*key=[[:alnum:]]+.*">\s*<img src="https://monavis.numerique.gouv.fr/monavis-static/bouton-blanc|bleu.png" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" />\s*</a>', Regexp::MULTILINE)
|
||||||
if record.monavis.present? && !r.match?(record.monavis)
|
if record.monavis_embed.present? && !r.match?(record.monavis_embed)
|
||||||
record.errors[:base] << "Le code fourni ne correspond pas au format des codes Monavis reconnus par la plateforme."
|
record.errors[:base] << "Le code fourni ne correspond pas au format des codes Monavis reconnus par la plateforme."
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -12,5 +12,5 @@
|
||||||
%p Une fois en possession du code généré sur le site MonAvis, vous pouvez le coller dans le champ ci-dessous :
|
%p Une fois en possession du code généré sur le site MonAvis, vous pouvez le coller dans le champ ci-dessous :
|
||||||
|
|
||||||
.form-group
|
.form-group
|
||||||
= f.label :monavis, "Mon avis"
|
= f.label :monavis_embed, "Mon avis"
|
||||||
= f.text_area :monavis, rows: '6', placeholder: '<a href="https://monavis.numerique.gouv.fr/Demarches/123456?&view-mode=formulaire-avis&nd_mode=en-ligne-enti%C3%A8rement&nd_source=button&key=cd4a872d4"><img src="https://monavis.numerique.gouv.fr/monavis-static/bouton-bleu.png" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" /></a>', class: 'form-control'
|
= f.text_area :monavis_embed, rows: '6', placeholder: '<a href="https://monavis.numerique.gouv.fr/Demarches/123456?&view-mode=formulaire-avis&nd_mode=en-ligne-enti%C3%A8rement&nd_source=button&key=cd4a872d4"><img src="https://monavis.numerique.gouv.fr/monavis-static/bouton-bleu.png" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" /></a>', class: 'form-control'
|
||||||
|
|
|
@ -23,4 +23,4 @@
|
||||||
.flex.column.align-center
|
.flex.column.align-center
|
||||||
= link_to 'Accéder à votre dossier', dossier_path(@dossier), class: 'button large primary'
|
= link_to 'Accéder à votre dossier', dossier_path(@dossier), class: 'button large primary'
|
||||||
= link_to 'Déposer un autre dossier', procedure_lien(@dossier.procedure)
|
= link_to 'Déposer un autre dossier', procedure_lien(@dossier.procedure)
|
||||||
!= @dossier.procedure.monavis
|
!= @dossier.procedure.monavis_embed
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
class AddMonavisToProcedures < ActiveRecord::Migration[5.2]
|
class AddMonavisToProcedures < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :procedures, :monavis, :text
|
add_column :procedures, :monavis_embed, :text
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 2019_07_16_141633) do
|
ActiveRecord::Schema.define(version: 2019_07_17_132452) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
@ -500,7 +500,7 @@ ActiveRecord::Schema.define(version: 2019_07_16_141633) do
|
||||||
t.boolean "durees_conservation_required", default: true
|
t.boolean "durees_conservation_required", default: true
|
||||||
t.string "path"
|
t.string "path"
|
||||||
t.string "declarative_with_state"
|
t.string "declarative_with_state"
|
||||||
t.text "monavis"
|
t.text "monavis_embed"
|
||||||
t.index ["declarative_with_state"], name: "index_procedures_on_declarative_with_state"
|
t.index ["declarative_with_state"], name: "index_procedures_on_declarative_with_state"
|
||||||
t.index ["hidden_at"], name: "index_procedures_on_hidden_at"
|
t.index ["hidden_at"], name: "index_procedures_on_hidden_at"
|
||||||
t.index ["parent_procedure_id"], name: "index_procedures_on_parent_procedure_id"
|
t.index ["parent_procedure_id"], name: "index_procedures_on_parent_procedure_id"
|
||||||
|
|
|
@ -14,7 +14,7 @@ describe Admin::ProceduresController, type: :controller do
|
||||||
let(:cadre_juridique) { 'cadre juridique' }
|
let(:cadre_juridique) { 'cadre juridique' }
|
||||||
let(:duree_conservation_dossiers_dans_ds) { 3 }
|
let(:duree_conservation_dossiers_dans_ds) { 3 }
|
||||||
let(:duree_conservation_dossiers_hors_ds) { 6 }
|
let(:duree_conservation_dossiers_hors_ds) { 6 }
|
||||||
let(:monavis) { nil }
|
let(:monavis_embed) { nil }
|
||||||
|
|
||||||
let(:procedure_params) {
|
let(:procedure_params) {
|
||||||
{
|
{
|
||||||
|
@ -26,7 +26,7 @@ describe Admin::ProceduresController, type: :controller do
|
||||||
cadre_juridique: cadre_juridique,
|
cadre_juridique: cadre_juridique,
|
||||||
duree_conservation_dossiers_dans_ds: duree_conservation_dossiers_dans_ds,
|
duree_conservation_dossiers_dans_ds: duree_conservation_dossiers_dans_ds,
|
||||||
duree_conservation_dossiers_hors_ds: duree_conservation_dossiers_hors_ds,
|
duree_conservation_dossiers_hors_ds: duree_conservation_dossiers_hors_ds,
|
||||||
monavis: monavis
|
monavis_embed: monavis_embed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -752,7 +752,7 @@ describe Admin::ProceduresController, type: :controller do
|
||||||
let!(:procedure) { create(:procedure, :with_type_de_champ, :with_two_type_de_piece_justificative, administrateur: admin) }
|
let!(:procedure) { create(:procedure, :with_type_de_champ, :with_two_type_de_piece_justificative, administrateur: admin) }
|
||||||
let(:procedure_params) {
|
let(:procedure_params) {
|
||||||
{
|
{
|
||||||
monavis: monavis
|
monavis_embed: monavis_embed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -771,31 +771,51 @@ describe Admin::ProceduresController, type: :controller do
|
||||||
patch :update_monavis, params: { procedure_id: procedure.id, procedure: procedure_params }
|
patch :update_monavis, params: { procedure_id: procedure.id, procedure: procedure_params }
|
||||||
procedure.reload
|
procedure.reload
|
||||||
end
|
end
|
||||||
|
let(:monavis_embed) {
|
||||||
|
<<-MSG
|
||||||
|
<a href="https://monavis.numerique.gouv.fr/Demarches/123?&view-mode=formulaire-avis&nd_mode=en-ligne-enti%C3%A8rement&nd_source=button&key=cd4a872d475e4045666057f">
|
||||||
|
<img src="https://monavis.numerique.gouv.fr/monavis-static/bouton-blanc.png" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" />
|
||||||
|
</a>
|
||||||
|
MSG
|
||||||
|
}
|
||||||
|
|
||||||
context 'when all attributes are present' do
|
context 'when all attributes are present' do
|
||||||
render_views
|
render_views
|
||||||
let(:monavis) { 'code html for monavis' }
|
|
||||||
|
|
||||||
before { update_monavis }
|
before { update_monavis }
|
||||||
|
|
||||||
describe 'the monavis field is updated' do
|
context 'when the embed code is valid' do
|
||||||
subject { procedure }
|
describe 'the monavis field is updated' do
|
||||||
|
subject { procedure }
|
||||||
|
|
||||||
it { expect(subject.monavis).to eq(monavis) }
|
it { expect(subject.monavis_embed).to eq(monavis_embed) }
|
||||||
|
end
|
||||||
|
|
||||||
|
it { expect(flash[:notice]).to be_present }
|
||||||
|
it { expect(response.body).to include "MonAvis" }
|
||||||
end
|
end
|
||||||
|
|
||||||
it { expect(flash[:notice]).to be_present }
|
context 'when the embed code is not valid' do
|
||||||
it { expect(response.body).to include "MonAvis" }
|
let(:monavis_embed) { 'invalid embed code' }
|
||||||
|
|
||||||
|
describe 'the monavis field is not updated' do
|
||||||
|
subject { procedure }
|
||||||
|
|
||||||
|
it { expect(subject.monavis_embed).to eq(nil) }
|
||||||
|
end
|
||||||
|
|
||||||
|
it { expect(flash[:alert]).to be_present }
|
||||||
|
it { expect(response.body).to include "MonAvis" }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when procedure is published' do
|
context 'when procedure is published' do
|
||||||
let(:procedure) { create(:procedure, :with_type_de_champ, :with_two_type_de_piece_justificative, :published, administrateur: admin) }
|
let(:procedure) { create(:procedure, :with_type_de_champ, :with_two_type_de_piece_justificative, :published, administrateur: admin) }
|
||||||
let(:monavis) { 'code html for monavis' }
|
|
||||||
|
|
||||||
subject { update_monavis }
|
subject { update_monavis }
|
||||||
|
|
||||||
describe 'the monavis field is updated' do
|
describe 'the monavis field is not updated' do
|
||||||
it { expect(subject.monavis).to eq procedure_params[:monavis] }
|
it { expect(subject.monavis_embed).to eq monavis_embed }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -200,37 +200,37 @@ describe Procedure do
|
||||||
|
|
||||||
context 'monavis' do
|
context 'monavis' do
|
||||||
context 'nil is allowed' do
|
context 'nil is allowed' do
|
||||||
it { is_expected.to allow_value(nil).for(:monavis) }
|
it { is_expected.to allow_value(nil).for(:monavis_embed) }
|
||||||
it { is_expected.to allow_value('').for(:monavis) }
|
it { is_expected.to allow_value('').for(:monavis_embed) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'random string is not allowed' do
|
context 'random string is not allowed' do
|
||||||
let(:procedure) { build(:procedure, monavis: "plop") }
|
let(:procedure) { build(:procedure, monavis_embed: "plop") }
|
||||||
it { expect(procedure.valid?).to eq(false) }
|
it { expect(procedure.valid?).to eq(false) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'random html is not allowed' do
|
context 'random html is not allowed' do
|
||||||
let(:procedure) { build(:procedure, monavis: '<img src="http://some.analytics/hello.gif">') }
|
let(:procedure) { build(:procedure, monavis_embed: '<img src="http://some.analytics/hello.gif">') }
|
||||||
it { expect(procedure.valid?).to eq(false) }
|
it { expect(procedure.valid?).to eq(false) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'Monavis embed code with white button is allowed' do
|
context 'Monavis embed code with white button is allowed' do
|
||||||
monavis_blanc = <<-MSG
|
monavis_blanc = <<-MSG
|
||||||
<a href="https://monavis.numerique.gouv.fr/Demarches/123?&view-mode=formulaire-avis&nd_mode=en-ligne-enti%C3%A8rement&nd_source=button&key=cd4a872d475e4045666057f">
|
<a href="https://monavis.numerique.gouv.fr/Demarches/123?&view-mode=formulaire-avis&nd_mode=en-ligne-enti%C3%A8rement&nd_source=button&key=cd4a872d475e4045666057f">
|
||||||
<img src="https://monavis.numerique.gouv.fr/monavis-static/bouton-blanc.png" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" />
|
<img src="https://monavis.numerique.gouv.fr/monavis-static/bouton-blanc.png" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" />
|
||||||
</a>
|
</a>
|
||||||
MSG
|
MSG
|
||||||
let(:procedure) { build(:procedure, monavis: monavis_blanc) }
|
let(:procedure) { build(:procedure, monavis_embed: monavis_blanc) }
|
||||||
it { expect(procedure.valid?).to eq(true) }
|
it { expect(procedure.valid?).to eq(true) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'Monavis embed code with blue button is allowed' do
|
context 'Monavis embed code with blue button is allowed' do
|
||||||
monavis_blanc = <<-MSG
|
monavis_bleu = <<-MSG
|
||||||
<a href="https://monavis.numerique.gouv.fr/Demarches/123?&view-mode=formulaire-avis&nd_mode=en-ligne-enti%C3%A8rement&nd_source=button&key=cd4a872d475e4045666057f">
|
<a href="https://monavis.numerique.gouv.fr/Demarches/123?&view-mode=formulaire-avis&nd_mode=en-ligne-enti%C3%A8rement&nd_source=button&key=cd4a872d475e4045666057f">
|
||||||
<img src="https://monavis.numerique.gouv.fr/monavis-static/bouton-bleu.png" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" />
|
<img src="https://monavis.numerique.gouv.fr/monavis-static/bouton-bleu.png" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" />
|
||||||
</a>
|
</a>
|
||||||
MSG
|
MSG
|
||||||
let(:procedure) { build(:procedure, monavis: monavis_blanc) }
|
let(:procedure) { build(:procedure, monavis_embed: monavis_bleu) }
|
||||||
it { expect(procedure.valid?).to eq(true) }
|
it { expect(procedure.valid?).to eq(true) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue