|
| 1 | +import 'dart:io'; |
| 2 | + |
1 | 3 | import 'package:flutter/material.dart';
|
2 | 4 | import 'package:flutter_localizations/flutter_localizations.dart';
|
3 | 5 | import 'package:flutter_test/flutter_test.dart';
|
@@ -490,4 +492,225 @@ void main() {
|
490 | 492 | expect(validator('ABC'), isNotNull);
|
491 | 493 | }),
|
492 | 494 | );
|
| 495 | + |
| 496 | + testWidgets( |
| 497 | + 'FormBuilderValidators.creditCard', |
| 498 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 499 | + final validator = FormBuilderValidators.creditCard(); |
| 500 | + // Pass |
| 501 | + expect(validator('4111111111111111'), isNull); |
| 502 | + // Fail |
| 503 | + expect(validator('1234567812345678'), isNotNull); |
| 504 | + }), |
| 505 | + ); |
| 506 | + |
| 507 | + testWidgets( |
| 508 | + 'FormBuilderValidators.creditCardExpirationDate', |
| 509 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 510 | + final validator = FormBuilderValidators.creditCardExpirationDate(); |
| 511 | + // Pass |
| 512 | + expect(validator('12/23'), isNull); |
| 513 | + // Fail |
| 514 | + expect(validator('13/23'), isNotNull); |
| 515 | + }), |
| 516 | + ); |
| 517 | + |
| 518 | + testWidgets( |
| 519 | + 'FormBuilderValidators.creditCardExpirationDateNotExpired', |
| 520 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 521 | + final validator = |
| 522 | + FormBuilderValidators.creditCardExpirationDateNotExpired(); |
| 523 | + // Pass |
| 524 | + expect(validator('12/30'), isNull); |
| 525 | + // Fail |
| 526 | + expect(validator('12/20'), isNotNull); |
| 527 | + }), |
| 528 | + ); |
| 529 | + |
| 530 | + testWidgets( |
| 531 | + 'FormBuilderValidators.creditCardCVC', |
| 532 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 533 | + final validator = FormBuilderValidators.creditCardCVC(); |
| 534 | + // Pass |
| 535 | + expect(validator('123'), isNull); |
| 536 | + expect(validator('1234'), isNull); |
| 537 | + // Fail |
| 538 | + expect(validator('12'), isNotNull); |
| 539 | + expect(validator('12345'), isNotNull); |
| 540 | + }), |
| 541 | + ); |
| 542 | + |
| 543 | + testWidgets( |
| 544 | + 'FormBuilderValidators.phoneNumber', |
| 545 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 546 | + final validator = FormBuilderValidators.phoneNumber(); |
| 547 | + // Pass |
| 548 | + expect(validator('+1 800 555 5555'), isNull); |
| 549 | + // Fail |
| 550 | + expect(validator('123-abc-defg'), isNotNull); |
| 551 | + }), |
| 552 | + ); |
| 553 | + |
| 554 | + testWidgets( |
| 555 | + 'FormBuilderValidators.colorCode', |
| 556 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 557 | + final validator = FormBuilderValidators.colorCode(); |
| 558 | + // Pass |
| 559 | + expect(validator('#FFFFFF'), isNull); |
| 560 | + expect(validator('rgb(255, 255, 255)'), isNull); |
| 561 | + // Fail |
| 562 | + expect(validator('#ZZZZZZ'), isNotNull); |
| 563 | + }), |
| 564 | + ); |
| 565 | + |
| 566 | + testWidgets( |
| 567 | + 'FormBuilderValidators.uppercase', |
| 568 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 569 | + final validator = FormBuilderValidators.uppercase(); |
| 570 | + // Pass |
| 571 | + expect(validator('HELLO'), isNull); |
| 572 | + // Fail |
| 573 | + expect(validator('Hello'), isNotNull); |
| 574 | + }), |
| 575 | + ); |
| 576 | + |
| 577 | + testWidgets( |
| 578 | + 'FormBuilderValidators.lowercase', |
| 579 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 580 | + final validator = FormBuilderValidators.lowercase(); |
| 581 | + // Pass |
| 582 | + expect(validator('hello'), isNull); |
| 583 | + // Fail |
| 584 | + expect(validator('Hello'), isNotNull); |
| 585 | + }), |
| 586 | + ); |
| 587 | + |
| 588 | + testWidgets( |
| 589 | + 'FormBuilderValidators.fileExtension', |
| 590 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 591 | + final validator = FormBuilderValidators.fileExtension( |
| 592 | + allowedExtensions: ['txt', 'pdf'], |
| 593 | + ); |
| 594 | + // Create a temporary file |
| 595 | + final file = File('test.txt')..createSync(); |
| 596 | + // Pass |
| 597 | + expect(validator(file), isNull); |
| 598 | + // Fail |
| 599 | + expect(validator(File('test.doc')), isNotNull); |
| 600 | + // Cleanup |
| 601 | + file.deleteSync(); |
| 602 | + }), |
| 603 | + ); |
| 604 | + |
| 605 | + testWidgets( |
| 606 | + 'FormBuilderValidators.fileSize', |
| 607 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 608 | + final validator = FormBuilderValidators.fileSize(maxSize: 1024); |
| 609 | + // Create a temporary file |
| 610 | + final file = File('test.txt') |
| 611 | + ..createSync() |
| 612 | + ..writeAsBytesSync(List.filled(512, 0)); |
| 613 | + // Pass |
| 614 | + expect(validator(file), isNull); |
| 615 | + // Fail |
| 616 | + file.writeAsBytesSync(List.filled(2048, 0)); |
| 617 | + expect(validator(file), isNotNull); |
| 618 | + // Cleanup |
| 619 | + file.deleteSync(); |
| 620 | + }), |
| 621 | + ); |
| 622 | + |
| 623 | + testWidgets( |
| 624 | + 'FormBuilderValidators.conditional', |
| 625 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 626 | + final validator = FormBuilderValidators.conditional( |
| 627 | + (value) => value == 'test', |
| 628 | + FormBuilderValidators.required(), |
| 629 | + ); |
| 630 | + // Pass |
| 631 | + expect(validator('test'), isNotNull); |
| 632 | + // Fail |
| 633 | + expect(validator('not_test'), isNull); |
| 634 | + }), |
| 635 | + ); |
| 636 | + |
| 637 | + testWidgets( |
| 638 | + 'FormBuilderValidators.range', |
| 639 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 640 | + final validator = FormBuilderValidators.range(10, 20); |
| 641 | + // Pass |
| 642 | + expect(validator(15), isNull); |
| 643 | + // Fail |
| 644 | + expect(validator(5), isNotNull); |
| 645 | + expect(validator(25), isNotNull); |
| 646 | + }), |
| 647 | + ); |
| 648 | + |
| 649 | + testWidgets( |
| 650 | + 'FormBuilderValidators.mustBeTrue', |
| 651 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 652 | + final validator = FormBuilderValidators.mustBeTrue(); |
| 653 | + // Pass |
| 654 | + expect(validator(true), isNull); |
| 655 | + // Fail |
| 656 | + expect(validator(false), isNotNull); |
| 657 | + expect(validator(null), isNotNull); |
| 658 | + }), |
| 659 | + ); |
| 660 | + |
| 661 | + testWidgets( |
| 662 | + 'FormBuilderValidators.mustBeFalse', |
| 663 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 664 | + final validator = FormBuilderValidators.mustBeFalse(); |
| 665 | + // Pass |
| 666 | + expect(validator(false), isNull); |
| 667 | + // Fail |
| 668 | + expect(validator(true), isNotNull); |
| 669 | + expect(validator(null), isNotNull); |
| 670 | + }), |
| 671 | + ); |
| 672 | + |
| 673 | + testWidgets( |
| 674 | + 'FormBuilderValidators.hasSpecialChars', |
| 675 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 676 | + final validator = FormBuilderValidators.hasSpecialChars(atLeast: 1); |
| 677 | + // Pass |
| 678 | + expect(validator('hello@'), isNull); |
| 679 | + // Fail |
| 680 | + expect(validator('hello'), isNotNull); |
| 681 | + }), |
| 682 | + ); |
| 683 | + |
| 684 | + testWidgets( |
| 685 | + 'FormBuilderValidators.hasUppercaseChars', |
| 686 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 687 | + final validator = FormBuilderValidators.hasUppercaseChars(atLeast: 1); |
| 688 | + // Pass |
| 689 | + expect(validator('Hello'), isNull); |
| 690 | + // Fail |
| 691 | + expect(validator('hello'), isNotNull); |
| 692 | + }), |
| 693 | + ); |
| 694 | + |
| 695 | + testWidgets( |
| 696 | + 'FormBuilderValidators.hasLowercaseChars', |
| 697 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 698 | + final validator = FormBuilderValidators.hasLowercaseChars(atLeast: 1); |
| 699 | + // Pass |
| 700 | + expect(validator('hello'), isNull); |
| 701 | + // Fail |
| 702 | + expect(validator('HELLO'), isNotNull); |
| 703 | + }), |
| 704 | + ); |
| 705 | + |
| 706 | + testWidgets( |
| 707 | + 'FormBuilderValidators.hasNumericChars', |
| 708 | + (WidgetTester tester) => testValidations(tester, (context) { |
| 709 | + final validator = FormBuilderValidators.hasNumericChars(atLeast: 1); |
| 710 | + // Pass |
| 711 | + expect(validator('hello1'), isNull); |
| 712 | + // Fail |
| 713 | + expect(validator('hello'), isNotNull); |
| 714 | + }), |
| 715 | + ); |
493 | 716 | }
|
0 commit comments