Improve numeric field validation errors (#4076)
Usager : améliore le message d'erreur lorsque la valeur d'un champ numérique est invalide
This commit is contained in:
commit
d3a7bc271e
6 changed files with 26 additions and 4 deletions
|
@ -1,5 +1,11 @@
|
||||||
class Champs::DecimalNumberChamp < Champ
|
class Champs::DecimalNumberChamp < Champ
|
||||||
validates :value, numericality: { allow_nil: true, allow_blank: true }
|
validates :value, numericality: {
|
||||||
|
allow_nil: true,
|
||||||
|
allow_blank: true,
|
||||||
|
message: -> (object, data) {
|
||||||
|
"« #{object.libelle} » " + object.errors.generate_message(data[:attribute].downcase, :not_a_number)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def for_export
|
def for_export
|
||||||
processed_value
|
processed_value
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
class Champs::IntegerNumberChamp < Champ
|
class Champs::IntegerNumberChamp < Champ
|
||||||
validates :value, numericality: { only_integer: true, allow_nil: true, allow_blank: true }
|
validates :value, numericality: {
|
||||||
|
only_integer: true,
|
||||||
|
allow_nil: true,
|
||||||
|
allow_blank: true,
|
||||||
|
message: -> (object, data) {
|
||||||
|
"« #{object.libelle} » " + object.errors.generate_message(data[:attribute].downcase, :not_an_integer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def for_export
|
def for_export
|
||||||
processed_value
|
processed_value
|
||||||
|
|
|
@ -128,6 +128,7 @@ fr:
|
||||||
messages:
|
messages:
|
||||||
blank: "doit être rempli"
|
blank: "doit être rempli"
|
||||||
not_a_number: 'doit être un nombre'
|
not_a_number: 'doit être un nombre'
|
||||||
|
not_an_integer: 'doit être un nombre entier (sans chiffres après la virgule)'
|
||||||
greater_than: "doit être supérieur à %{count}"
|
greater_than: "doit être supérieur à %{count}"
|
||||||
greater_than_or_equal_to: "doit être supérieur ou égal à %{count}"
|
greater_than_or_equal_to: "doit être supérieur ou égal à %{count}"
|
||||||
less_than: "doit être inférieur à %{count}"
|
less_than: "doit être inférieur à %{count}"
|
||||||
|
|
5
config/locales/models/champs/fr.yml
Normal file
5
config/locales/models/champs/fr.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
fr:
|
||||||
|
activerecord:
|
||||||
|
attributes:
|
||||||
|
champs:
|
||||||
|
value: La valeur du champ
|
|
@ -1,7 +1,7 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
describe Champs::DecimalNumberChamp do
|
describe Champs::DecimalNumberChamp do
|
||||||
subject { Champs::DecimalNumberChamp.new(value: value) }
|
subject { build(:champ_decimal_number, value: value).tap(&:valid?) }
|
||||||
|
|
||||||
describe '#valid?' do
|
describe '#valid?' do
|
||||||
context 'when the value is integer number' do
|
context 'when the value is integer number' do
|
||||||
|
@ -20,6 +20,7 @@ describe Champs::DecimalNumberChamp do
|
||||||
let(:value) { 'toto' }
|
let(:value) { 'toto' }
|
||||||
|
|
||||||
it { is_expected.to_not be_valid }
|
it { is_expected.to_not be_valid }
|
||||||
|
it { expect(subject.errors[:value]).to eq(["« #{subject.libelle} » doit être un nombre"]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when the value is blank' do
|
context 'when the value is blank' do
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
describe Champs::IntegerNumberChamp do
|
describe Champs::IntegerNumberChamp do
|
||||||
subject { Champs::IntegerNumberChamp.new(value: value) }
|
subject { build(:champ_integer_number, value: value).tap(&:valid?) }
|
||||||
|
|
||||||
describe '#valid?' do
|
describe '#valid?' do
|
||||||
context 'when the value is integer number' do
|
context 'when the value is integer number' do
|
||||||
|
@ -14,12 +14,14 @@ describe Champs::IntegerNumberChamp do
|
||||||
let(:value) { 2.6 }
|
let(:value) { 2.6 }
|
||||||
|
|
||||||
it { is_expected.to_not be_valid }
|
it { is_expected.to_not be_valid }
|
||||||
|
it { expect(subject.errors[:value]).to eq(["« #{subject.libelle} » doit être un nombre entier (sans chiffres après la virgule)"]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when the value is not a number' do
|
context 'when the value is not a number' do
|
||||||
let(:value) { 'toto' }
|
let(:value) { 'toto' }
|
||||||
|
|
||||||
it { is_expected.to_not be_valid }
|
it { is_expected.to_not be_valid }
|
||||||
|
it { expect(subject.errors[:value]).to eq(["« #{subject.libelle} » doit être un nombre entier (sans chiffres après la virgule)"]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when the value is blank' do
|
context 'when the value is blank' do
|
||||||
|
|
Loading…
Reference in a new issue