@@ -1120,6 +1120,45 @@ public function testGetDirtyEmbeddedDocument(): void
11201120 $ this ->assertTrue ($ user ->isDirty ('address ' ));
11211121 }
11221122
1123+ public function testGetDirtyDatetimeCast (): void
1124+ {
1125+ $ user = User::create (['name ' => 'John Doe ' , 'birthday ' => new DateTime ('1989-08-19 12:00:00 ' )]);
1126+ $ user = User::find ($ user ->id );
1127+ $ this ->assertFalse ($ user ->isDirty ());
1128+
1129+ // Same date via Carbon: not dirty
1130+ $ user ->birthday = Carbon::parse ('1989-08-19 12:00:00 ' );
1131+ $ this ->assertFalse ($ user ->isDirty ('birthday ' ));
1132+
1133+ // Same date via DateTime: not dirty
1134+ $ user ->birthday = new DateTime ('1989-08-19 12:00:00 ' );
1135+ $ this ->assertFalse ($ user ->isDirty ('birthday ' ));
1136+
1137+ // Different date: dirty
1138+ $ user ->birthday = new DateTime ('1990-01-01 00:00:00 ' );
1139+ $ this ->assertTrue ($ user ->isDirty ('birthday ' ));
1140+
1141+ // Null vs date: dirty
1142+ $ user ->save ();
1143+ $ user ->birthday = null ;
1144+ $ this ->assertTrue ($ user ->isDirty ('birthday ' ));
1145+ }
1146+
1147+ public function testGetDirtyEnumCast (): void
1148+ {
1149+ $ user = User::create (['name ' => 'John Doe ' , 'member_status ' => MemberStatus::Member]);
1150+ $ user = User::find ($ user ->id );
1151+ $ this ->assertFalse ($ user ->isDirty ());
1152+
1153+ // Same enum value: not dirty
1154+ $ user ->member_status = MemberStatus::Member;
1155+ $ this ->assertFalse ($ user ->isDirty ('member_status ' ));
1156+
1157+ // Setting null: dirty
1158+ $ user ->member_status = null ;
1159+ $ this ->assertTrue ($ user ->isDirty ('member_status ' ));
1160+ }
1161+
11231162 public function testChunkById (): void
11241163 {
11251164 User::create (['name ' => 'fork ' , 'tags ' => ['sharp ' , 'pointy ' ]]);
0 commit comments