Refactoring - Version stable
This commit is contained in:
@@ -9,189 +9,189 @@ void main() {
|
||||
group('required', () {
|
||||
test('should return error for null value', () {
|
||||
final validator = Validators.required();
|
||||
expect(validator!(''), equals('Ce champ est requis'));
|
||||
expect(validator(''), equals('Ce champ est requis'));
|
||||
});
|
||||
|
||||
test('should return error for empty string', () {
|
||||
final validator = Validators.required();
|
||||
expect(validator!(''), equals('Ce champ est requis'));
|
||||
expect(validator(''), equals('Ce champ est requis'));
|
||||
});
|
||||
|
||||
test('should return error for whitespace only', () {
|
||||
final validator = Validators.required();
|
||||
expect(validator!(' '), equals('Ce champ est requis'));
|
||||
expect(validator(' '), equals('Ce champ est requis'));
|
||||
});
|
||||
|
||||
test('should return null for valid value', () {
|
||||
final validator = Validators.required();
|
||||
expect(validator!('value'), isNull);
|
||||
expect(validator('value'), isNull);
|
||||
});
|
||||
|
||||
test('should use custom message', () {
|
||||
final validator = Validators.required(message: 'Custom error');
|
||||
expect(validator!(''), equals('Custom error'));
|
||||
expect(validator(''), equals('Custom error'));
|
||||
});
|
||||
});
|
||||
|
||||
group('minLength', () {
|
||||
test('should return error when value is too short', () {
|
||||
final validator = Validators.minLength(5);
|
||||
expect(validator!('abc'), equals('Minimum 5 caractères requis'));
|
||||
expect(validator('abc'), equals('Minimum 5 caractères requis'));
|
||||
});
|
||||
|
||||
test('should return null when value meets minimum', () {
|
||||
final validator = Validators.minLength(5);
|
||||
expect(validator!('abcde'), isNull);
|
||||
expect(validator('abcde'), isNull);
|
||||
});
|
||||
|
||||
test('should return null when value exceeds minimum', () {
|
||||
final validator = Validators.minLength(5);
|
||||
expect(validator!('abcdefgh'), isNull);
|
||||
expect(validator('abcdefgh'), isNull);
|
||||
});
|
||||
|
||||
test('should trim value before checking length', () {
|
||||
final validator = Validators.minLength(5);
|
||||
expect(validator!(' abc '), equals('Minimum 5 caractères requis'));
|
||||
expect(validator(' abc '), equals('Minimum 5 caractères requis'));
|
||||
});
|
||||
});
|
||||
|
||||
group('maxLength', () {
|
||||
test('should return error when value is too long', () {
|
||||
final validator = Validators.maxLength(5);
|
||||
expect(validator!('abcdefgh'), equals('Maximum 5 caractères autorisés'));
|
||||
expect(validator('abcdefgh'), equals('Maximum 5 caractères autorisés'));
|
||||
});
|
||||
|
||||
test('should return null when value meets maximum', () {
|
||||
final validator = Validators.maxLength(5);
|
||||
expect(validator!('abcde'), isNull);
|
||||
expect(validator('abcde'), isNull);
|
||||
});
|
||||
|
||||
test('should return null when value is under maximum', () {
|
||||
final validator = Validators.maxLength(5);
|
||||
expect(validator!('abc'), isNull);
|
||||
expect(validator('abc'), isNull);
|
||||
});
|
||||
});
|
||||
|
||||
group('email', () {
|
||||
test('should return null for valid email', () {
|
||||
final validator = Validators.email();
|
||||
expect(validator!('test@example.com'), isNull);
|
||||
expect(validator!('user.name@domain.co.uk'), isNull);
|
||||
expect(validator!('user+tag@example.com'), isNull);
|
||||
expect(validator('test@example.com'), isNull);
|
||||
expect(validator('user.name@domain.co.uk'), isNull);
|
||||
expect(validator('user+tag@example.com'), isNull);
|
||||
});
|
||||
|
||||
test('should return error for invalid email', () {
|
||||
final validator = Validators.email();
|
||||
expect(validator!('invalid'), equals('Adresse email invalide'));
|
||||
expect(validator!('test@'), equals('Adresse email invalide'));
|
||||
expect(validator!('@example.com'), equals('Adresse email invalide'));
|
||||
expect(validator!('test @example.com'), equals('Adresse email invalide'));
|
||||
expect(validator('invalid'), equals('Adresse email invalide'));
|
||||
expect(validator('test@'), equals('Adresse email invalide'));
|
||||
expect(validator('@example.com'), equals('Adresse email invalide'));
|
||||
expect(validator('test @example.com'), equals('Adresse email invalide'));
|
||||
});
|
||||
|
||||
test('should return null for empty value (use required separately)', () {
|
||||
final validator = Validators.email();
|
||||
expect(validator!(''), isNull);
|
||||
expect(validator(''), isNull);
|
||||
});
|
||||
});
|
||||
|
||||
group('numeric', () {
|
||||
test('should return null for valid numbers', () {
|
||||
final validator = Validators.numeric();
|
||||
expect(validator!('123'), isNull);
|
||||
expect(validator!('123.45'), isNull);
|
||||
expect(validator!('-123'), isNull);
|
||||
expect(validator!('0'), isNull);
|
||||
expect(validator('123'), isNull);
|
||||
expect(validator('123.45'), isNull);
|
||||
expect(validator('-123'), isNull);
|
||||
expect(validator('0'), isNull);
|
||||
});
|
||||
|
||||
test('should return error for non-numeric values', () {
|
||||
final validator = Validators.numeric();
|
||||
expect(validator!('abc'), equals('Veuillez entrer un nombre valide'));
|
||||
expect(validator!('12.34.56'), equals('Veuillez entrer un nombre valide'));
|
||||
expect(validator('abc'), equals('Veuillez entrer un nombre valide'));
|
||||
expect(validator('12.34.56'), equals('Veuillez entrer un nombre valide'));
|
||||
});
|
||||
|
||||
test('should return null for empty value', () {
|
||||
final validator = Validators.numeric();
|
||||
expect(validator!(''), isNull);
|
||||
expect(validator(''), isNull);
|
||||
});
|
||||
});
|
||||
|
||||
group('minValue', () {
|
||||
test('should return error when value is below minimum', () {
|
||||
final validator = Validators.minValue(10);
|
||||
expect(validator!('5'), equals('La valeur doit être au moins 10.0'));
|
||||
expect(validator('5'), equals('La valeur doit être au moins 10.0'));
|
||||
});
|
||||
|
||||
test('should return null when value meets minimum', () {
|
||||
final validator = Validators.minValue(10);
|
||||
expect(validator!('10'), isNull);
|
||||
expect(validator('10'), isNull);
|
||||
});
|
||||
|
||||
test('should return null when value exceeds minimum', () {
|
||||
final validator = Validators.minValue(10);
|
||||
expect(validator!('15'), isNull);
|
||||
expect(validator('15'), isNull);
|
||||
});
|
||||
|
||||
test('should work with decimals', () {
|
||||
final validator = Validators.minValue(10.5);
|
||||
expect(validator!('10.4'), contains('au moins'));
|
||||
expect(validator!('10.5'), isNull);
|
||||
expect(validator!('10.6'), isNull);
|
||||
expect(validator('10.4'), contains('au moins'));
|
||||
expect(validator('10.5'), isNull);
|
||||
expect(validator('10.6'), isNull);
|
||||
});
|
||||
});
|
||||
|
||||
group('maxValue', () {
|
||||
test('should return error when value exceeds maximum', () {
|
||||
final validator = Validators.maxValue(100);
|
||||
expect(validator!('150'), equals('La valeur doit être au maximum 100.0'));
|
||||
expect(validator('150'), equals('La valeur doit être au maximum 100.0'));
|
||||
});
|
||||
|
||||
test('should return null when value meets maximum', () {
|
||||
final validator = Validators.maxValue(100);
|
||||
expect(validator!('100'), isNull);
|
||||
expect(validator('100'), isNull);
|
||||
});
|
||||
|
||||
test('should return null when value is below maximum', () {
|
||||
final validator = Validators.maxValue(100);
|
||||
expect(validator!('50'), isNull);
|
||||
expect(validator('50'), isNull);
|
||||
});
|
||||
});
|
||||
|
||||
group('range', () {
|
||||
test('should return error when value is below range', () {
|
||||
final validator = Validators.range(10, 100);
|
||||
expect(validator!('5'), contains('entre'));
|
||||
expect(validator('5'), contains('entre'));
|
||||
});
|
||||
|
||||
test('should return error when value is above range', () {
|
||||
final validator = Validators.range(10, 100);
|
||||
expect(validator!('150'), contains('entre'));
|
||||
expect(validator('150'), contains('entre'));
|
||||
});
|
||||
|
||||
test('should return null when value is within range', () {
|
||||
final validator = Validators.range(10, 100);
|
||||
expect(validator!('10'), isNull);
|
||||
expect(validator!('50'), isNull);
|
||||
expect(validator!('100'), isNull);
|
||||
expect(validator('10'), isNull);
|
||||
expect(validator('50'), isNull);
|
||||
expect(validator('100'), isNull);
|
||||
});
|
||||
});
|
||||
|
||||
group('phone', () {
|
||||
test('should return null for valid phone numbers', () {
|
||||
final validator = Validators.phone();
|
||||
expect(validator!('+33612345678'), isNull);
|
||||
expect(validator!('06 12 34 56 78'), isNull);
|
||||
expect(validator!('(123) 456-7890'), isNull);
|
||||
expect(validator('+33612345678'), isNull);
|
||||
expect(validator('06 12 34 56 78'), isNull);
|
||||
expect(validator('(123) 456-7890'), isNull);
|
||||
});
|
||||
|
||||
test('should return error for invalid phone numbers', () {
|
||||
final validator = Validators.phone();
|
||||
expect(validator!('abc'), equals('Numéro de téléphone invalide'));
|
||||
expect(validator!('123'), equals('Numéro de téléphone trop court'));
|
||||
expect(validator('abc'), equals('Numéro de téléphone invalide'));
|
||||
expect(validator('123'), equals('Numéro de téléphone trop court'));
|
||||
});
|
||||
|
||||
test('should return null for empty value', () {
|
||||
final validator = Validators.phone();
|
||||
expect(validator!(''), isNull);
|
||||
expect(validator(''), isNull);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -202,22 +202,22 @@ void main() {
|
||||
message: 'Format: 3 lettres majuscules + 3 chiffres',
|
||||
);
|
||||
|
||||
expect(validator!('ABC123'), isNull);
|
||||
expect(validator!('XYZ999'), isNull);
|
||||
expect(validator!('abc123'), equals('Format: 3 lettres majuscules + 3 chiffres'));
|
||||
expect(validator!('AB123'), equals('Format: 3 lettres majuscules + 3 chiffres'));
|
||||
expect(validator('ABC123'), isNull);
|
||||
expect(validator('XYZ999'), isNull);
|
||||
expect(validator('abc123'), equals('Format: 3 lettres majuscules + 3 chiffres'));
|
||||
expect(validator('AB123'), equals('Format: 3 lettres majuscules + 3 chiffres'));
|
||||
});
|
||||
});
|
||||
|
||||
group('match', () {
|
||||
test('should return error when values do not match', () {
|
||||
final validator = Validators.match('password123');
|
||||
expect(validator!('password456'), equals('Les valeurs ne correspondent pas'));
|
||||
expect(validator('password456'), equals('Les valeurs ne correspondent pas'));
|
||||
});
|
||||
|
||||
test('should return null when values match', () {
|
||||
final validator = Validators.match('password123');
|
||||
expect(validator!('password123'), isNull);
|
||||
expect(validator('password123'), isNull);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -229,10 +229,10 @@ void main() {
|
||||
Validators.maxLength(10),
|
||||
]);
|
||||
|
||||
expect(validator!(''), equals('Ce champ est requis'));
|
||||
expect(validator!('abc'), equals('Minimum 5 caractères requis'));
|
||||
expect(validator!('12345678901'), equals('Maximum 10 caractères autorisés'));
|
||||
expect(validator!('valid'), isNull);
|
||||
expect(validator(''), equals('Ce champ est requis'));
|
||||
expect(validator('abc'), equals('Minimum 5 caractères requis'));
|
||||
expect(validator('12345678901'), equals('Maximum 10 caractères autorisés'));
|
||||
expect(validator('valid'), isNull);
|
||||
});
|
||||
|
||||
test('should stop at first error', () {
|
||||
@@ -242,7 +242,7 @@ void main() {
|
||||
]);
|
||||
|
||||
// Should fail on required, not reach email validator
|
||||
expect(validator!(''), equals('Ce champ est requis'));
|
||||
expect(validator(''), equals('Ce champ est requis'));
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -251,117 +251,117 @@ void main() {
|
||||
group('amount', () {
|
||||
test('should return null for valid amounts', () {
|
||||
final validator = FinanceValidators.amount();
|
||||
expect(validator!('100'), isNull);
|
||||
expect(validator!('100.50'), isNull);
|
||||
expect(validator!('0.01'), isNull);
|
||||
expect(validator('100'), isNull);
|
||||
expect(validator('100.50'), isNull);
|
||||
expect(validator('0.01'), isNull);
|
||||
});
|
||||
|
||||
test('should return error for negative or zero amounts', () {
|
||||
final validator = FinanceValidators.amount();
|
||||
expect(validator!('0'), equals('Le montant doit être positif'));
|
||||
expect(validator!('-10'), equals('Le montant doit être positif'));
|
||||
expect(validator('0'), equals('Le montant doit être positif'));
|
||||
expect(validator('-10'), equals('Le montant doit être positif'));
|
||||
});
|
||||
|
||||
test('should return error for invalid numbers', () {
|
||||
final validator = FinanceValidators.amount();
|
||||
expect(validator!('abc'), equals('Montant invalide'));
|
||||
expect(validator('abc'), equals('Montant invalide'));
|
||||
});
|
||||
|
||||
test('should enforce minimum amount', () {
|
||||
final validator = FinanceValidators.amount(min: 100);
|
||||
expect(validator!('50'), equals('Le montant minimum est 100.0'));
|
||||
expect(validator!('100'), isNull);
|
||||
expect(validator!('150'), isNull);
|
||||
expect(validator('50'), equals('Le montant minimum est 100.0'));
|
||||
expect(validator('100'), isNull);
|
||||
expect(validator('150'), isNull);
|
||||
});
|
||||
|
||||
test('should enforce maximum amount', () {
|
||||
final validator = FinanceValidators.amount(max: 1000);
|
||||
expect(validator!('1500'), equals('Le montant maximum est 1000.0'));
|
||||
expect(validator!('1000'), isNull);
|
||||
expect(validator!('500'), isNull);
|
||||
expect(validator('1500'), equals('Le montant maximum est 1000.0'));
|
||||
expect(validator('1000'), isNull);
|
||||
expect(validator('500'), isNull);
|
||||
});
|
||||
|
||||
test('should enforce max 2 decimals', () {
|
||||
final validator = FinanceValidators.amount();
|
||||
expect(validator!('100.123'), equals('Maximum 2 décimales autorisées'));
|
||||
expect(validator!('100.12'), isNull);
|
||||
expect(validator!('100.1'), isNull);
|
||||
expect(validator('100.123'), equals('Maximum 2 décimales autorisées'));
|
||||
expect(validator('100.12'), isNull);
|
||||
expect(validator('100.1'), isNull);
|
||||
});
|
||||
});
|
||||
|
||||
group('budgetLineName', () {
|
||||
test('should require name', () {
|
||||
final validator = FinanceValidators.budgetLineName();
|
||||
expect(validator!(''), contains('requis'));
|
||||
expect(validator(''), contains('requis'));
|
||||
});
|
||||
|
||||
test('should enforce min length', () {
|
||||
final validator = FinanceValidators.budgetLineName();
|
||||
expect(validator!('ab'), contains('Minimum 3 caractères'));
|
||||
expect(validator('ab'), contains('Minimum 3 caractères'));
|
||||
});
|
||||
|
||||
test('should enforce max length', () {
|
||||
final validator = FinanceValidators.budgetLineName();
|
||||
final longName = 'a' * 101;
|
||||
expect(validator!(longName), contains('Maximum 100 caractères'));
|
||||
expect(validator(longName), contains('Maximum 100 caractères'));
|
||||
});
|
||||
|
||||
test('should accept valid names', () {
|
||||
final validator = FinanceValidators.budgetLineName();
|
||||
expect(validator!('Cotisations'), isNull);
|
||||
expect(validator!('Ligne budgétaire test'), isNull);
|
||||
expect(validator('Cotisations'), isNull);
|
||||
expect(validator('Ligne budgétaire test'), isNull);
|
||||
});
|
||||
});
|
||||
|
||||
group('rejectionReason', () {
|
||||
test('should require reason', () {
|
||||
final validator = FinanceValidators.rejectionReason();
|
||||
expect(validator!(''), contains('requis'));
|
||||
expect(validator(''), contains('requis'));
|
||||
});
|
||||
|
||||
test('should enforce min length', () {
|
||||
final validator = FinanceValidators.rejectionReason();
|
||||
expect(validator!('short'), contains('min 10 caractères'));
|
||||
expect(validator('short'), contains('min 10 caractères'));
|
||||
});
|
||||
|
||||
test('should enforce max length', () {
|
||||
final validator = FinanceValidators.rejectionReason();
|
||||
final longReason = 'a' * 501;
|
||||
expect(validator!(longReason), contains('Maximum 500 caractères'));
|
||||
expect(validator(longReason), contains('Maximum 500 caractères'));
|
||||
});
|
||||
|
||||
test('should accept valid reasons', () {
|
||||
final validator = FinanceValidators.rejectionReason();
|
||||
expect(validator!('Cette transaction ne respecte pas les règles'), isNull);
|
||||
expect(validator('Cette transaction ne respecte pas les règles'), isNull);
|
||||
});
|
||||
});
|
||||
|
||||
group('fiscalYear', () {
|
||||
test('should require year', () {
|
||||
final validator = FinanceValidators.fiscalYear();
|
||||
expect(validator!(''), contains('requis'));
|
||||
expect(validator(''), contains('requis'));
|
||||
});
|
||||
|
||||
test('should reject invalid year format', () {
|
||||
final validator = FinanceValidators.fiscalYear();
|
||||
expect(validator!('abc'), equals('Année invalide'));
|
||||
expect(validator('abc'), equals('Année invalide'));
|
||||
});
|
||||
|
||||
test('should enforce year range', () {
|
||||
final validator = FinanceValidators.fiscalYear();
|
||||
final currentYear = DateTime.now().year;
|
||||
|
||||
expect(validator!('${currentYear - 10}'), contains('doit être entre'));
|
||||
expect(validator!('${currentYear + 15}'), contains('doit être entre'));
|
||||
expect(validator('${currentYear - 10}'), contains('doit être entre'));
|
||||
expect(validator('${currentYear + 15}'), contains('doit être entre'));
|
||||
});
|
||||
|
||||
test('should accept valid years', () {
|
||||
final validator = FinanceValidators.fiscalYear();
|
||||
final currentYear = DateTime.now().year;
|
||||
|
||||
expect(validator!('$currentYear'), isNull);
|
||||
expect(validator!('${currentYear + 1}'), isNull);
|
||||
expect(validator!('${currentYear - 1}'), isNull);
|
||||
expect(validator('$currentYear'), isNull);
|
||||
expect(validator('${currentYear + 1}'), isNull);
|
||||
expect(validator('${currentYear - 1}'), isNull);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user