@@ -657,161 +657,78 @@ public function testDates(): void
657
657
$ item = Item::create (['name ' => 'sword ' ]);
658
658
$ json = $ item ->toArray ();
659
659
$ this ->assertEquals ($ item ->created_at ->toISOString (), $ json ['created_at ' ]);
660
+ }
660
661
661
- /** @var User $user */
662
- //Test with create and standard property
663
- $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => time ()]);
664
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
665
-
666
- $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => Date::now ()]);
667
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
668
-
669
- $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => 'Monday 8th August 2005 03:12:46 PM ' ]);
670
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
671
-
672
- $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => 'Monday 8th August 1960 03:12:46 PM ' ]);
673
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
674
-
675
- $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => '2005-08-08 ' ]);
676
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
677
-
678
- $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => '1965-08-08 ' ]);
679
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
680
-
681
- $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => new DateTime ('2010-08-08 ' )]);
682
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
683
-
684
- $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => new DateTime ('1965-08-08 ' )]);
685
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
686
-
687
- $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => new DateTime ('2010-08-08 04.08.37 ' )]);
688
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
689
-
690
- $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => new DateTime ('1965-08-08 04.08.37 ' )]);
691
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
692
-
693
- $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => new DateTime ('2010-08-08 04.08.37.324 ' )]);
694
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
662
+ public static function provideDate (): \Generator
663
+ {
664
+ yield [time ()];
665
+ yield [Date::now ()];
666
+ yield ['Monday 8th August 2005 03:12:46 PM ' ];
667
+ yield ['Monday 8th August 1960 03:12:46 PM ' ];
668
+ yield ['2005-08-08 ' ];
669
+ yield ['1965-08-08 ' ];
670
+ yield [new DateTime ('2010-08-08 ' )];
671
+ yield [new DateTime ('1965-08-08 ' )];
672
+ yield [new DateTime ('2010-08-08 04.08.37 ' )];
673
+ yield [new DateTime ('1965-08-08 04.08.37 ' )];
674
+ yield [new DateTime ('2010-08-08 04.08.37.324 ' )];
675
+ yield [new DateTime ('1965-08-08 04.08.37.324 ' )];
676
+ yield [new DateTime ('1965-08-08 04.08.37.324 ' )];
677
+ }
695
678
696
- $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => new DateTime ('1965-08-08 04.08.37.324 ' )]);
679
+ /**
680
+ * @dataProvider provideDate
681
+ */
682
+ public function testDateInputs ($ date ): void
683
+ {
684
+ /** @var User $user */
685
+ // Test with create and standard property
686
+ $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => $ date ]);
697
687
$ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
698
688
699
689
//Test with setAttribute and standard property
700
- $ user ->setAttribute ('birthday ' , time ());
701
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
702
-
703
- $ user ->setAttribute ('birthday ' , Date::now ());
704
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
705
-
706
- $ user ->setAttribute ('birthday ' , 'Monday 8th August 2005 03:12:46 PM ' );
707
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
708
-
709
- $ user ->setAttribute ('birthday ' , 'Monday 8th August 1960 03:12:46 PM ' );
710
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
711
-
712
- $ user ->setAttribute ('birthday ' , '2005-08-08 ' );
713
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
714
-
715
- $ user ->setAttribute ('birthday ' , '1965-08-08 ' );
716
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
717
-
718
- $ user ->setAttribute ('birthday ' , new DateTime ('2010-08-08 ' ));
719
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
720
-
721
- $ user ->setAttribute ('birthday ' , new DateTime ('1965-08-08 ' ));
722
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
723
-
724
- $ user ->setAttribute ('birthday ' , new DateTime ('2010-08-08 04.08.37 ' ));
725
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
726
-
727
- $ user ->setAttribute ('birthday ' , new DateTime ('1965-08-08 04.08.37 ' ));
728
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
729
-
730
- $ user ->setAttribute ('birthday ' , new DateTime ('2010-08-08 04.08.37.324 ' ));
731
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
732
-
733
- $ user ->setAttribute ('birthday ' , new DateTime ('1965-08-08 04.08.37.324 ' ));
690
+ $ user ->setAttribute ('birthday ' , $ date );
734
691
$ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
735
692
736
- $ user ->setAttribute ('birthday ' , new DateTimeImmutable ('1965-08-08 04.08.37.324 ' ));
737
- $ this ->assertInstanceOf (Carbon::class, $ user ->birthday );
738
-
739
- //Test with create and array property
740
- $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => time ()]]);
741
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
742
-
743
- $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => Date::now ()]]);
744
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
745
-
746
- $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => 'Monday 8th August 2005 03:12:46 PM ' ]]);
747
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
748
-
749
- $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => 'Monday 8th August 1960 03:12:46 PM ' ]]);
750
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
751
-
752
- $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => '2005-08-08 ' ]]);
753
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
754
-
755
- $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => '1965-08-08 ' ]]);
756
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
757
-
758
- $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => new DateTime ('2010-08-08 ' )]]);
759
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
760
-
761
- $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => new DateTime ('1965-08-08 ' )]]);
762
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
763
-
764
- $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => new DateTime ('2010-08-08 04.08.37 ' )]]);
765
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
766
-
767
- $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => new DateTime ('1965-08-08 04.08.37 ' )]]);
768
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
769
-
770
- $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => new DateTime ('2010-08-08 04.08.37.324 ' )]]);
771
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
772
-
773
- $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => new DateTime ('1965-08-08 04.08.37.324 ' )]]);
774
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
775
-
776
- //Test with setAttribute and array property
777
- $ user ->setAttribute ('entry.date ' , time ());
778
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
779
-
780
- $ user ->setAttribute ('entry.date ' , Date::now ());
693
+ // Test with create and array property
694
+ $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => $ date ]]);
781
695
$ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
782
696
783
- $ user ->setAttribute ('entry.date ' , 'Monday 8th August 2005 03:12:46 PM ' );
697
+ // Test with setAttribute and array property
698
+ $ user ->setAttribute ('entry.date ' , $ date );
784
699
$ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
785
700
786
- $ user ->setAttribute ('entry.date ' , 'Monday 8th August 1960 03:12:46 PM ' );
787
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
788
-
789
- $ user ->setAttribute ('entry.date ' , '2005-08-08 ' );
790
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
701
+ // Test with create and array property
702
+ $ data = $ user ->toArray ();
703
+ $ this ->assertIsString ($ data ['entry ' ]['date ' ]);
704
+ }
791
705
792
- $ user ->setAttribute ('entry.date ' , '1965-08-08 ' );
793
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
706
+ public function testDateNull (): void
707
+ {
708
+ $ user = User::create (['name ' => 'Jane Doe ' , 'birthday ' => null ]);
709
+ $ this ->assertNull ($ user ->birthday );
794
710
795
- $ user ->setAttribute ('entry.date ' , new DateTime ('2010-08-08 ' ));
796
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
711
+ $ user ->setAttribute ('birthday ' , new DateTime ());
712
+ $ user ->setAttribute ('birthday ' , null );
713
+ $ this ->assertNull ($ user ->birthday );
797
714
798
- $ user ->setAttribute ('entry.date ' , new DateTime ('1965-08-08 ' ));
799
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
800
-
801
- $ user ->setAttribute ('entry.date ' , new DateTime ('2010-08-08 04.08.37 ' ));
802
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
715
+ $ user ->save ();
803
716
804
- $ user ->setAttribute ('entry.date ' , new DateTime ('1965-08-08 04.08.37 ' ));
805
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
717
+ // Re-fetch to be sure
718
+ $ user = User::find ($ user ->_id );
719
+ $ this ->assertNull ($ user ->birthday );
806
720
807
- $ user ->setAttribute ('entry.date ' , new DateTime ('2010-08-08 04.08.37.324 ' ));
808
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
721
+ // Nested field with dot notation
722
+ $ user = User::create (['name ' => 'Jane Doe ' , 'entry ' => ['date ' => null ]]);
723
+ $ this ->assertNull ($ user ->getAttribute ('entry.date ' ));
809
724
810
- $ user ->setAttribute ('entry.date ' , new DateTime ('1965-08-08 04.08.37.324 ' ));
811
- $ this ->assertInstanceOf (Carbon::class, $ user ->getAttribute ('entry.date ' ));
725
+ $ user ->setAttribute ('entry.date ' , new DateTime ());
726
+ $ user ->setAttribute ('entry.date ' , null );
727
+ $ this ->assertNull ($ user ->getAttribute ('entry.date ' ));
812
728
813
- $ data = $ user ->toArray ();
814
- $ this ->assertIsString ($ data ['entry ' ]['date ' ]);
729
+ // Re-fetch to be sure
730
+ $ user = User::find ($ user ->_id );
731
+ $ this ->assertNull ($ user ->getAttribute ('entry.date ' ));
815
732
}
816
733
817
734
public function testCarbonDateMockingWorks ()
0 commit comments