@@ -206,5 +206,187 @@ void main() {
206
206
// Assert
207
207
expect (result, isNull);
208
208
});
209
+
210
+ // Additional tests to cover FormBuilderLocalizations
211
+ test ('should return localized error if username is too short' , () {
212
+ // Arrange
213
+ final UsernameValidator validator = UsernameValidator (
214
+ minLength: 5 ,
215
+ errorText: FormBuilderLocalizations .current.minLengthErrorText (5 ),
216
+ );
217
+ const String shortUsername = 'usr' ;
218
+
219
+ // Act
220
+ final String ? result = validator.validate (shortUsername);
221
+
222
+ // Assert
223
+ expect (result, FormBuilderLocalizations .current.minLengthErrorText (5 ));
224
+ });
225
+
226
+ test ('should return localized error if username is too long' , () {
227
+ // Arrange
228
+ final UsernameValidator validator = UsernameValidator (
229
+ maxLength: 10 ,
230
+ errorText: FormBuilderLocalizations .current.maxLengthErrorText (10 ),
231
+ );
232
+ const String longUsername = 'thisIsAVeryLongUsername' ;
233
+
234
+ // Act
235
+ final String ? result = validator.validate (longUsername);
236
+
237
+ // Assert
238
+ expect (result, FormBuilderLocalizations .current.maxLengthErrorText (10 ));
239
+ });
240
+
241
+ test (
242
+ 'should return localized error if numbers are not allowed and username contains numbers' ,
243
+ () {
244
+ // Arrange
245
+ final UsernameValidator validator = UsernameValidator (
246
+ allowNumbers: false ,
247
+ errorText: FormBuilderLocalizations
248
+ .current.usernameCannotContainNumbersErrorText,
249
+ );
250
+ const String usernameWithNumbers = 'user123' ;
251
+
252
+ // Act
253
+ final String ? result = validator.validate (usernameWithNumbers);
254
+
255
+ // Assert
256
+ expect (
257
+ result,
258
+ FormBuilderLocalizations .current.usernameCannotContainNumbersErrorText,
259
+ );
260
+ });
261
+
262
+ test (
263
+ 'should return localized error if underscores are not allowed and username contains underscores' ,
264
+ () {
265
+ // Arrange
266
+ final UsernameValidator validator = UsernameValidator (
267
+ errorText: FormBuilderLocalizations
268
+ .current.usernameCannotContainUnderscoreErrorText,
269
+ );
270
+ const String usernameWithUnderscore = 'user_name' ;
271
+
272
+ // Act
273
+ final String ? result = validator.validate (usernameWithUnderscore);
274
+
275
+ // Assert
276
+ expect (
277
+ result,
278
+ FormBuilderLocalizations
279
+ .current.usernameCannotContainUnderscoreErrorText,
280
+ );
281
+ });
282
+
283
+ test (
284
+ 'should return localized error if dots are not allowed and username contains dots' ,
285
+ () {
286
+ // Arrange
287
+ final UsernameValidator validator = UsernameValidator (
288
+ errorText:
289
+ FormBuilderLocalizations .current.usernameCannotContainDotsErrorText,
290
+ );
291
+ const String usernameWithDot = 'user.name' ;
292
+
293
+ // Act
294
+ final String ? result = validator.validate (usernameWithDot);
295
+
296
+ // Assert
297
+ expect (
298
+ result,
299
+ FormBuilderLocalizations .current.usernameCannotContainDotsErrorText,
300
+ );
301
+ });
302
+
303
+ test (
304
+ 'should return localized error if dashes are not allowed and username contains dashes' ,
305
+ () {
306
+ // Arrange
307
+ final UsernameValidator validator = UsernameValidator (
308
+ errorText: FormBuilderLocalizations
309
+ .current.usernameCannotContainDashesErrorText,
310
+ );
311
+ const String usernameWithDash = 'user-name' ;
312
+
313
+ // Act
314
+ final String ? result = validator.validate (usernameWithDash);
315
+
316
+ // Assert
317
+ expect (
318
+ result,
319
+ FormBuilderLocalizations .current.usernameCannotContainDashesErrorText,
320
+ );
321
+ });
322
+
323
+ test (
324
+ 'should return localized error if spaces are not allowed and username contains spaces' ,
325
+ () {
326
+ // Arrange
327
+ final UsernameValidator validator = UsernameValidator (
328
+ errorText: FormBuilderLocalizations
329
+ .current.usernameCannotContainSpacesErrorText,
330
+ );
331
+ const String usernameWithSpace = 'user name' ;
332
+
333
+ // Act
334
+ final String ? result = validator.validate (usernameWithSpace);
335
+
336
+ // Assert
337
+ expect (
338
+ result,
339
+ FormBuilderLocalizations .current.usernameCannotContainSpacesErrorText,
340
+ );
341
+ });
342
+
343
+ test (
344
+ 'should return localized error if special characters are not allowed and username contains special characters' ,
345
+ () {
346
+ // Arrange
347
+ final UsernameValidator validator = UsernameValidator (
348
+ errorText: FormBuilderLocalizations
349
+ .current.usernameCannotContainSpecialCharErrorText,
350
+ );
351
+ const String usernameWithSpecialChar = 'user@name' ;
352
+
353
+ // Act
354
+ final String ? result = validator.validate (usernameWithSpecialChar);
355
+
356
+ // Assert
357
+ expect (
358
+ result,
359
+ FormBuilderLocalizations
360
+ .current.usernameCannotContainSpecialCharErrorText,
361
+ );
362
+ });
363
+
364
+ test ('should return localized error if value is null' , () {
365
+ // Arrange
366
+ final UsernameValidator validator = UsernameValidator (
367
+ errorText: FormBuilderLocalizations .current.usernameErrorText,
368
+ );
369
+ const String ? value = null ;
370
+
371
+ // Act
372
+ final String ? result = validator.validate (value);
373
+
374
+ // Assert
375
+ expect (result, FormBuilderLocalizations .current.usernameErrorText);
376
+ });
377
+
378
+ test ('should return localized error if value is empty' , () {
379
+ // Arrange
380
+ final UsernameValidator validator = UsernameValidator (
381
+ errorText: FormBuilderLocalizations .current.usernameErrorText,
382
+ );
383
+ const String value = '' ;
384
+
385
+ // Act
386
+ final String ? result = validator.validate (value);
387
+
388
+ // Assert
389
+ expect (result, FormBuilderLocalizations .current.usernameErrorText);
390
+ });
209
391
});
210
392
}
0 commit comments