Skip to content

Commit 9adfa88

Browse files
implement validate with default validator
1 parent 3698588 commit 9adfa88

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

lib/new_api_prototype/core_validators/required_validators.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ Validator<T?> isRequired<T extends Object>([
2323
return finalValidator;
2424
}
2525

26+
/// This function returns a validator that validates the user input with `v`,
27+
/// replacing null/empty input with `defaultValue`.
28+
Validator<T?> validateWithDefault<T extends Object>(
29+
T defaultValue, Validator<T> v) {
30+
return (T? value) => v(value ?? defaultValue);
31+
}
32+
2633
String errorIsOptionalTemporary(String vErrorMessage) {
2734
return 'The field is optional, otherwise, $vErrorMessage';
2835
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import 'package:flutter_test/flutter_test.dart';
2+
import 'package:form_builder_validators/form_builder_validators.dart';
3+
4+
const String errorMultBy6 = 'error';
5+
String? isMultipleBy6(int value) {
6+
return value % 6 == 0 ? null : errorMultBy6;
7+
}
8+
9+
void main() {
10+
group('Validator: validateWithDefault', () {
11+
test('Should validate with valid default', () {
12+
final Validator<int?> v = validateWithDefault(0, isMultipleBy6);
13+
final Validator<int?> v1 = validateWithDefault(12, isMultipleBy6);
14+
15+
expect(v(null), isNull);
16+
expect(v1(null), isNull);
17+
18+
expect(v(6), isNull);
19+
expect(v1(18), isNull);
20+
21+
expect(v(2), equals(errorMultBy6));
22+
expect(v1(14), equals(errorMultBy6));
23+
});
24+
test('Should validate with invalid default', () {
25+
final Validator<int?> v = validateWithDefault(1, isMultipleBy6);
26+
final Validator<int?> v1 = validateWithDefault(15, isMultipleBy6);
27+
28+
expect(v(null), equals(errorMultBy6));
29+
expect(v1(null), equals(errorMultBy6));
30+
31+
expect(v(6), isNull);
32+
expect(v1(18), isNull);
33+
34+
expect(v(2), equals(errorMultBy6));
35+
expect(v1(14), equals(errorMultBy6));
36+
});
37+
});
38+
}

0 commit comments

Comments
 (0)