| 
21 | 21 | use CodeIgniter\Test\ReflectionHelper;  | 
22 | 22 | use DateTime;  | 
23 | 23 | use DateTimeInterface;  | 
 | 24 | +use DateTimeZone;  | 
24 | 25 | use JsonSerializable;  | 
25 | 26 | use PHPUnit\Framework\Attributes\DataProvider;  | 
26 | 27 | use PHPUnit\Framework\Attributes\Group;  | 
@@ -2169,4 +2170,32 @@ public function testSyncOriginalWithEnumValues(): void  | 
2169 | 2170 |         $this->assertSame(ColorEnum::class, $colorData['__class']);  | 
2170 | 2171 |         $this->assertSame('GREEN', $colorData['__enum']);  | 
2171 | 2172 |     }  | 
 | 2173 | + | 
 | 2174 | +    public function testHasChangedWithDateTimeInterface(): void  | 
 | 2175 | +    {  | 
 | 2176 | +        $entity = new class () extends Entity {  | 
 | 2177 | +            protected $attributes = [  | 
 | 2178 | +                'created_at' => null,  | 
 | 2179 | +            ];  | 
 | 2180 | +        };  | 
 | 2181 | + | 
 | 2182 | +        // Test with Time object  | 
 | 2183 | +        $entity->created_at = Time::parse('2024-01-01 12:00:00', 'UTC');  | 
 | 2184 | +        $entity->syncOriginal();  | 
 | 2185 | + | 
 | 2186 | +        $this->assertFalse($entity->hasChanged('created_at'));  | 
 | 2187 | + | 
 | 2188 | +        $entity->created_at = Time::parse('2024-12-31 23:59:59', 'UTC');  | 
 | 2189 | +        $this->assertTrue($entity->hasChanged('created_at'));  | 
 | 2190 | + | 
 | 2191 | +        $entity->syncOriginal();  | 
 | 2192 | +        $entity->created_at = Time::parse('2024-12-31 23:59:59', 'UTC');  | 
 | 2193 | +        $this->assertFalse($entity->hasChanged('created_at'));  | 
 | 2194 | + | 
 | 2195 | +        // Test timezone difference detection  | 
 | 2196 | +        $entity->created_at = new DateTime('2024-01-01 12:00:00', new DateTimeZone('UTC'));  | 
 | 2197 | +        $entity->syncOriginal();  | 
 | 2198 | +        $entity->created_at = new DateTime('2024-01-01 12:00:00', new DateTimeZone('America/New_York'));  | 
 | 2199 | +        $this->assertTrue($entity->hasChanged('created_at'));  | 
 | 2200 | +    }  | 
2172 | 2201 | }  | 
0 commit comments