add champ validation
This commit is contained in:
parent
c76d1043fa
commit
40d0cfcdc4
5 changed files with 76 additions and 6 deletions
|
@ -19,6 +19,10 @@
|
|||
# type_de_champ_id :integer
|
||||
#
|
||||
class Champs::CnafChamp < Champs::TextChamp
|
||||
# see https://github.com/betagouv/api-particulier/blob/master/src/presentation/middlewares/cnaf-input-validation.middleware.ts
|
||||
validates :numero_allocataire, format: { with: /\A\d{1,7}\z/ }, if: -> { code_postal.present? }
|
||||
validates :code_postal, format: { with: /\A\w{5}\z/ }, if: -> { numero_allocataire.present? }
|
||||
|
||||
store_accessor :value_json, :numero_allocataire, :code_postal
|
||||
|
||||
def fetch_external_data?
|
||||
|
|
|
@ -274,6 +274,12 @@ en:
|
|||
taken: is already used for procedure. You cannot use it because it belongs to another administrator.
|
||||
# taken_can_be_claimed: est identique à celui d’une autre de vos procedures publiées. Si vous publiez cette procedure, l’ancienne sera dépubliée et ne sera plus accessible au public. Les utilisateurs qui ont commencé un brouillon vont pouvoir le déposer.
|
||||
invalid: is not valid. It must countain between 3 and 50 characters among a-z, 0-9, '_' and '-'.
|
||||
"champs/cnaf_champ":
|
||||
attributes:
|
||||
numero_allocataire:
|
||||
invalid: "must be a maximum of 7 digits"
|
||||
code_postal:
|
||||
invalid: "must be 5 characters long"
|
||||
errors:
|
||||
messages:
|
||||
dossier_not_found: "The file does not exist or you do not have access to it."
|
||||
|
|
|
@ -280,6 +280,12 @@ fr:
|
|||
taken: est déjà utilisé par une démarche. Vous ne pouvez pas l’utiliser car il appartient à un autre administrateur.
|
||||
taken_can_be_claimed: est identique à celui d’une autre de vos démarches publiées. Si vous publiez cette démarche, l’ancienne sera dépubliée et ne sera plus accessible au public. Les utilisateurs qui ont commencé un brouillon vont pouvoir le déposer.
|
||||
invalid: n’est pas valide. Il doit comporter au moins 3 caractères, au plus 50 caractères et seuls les caractères a-z, 0-9, '_' et '-' sont autorisés.
|
||||
"champs/cnaf_champ":
|
||||
attributes:
|
||||
numero_allocataire:
|
||||
invalid: "doit être composé au maximum de 7 chiffres"
|
||||
code_postal:
|
||||
invalid: "doit posséder 5 caractères"
|
||||
errors:
|
||||
messages:
|
||||
saml_not_authorized: "Vous n’êtes pas autorisé à accéder à ce service."
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
fr:
|
||||
activerecord:
|
||||
attributes:
|
||||
champ:
|
||||
value: La valeur du champ
|
||||
piece_justificative_file: La pièce justificative
|
|
@ -33,4 +33,64 @@ describe Champs::CnafChamp, type: :model do
|
|||
it { expect(JSON.parse(champ.external_id)).to eq({ "code_postal" => "12345", "numero_allocataire" => "1234567" }) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#validate' do
|
||||
let(:numero_allocataire) { '1234567' }
|
||||
let(:code_postal) { '12345' }
|
||||
let(:champ) { described_class.new(dossier: create(:dossier), type_de_champ: create(:type_de_champ_cnaf)) }
|
||||
|
||||
subject { champ.valid? }
|
||||
|
||||
before do
|
||||
champ.numero_allocataire = numero_allocataire
|
||||
champ.code_postal = code_postal
|
||||
end
|
||||
|
||||
context 'when numero_allocataire and code_postal are valids' do
|
||||
it { is_expected.to be true }
|
||||
end
|
||||
|
||||
context 'when numero_allocataire and code_postal are nil' do
|
||||
let(:numero_allocataire) { nil }
|
||||
let(:code_postal) { nil }
|
||||
|
||||
it { is_expected.to be true }
|
||||
end
|
||||
|
||||
context 'when only code_postal is nil' do
|
||||
let(:code_postal) { nil }
|
||||
|
||||
it do
|
||||
is_expected.to be false
|
||||
expect(champ.errors.full_messages).to eq(["Code postal doit posséder 5 caractères"])
|
||||
end
|
||||
end
|
||||
|
||||
context 'when only numero_allocataire is nil' do
|
||||
let(:numero_allocataire) { nil }
|
||||
|
||||
it do
|
||||
is_expected.to be false
|
||||
expect(champ.errors.full_messages).to eq(["Numero allocataire doit être composé au maximum de 7 chiffres"])
|
||||
end
|
||||
end
|
||||
|
||||
context 'when numero_allocataire is invalid' do
|
||||
let(:numero_allocataire) { '123456a' }
|
||||
|
||||
it do
|
||||
is_expected.to be false
|
||||
expect(champ.errors.full_messages).to eq(["Numero allocataire doit être composé au maximum de 7 chiffres"])
|
||||
end
|
||||
end
|
||||
|
||||
context 'when code_postal is invalid' do
|
||||
let(:code_postal) { '123456' }
|
||||
|
||||
it do
|
||||
is_expected.to be false
|
||||
expect(champ.errors.full_messages).to eq(["Code postal doit posséder 5 caractères"])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue