feat(sva): more details with example dates on procedure description

This commit is contained in:
Colin Darie 2023-06-28 16:34:50 +02:00
parent 73a28d2eca
commit 4aaf5566c3
No known key found for this signature in database
GPG key ID: 4FB865FDBCA4BCC4
9 changed files with 83 additions and 18 deletions

View file

@ -22,6 +22,10 @@ module ProcedureSVASVRConcern
@sva_svr_configuration ||= SVASVRConfiguration.new(sva_svr)
end
def sva_svr_decision
decision
end
private
def decision

View file

@ -1,6 +1,17 @@
class SVASVRDecisionDateCalculatorService
attr_reader :dossier, :procedure, :unit, :period, :resume_method
EMPTY_DOSSIER = Struct.new(:depose_at) do
def corrections
[]
end
end
def self.decision_date_from_today(procedure)
dossier = EMPTY_DOSSIER.new(Date.current)
new(dossier, procedure).decision_date
end
def initialize(dossier, procedure)
@dossier = dossier
@procedure = procedure

View file

@ -80,14 +80,13 @@
.fr-my-3w
= render Procedure::NoticeComponent.new(procedure:)
- if procedure.sva?
= render Dsfr::CalloutComponent.new(title: t('shared.procedure_description.sva_title'), icon: "fr-fi-information-line") do |c|
- if procedure.sva_svr_enabled?
= render Dsfr::CalloutComponent.new(title: t('shared.procedure_description.sva_svr_title', rule: t(procedure.sva_svr_decision, scope: 'shared.procedures.sva_svr_rule_name')), icon: "fr-fi-information-line", extra_class_names: "fr-my-6w") do |c|
- c.with_body do
%p
= t('shared.procedure_description.sva_text_html')
= t("#{procedure.sva_svr_decision}_text_html", scope: 'shared.procedure_description') # i18n-tasks-use: t('shared.procedure_description.sva_text_html') t('shared.procedure_description.svr_text_html')
%p.fr-mt-1w
= t('shared.procedure_description.sva_svr_prevision_date',
delay: t("x_#{procedure.sva_svr_configuration.unit}", count: procedure.sva_svr_configuration.period.to_i, scope: 'datetime.distance_in_words'),
date: l(SVASVRDecisionDateCalculatorService.decision_date_from_today(procedure), format: :long).gsub(' ', " "))
- elsif procedure.svr?
= render Dsfr::CalloutComponent.new(title: t('shared.procedure_description.svr_title'), icon: "fr-fi-information-line") do |c|
- c.with_body do
%p
= t('shared.procedure_description.svr_text_html')

View file

@ -846,7 +846,10 @@ en:
estimated_fill_duration_detail: "The fill time is etimated to %{estimated_minutes} min. This period may vary depending on the options you choose"
pieces_jointes : What are the required attachments ?
pieces_jointes_conditionnal_list_title : Attachments list according to your situation
sva_title: "Quest-ce que le cadre législatif « Silence Vaut Accord » ?"
sva_text_html: "Le SVA « <strong>Silence Vaut Accord</strong> » est un principe législatif qui définit le comportement dune demande en cas de silence de ladministration : la demande est automatiquement acceptée (par opposition au « Silence Vaut Rejet » où elle serait automatiquement refusée)."
svr_title: "Quest-ce que le cadre législatif « Silence Vaut Rejet » ?"
svr_text_html: "Le SVR « <strong>Silence Vaut Rejet</strong> » est un principe législatif qui définit le comportement dune demande en cas de silence de ladministration : la demande est automatiquement refusée (par opposition au « Silence Vaut Accord » où elle serait automatiquement acceptée)."
sva_svr_title: "This procedure applies the « %{rule} »"
sva_text_html: "SVA, or « <strong>Silence Vaut Rejet</strong> » is a legislative principle that defines the behavior of a request in the event of silence from the administration: the request is automatically accepted after a certain period if your file is complete."
svr_text_html: "SVR, or « <strong>Silence Vaut Rejet</strong> » is a legislative principle that defines the behavior of a request in the event of silence from the administration: the request is automatically refused after a certain period if your file is complete."
sva_svr_prevision_date:
Thus, you will receive an answer to your request within %{delay} of submitting your complete file.
For example, if you submit your application today, you will receive a reply no later than %{date}.
If your file is incomplete, this date may be postponed until submitting a completed file.

View file

@ -900,7 +900,10 @@ fr:
estimated_fill_duration_detail: "La durée de remplissage est estimée à %{estimated_minutes} min. Ce délai peut varier selon les options que vous choisirez."
pieces_jointes : Quelles sont les pièces justificatives à fournir ?
pieces_jointes_conditionnal_list_title : Liste des pièces en fonction de votre situation
sva_title: "Quest-ce que le cadre législatif « Silence Vaut Accord » ?"
sva_text_html: "Le SVA « <strong>Silence Vaut Accord</strong> » est un principe législatif qui définit le comportement dune demande en cas de silence de ladministration : la demande est automatiquement acceptée (par opposition au « Silence Vaut Rejet » où elle serait automatiquement refusée)."
svr_title: "Quest-ce que le cadre législatif « Silence Vaut Rejet » ?"
svr_text_html: "Le SVR « <strong>Silence Vaut Rejet</strong> » est un principe législatif qui définit le comportement dune demande en cas de silence de ladministration : la demande est automatiquement refusée (par opposition au « Silence Vaut Accord » où elle serait automatiquement acceptée)."
sva_svr_title: "Cette démarche applique le « %{rule} »"
sva_text_html: "Le SVA, ou « <strong>Silence Vaut Accord</strong> », est un principe législatif qui définit le comportement dune demande en cas dabsence de réponse de ladministration : la demande sera automatiquement acceptée à lissue dun délai si votre dossier est complet."
svr_text_html: "Le SVR, ou « <strong>Silence Vaut Rejet</strong> », est un principe législatif qui définit le comportement dune demande en cas dabsence de réponse de ladministration : la demande sera automatiquement refusée à lissue dun délai si votre dossier est complet."
sva_svr_prevision_date:
Ainsi, vous recevrez une réponse à votre demande dans les %{delay} après avoir déposé votre dossier complet.
Par exemple, si vous déposez votre dossier aujourd'hui, vous aurez une réponse au plus tard le %{date}.
Si votre dossier est incomplet, cette date pourrait être repoussée jusquà la soumission dun dossier complété.

View file

@ -6,6 +6,15 @@
:message_date_with_year => lambda { |time, _| "%B #{time.day.ordinalize} %Y at %H:%M" },
:message_date_without_time => lambda { |_time, _| "%Y/%m/%d" }
}
},
datetime: {
distance_in_words: {
x_weeks: {
one: "1 week",
other: "%{count} weeks"
}
}
}
}
}

View file

@ -13,6 +13,15 @@
:message_date_with_year => lambda { |time, _| "le #{time.day == 1 ? '1er' : time.day} %B %Y à %H h %M" },
:message_date_without_time => lambda { |_time, _| "%d/%m/%Y" }
}
},
datetime: {
distance_in_words: {
x_weeks: {
one: "1 semaine",
other: "%{count} semaines"
}
}
}
}
}

View file

@ -6,9 +6,9 @@ describe SVASVRDecisionDateCalculatorService do
let(:procedure) { create(:procedure, sva_svr: config) }
let(:dossier) { create(:dossier, :en_instruction, procedure:, depose_at: DateTime.new(2023, 5, 15, 12)) }
subject { described_class.new(dossier, procedure).decision_date }
describe '#decision_date' do
subject { described_class.new(dossier, procedure).decision_date }
context 'when sva has a months period' do
let(:config) { { decision: :sva, period: 2, unit: :months, resume: :continue } }
@ -153,4 +153,15 @@ describe SVASVRDecisionDateCalculatorService do
end
end
end
describe '#decision_date_from_today' do
let(:config) { { decision: :sva, period: 2, unit: :months, resume: :continue } }
before { travel_to DateTime.new(2023, 4, 15, 12) }
subject { described_class.decision_date_from_today(procedure) }
it 'calculates the date based on today' do
expect(subject).to eq(Date.new(2023, 6, 16))
end
end
end

View file

@ -73,10 +73,26 @@ describe 'shared/_procedure_description', type: :view do
end
context 'when the procedure is sva' do
before { travel_to DateTime.new(2023, 1, 1) }
let(:procedure) { create(:procedure, :published, :sva) }
it 'shows an explanation text' do
subject
expect(rendered).to have_text('Cette démarche applique le « Silence Vaut Accord »')
expect(rendered).to have_text('dans les 2 mois')
expect(rendered).to have_text("2 mars 2023")
end
context 'when unit is weeks' do
before {
procedure.sva_svr["unit"] = "weeks"
}
it 'shows an human period' do
subject
expect(rendered).to have_text('dans les 2 semaines')
expect(rendered).to have_text("16 janvier 2023")
end
end
end
end