Skip to content

Commit b85ab59

Browse files
committed
Add more tests
1 parent 304cafa commit b85ab59

14 files changed

+225
-1
lines changed

test/src/datetime/date_time_validator_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ void main() {
9292
result,
9393
equals(FormBuilderLocalizations.current.dateStringErrorText),
9494
);
95+
expect(result, validator.errorText);
9596
});
9697

9798
test(

test/src/form_field_validator_extensions_test.dart

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,5 +179,105 @@ void main() {
179179
// Pass
180180
expect(validatorWithMessage('test'), isNull);
181181
});
182+
183+
test('FormFieldValidatorExtensions.and with nested validators', () {
184+
// Arrange
185+
final FormFieldValidator<String> validator1 =
186+
FormBuilderValidators.required();
187+
final FormFieldValidator<String> validator2 =
188+
FormBuilderValidators.minLength(5);
189+
final FormFieldValidator<String> validator3 =
190+
FormBuilderValidators.maxLength(10);
191+
final FormFieldValidator<String> combinedValidator =
192+
validator1.and(validator2.and(validator3));
193+
194+
// Act & Assert
195+
// Pass
196+
expect(combinedValidator('hello'), isNull);
197+
expect(combinedValidator('hello123'), isNull);
198+
199+
// Fail
200+
expect(combinedValidator(null), isNotNull);
201+
expect(combinedValidator(''), isNotNull);
202+
expect(combinedValidator('test'), isNotNull);
203+
expect(combinedValidator('hello world'), isNotNull);
204+
});
205+
206+
test('FormFieldValidatorExtensions.or with nested validators', () {
207+
// Arrange
208+
final FormFieldValidator<String> validator1 =
209+
FormBuilderValidators.endsWith('world');
210+
final FormFieldValidator<String> validator2 =
211+
FormBuilderValidators.startsWith('Hello');
212+
final FormFieldValidator<String> validator3 =
213+
FormBuilderValidators.equal('test');
214+
final FormFieldValidator<String> combinedValidator =
215+
validator1.or(validator2.or(validator3));
216+
217+
// Act & Assert
218+
// Pass
219+
expect(combinedValidator('Hello world'), isNull);
220+
expect(combinedValidator('Hello'), isNull);
221+
expect(combinedValidator('test'), isNull);
222+
223+
// Fail
224+
expect(combinedValidator('123 hello'), isNotNull);
225+
expect(combinedValidator(null), isNotNull);
226+
expect(combinedValidator(''), isNotNull);
227+
});
228+
229+
test('FormFieldValidatorExtensions.transform with custom transformation',
230+
() {
231+
// Arrange
232+
final FormFieldValidator<String> validator =
233+
FormBuilderValidators.transform<String>(
234+
(String? value) => value?.toUpperCase() ?? '',
235+
FormBuilderValidators.match(RegExp(r'^[A-Z]+$')),
236+
);
237+
238+
// Act & Assert
239+
// Pass
240+
expect(validator('abc'), isNull);
241+
expect(validator('ABC'), isNull);
242+
243+
// Fail
244+
expect(validator('abc123'), isNotNull);
245+
expect(validator(null), isNotNull);
246+
expect(validator(''), isNotNull);
247+
});
248+
249+
test('FormFieldValidatorExtensions.when with custom condition', () {
250+
// Arrange
251+
final FormFieldValidator<String> validator =
252+
FormBuilderValidators.required<String>();
253+
final FormFieldValidator<String> conditionalValidator =
254+
validator.when((String? value) => value != 'skip');
255+
256+
// Act & Assert
257+
// Pass
258+
expect(conditionalValidator('test'), isNull);
259+
260+
// Fail
261+
expect(conditionalValidator('skip'), isNull);
262+
expect(conditionalValidator(null), isNotNull);
263+
expect(conditionalValidator(''), isNotNull);
264+
});
265+
266+
test('FormFieldValidatorExtensions.unless with custom condition', () {
267+
// Arrange
268+
final FormFieldValidator<String> validator =
269+
FormBuilderValidators.required<String>();
270+
final FormFieldValidator<String> conditionalValidator =
271+
validator.unless((String? value) => value == 'skip');
272+
273+
// Act & Assert
274+
// Pass
275+
expect(conditionalValidator('skip'), isNull);
276+
277+
// Fail
278+
expect(conditionalValidator('test'), isNull);
279+
expect(conditionalValidator(null), isNotNull);
280+
expect(conditionalValidator(''), isNotNull);
281+
});
182282
});
183283
}

test/src/identity/country_validator_test.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,5 +128,15 @@ void main() {
128128
expect(result, FormBuilderLocalizations.current.countryErrorText);
129129
}
130130
});
131+
132+
test('should return null when no arguments are set in the constructor', () {
133+
// Arrange
134+
final CountryValidator validator = CountryValidator();
135+
136+
// Act & Assert
137+
expect(validator.validate('United States'), isNull);
138+
expect(validator.validate('Canada'), isNull);
139+
expect(validator.validate('InvalidCountry'), isNull);
140+
});
131141
});
132142
}

test/src/identity/ssn_validator_test.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,5 +133,17 @@ void main() {
133133
// Assert
134134
expect(result, customErrorMessage);
135135
});
136+
137+
test('should return default error if the SSN is empty', () {
138+
// Arrange
139+
final SsnValidator validator = SsnValidator();
140+
const String emptySsn = '';
141+
142+
// Act
143+
final String? result = validator.validate(emptySsn);
144+
145+
// Assert
146+
expect(result, validator.errorText);
147+
});
136148
});
137149
}

test/src/identity/zip_code_validator_test.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,5 +126,17 @@ void main() {
126126
// Assert
127127
expect(result, customErrorMessage);
128128
});
129+
130+
test('should return default error if the value is empty', () {
131+
// Arrange
132+
final ZipCodeValidator validator = ZipCodeValidator();
133+
const String value = '';
134+
135+
// Act
136+
final String? result = validator.validate(value);
137+
138+
// Assert
139+
expect(result, validator.errorText);
140+
});
129141
});
130142
}

test/src/numeric/min_validator_test.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,5 +249,16 @@ void main() {
249249
),
250250
);
251251
});
252+
253+
test('should return the default error message for invalid value types', () {
254+
// Arrange
255+
const MinValidator<bool> validator = MinValidator<bool>(1);
256+
257+
// Act & Assert
258+
expect(
259+
validator.validate(false),
260+
equals(validator.errorText),
261+
);
262+
});
252263
});
253264
}

test/src/numeric/negative_number_validator_test.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,5 +237,17 @@ void main() {
237237
),
238238
);
239239
});
240+
241+
test('should return the default error message for invalid value types', () {
242+
// Arrange
243+
const NegativeNumberValidator<bool> validator =
244+
NegativeNumberValidator<bool>();
245+
246+
// Act & Assert
247+
expect(
248+
validator.validate(false),
249+
equals(validator.errorText),
250+
);
251+
});
240252
});
241253
}

test/src/numeric/not_zero_number_validator_test.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,5 +169,17 @@ void main() {
169169
),
170170
);
171171
});
172+
173+
test('should return the default error message for invalid value types', () {
174+
// Arrange
175+
const NotZeroNumberValidator<bool> validator =
176+
NotZeroNumberValidator<bool>();
177+
178+
// Act & Assert
179+
expect(
180+
validator.validate(false),
181+
equals(validator.errorText),
182+
);
183+
});
172184
});
173185
}

test/src/numeric/numeric_validator_test.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,5 +167,16 @@ void main() {
167167
),
168168
);
169169
});
170+
171+
test('should return the default error message for invalid value types', () {
172+
// Arrange
173+
const NumericValidator<bool> validator = NumericValidator<bool>();
174+
175+
// Act & Assert
176+
expect(
177+
validator.validate(false),
178+
equals(validator.errorText),
179+
);
180+
});
170181
});
171182
}

test/src/numeric/positive_number_validator_test.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ void main() {
3838
FormBuilderLocalizations.current.positiveNumberErrorText,
3939
),
4040
);
41+
expect(
42+
result,
43+
equals(validator.errorText),
44+
);
4145
});
4246

4347
test('should return the custom error message if the value is zero', () {
@@ -279,5 +283,17 @@ void main() {
279283
// Assert
280284
expect(result, equals(customErrorMessage));
281285
});
286+
287+
test('should return the default error message for invalid value types', () {
288+
// Arrange
289+
const PositiveNumberValidator<bool> validator =
290+
PositiveNumberValidator<bool>();
291+
292+
// Act & Assert
293+
expect(
294+
validator.validate(false),
295+
equals(validator.errorText),
296+
);
297+
});
282298
});
283299
}

0 commit comments

Comments
 (0)