[#1946] Add validation to durees conservation
This commit is contained in:
parent
d3cfcaa8ac
commit
42765efb91
5 changed files with 44 additions and 0 deletions
|
@ -1,4 +1,6 @@
|
||||||
class Procedure < ApplicationRecord
|
class Procedure < ApplicationRecord
|
||||||
|
MAX_DUREE_CONSERVATION = 36
|
||||||
|
|
||||||
has_many :types_de_piece_justificative, -> { order "order_place ASC" }, dependent: :destroy
|
has_many :types_de_piece_justificative, -> { order "order_place ASC" }, dependent: :destroy
|
||||||
has_many :types_de_champ, -> { public_only }, dependent: :destroy
|
has_many :types_de_champ, -> { public_only }, dependent: :destroy
|
||||||
has_many :types_de_champ_private, -> { private_only }, class_name: 'TypeDeChamp', dependent: :destroy
|
has_many :types_de_champ_private, -> { private_only }, class_name: 'TypeDeChamp', dependent: :destroy
|
||||||
|
@ -47,6 +49,11 @@ class Procedure < ApplicationRecord
|
||||||
validates :libelle, presence: true, allow_blank: false, allow_nil: false
|
validates :libelle, presence: true, allow_blank: false, allow_nil: false
|
||||||
validates :description, presence: true, allow_blank: false, allow_nil: false
|
validates :description, presence: true, allow_blank: false, allow_nil: false
|
||||||
validate :check_juridique
|
validate :check_juridique
|
||||||
|
# FIXME: remove duree_conservation_required flag once all procedures are converted to the new style
|
||||||
|
validates :duree_conservation_dossiers_dans_ds, allow_nil: false, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: MAX_DUREE_CONSERVATION }, if: :durees_conservation_required
|
||||||
|
validates :duree_conservation_dossiers_hors_ds, allow_nil: false, numericality: { only_integer: true, greater_than_or_equal_to: 0 }, if: :durees_conservation_required
|
||||||
|
validates :duree_conservation_dossiers_dans_ds, allow_nil: true, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: MAX_DUREE_CONSERVATION }, unless: :durees_conservation_required
|
||||||
|
validates :duree_conservation_dossiers_hors_ds, allow_nil: true, numericality: { only_integer: true, greater_than_or_equal_to: 0 }, unless: :durees_conservation_required
|
||||||
|
|
||||||
before_save :update_juridique_required
|
before_save :update_juridique_required
|
||||||
|
|
||||||
|
|
|
@ -88,6 +88,7 @@ fr:
|
||||||
errors:
|
errors:
|
||||||
messages:
|
messages:
|
||||||
blank: "doit être rempli"
|
blank: "doit être rempli"
|
||||||
|
not_a_number: 'doit être un nombre'
|
||||||
models:
|
models:
|
||||||
attestation_template:
|
attestation_template:
|
||||||
attributes:
|
attributes:
|
||||||
|
|
|
@ -3,3 +3,5 @@ fr:
|
||||||
attributes:
|
attributes:
|
||||||
procedure:
|
procedure:
|
||||||
organisation: Organisme
|
organisation: Organisme
|
||||||
|
duree_conservation_dossiers_dans_ds: Durée de conservation des dossiers sur demarches-simplifiees.fr
|
||||||
|
duree_conservation_dossiers_hors_ds: Durée de conservation des dossiers hors demarches-simplifiees.fr
|
||||||
|
|
|
@ -10,6 +10,8 @@ FactoryBot.define do
|
||||||
published_at nil
|
published_at nil
|
||||||
cerfa_flag false
|
cerfa_flag false
|
||||||
administrateur { create(:administrateur) }
|
administrateur { create(:administrateur) }
|
||||||
|
duree_conservation_dossiers_dans_ds 3
|
||||||
|
duree_conservation_dossiers_hors_ds 6
|
||||||
|
|
||||||
after(:build) do |procedure, _evaluator|
|
after(:build) do |procedure, _evaluator|
|
||||||
if procedure.module_api_carto.nil?
|
if procedure.module_api_carto.nil?
|
||||||
|
|
|
@ -199,6 +199,38 @@ describe Procedure do
|
||||||
|
|
||||||
it { expect(procedure.valid?).to eq(true) }
|
it { expect(procedure.valid?).to eq(true) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
shared_examples 'duree de conservation' do
|
||||||
|
context 'duree_conservation_required it true, the field gets validated' do
|
||||||
|
before { subject.durees_conservation_required = true }
|
||||||
|
|
||||||
|
it { is_expected.not_to allow_value(nil).for(field_name) }
|
||||||
|
it { is_expected.not_to allow_value('').for(field_name) }
|
||||||
|
it { is_expected.not_to allow_value('trois').for(field_name) }
|
||||||
|
it { is_expected.to allow_value(3).for(field_name) }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'duree_conservation_required is false, the field doesn’t get validated' do
|
||||||
|
before { subject.durees_conservation_required = false }
|
||||||
|
|
||||||
|
it { is_expected.to allow_value(nil).for(field_name) }
|
||||||
|
it { is_expected.to allow_value('').for(field_name) }
|
||||||
|
it { is_expected.not_to allow_value('trois').for(field_name) }
|
||||||
|
it { is_expected.to allow_value(3).for(field_name) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'duree de conservation dans ds' do
|
||||||
|
let(:field_name) { :duree_conservation_dossiers_dans_ds }
|
||||||
|
|
||||||
|
it_behaves_like 'duree de conservation'
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'duree de conservation hors ds' do
|
||||||
|
let(:field_name) { :duree_conservation_dossiers_hors_ds }
|
||||||
|
|
||||||
|
it_behaves_like 'duree de conservation'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#types_de_champ_ordered' do
|
describe '#types_de_champ_ordered' do
|
||||||
|
|
Loading…
Reference in a new issue