@@ -3370,4 +3370,138 @@ public function testQueryWithDatetime(): void
33703370
33713371 $ database ->deleteCollection ($ col );
33723372 }
3373+
3374+ public function testSchemalessCreatedAndUpdatedAtQuery (): void
3375+ {
3376+ /** @var Database $database */
3377+ $ database = static ::getDatabase ();
3378+
3379+ if ($ database ->getAdapter ()->getSupportForAttributes ()) {
3380+ $ this ->expectNotToPerformAssertions ();
3381+ return ;
3382+ }
3383+
3384+ // Create a simple schemaless collection and one document.
3385+ $ database ->createCollection ('movies ' , permissions: [
3386+ Permission::read (Role::any ()),
3387+ Permission::create (Role::any ()),
3388+ Permission::update (Role::any ()),
3389+ Permission::delete (Role::any ()),
3390+ ]);
3391+
3392+ $ database ->createDocument ('movies ' , new Document ([
3393+ '$id ' => ID ::unique (),
3394+ '$permissions ' => [Permission::read (Role::any ())],
3395+ 'name ' => 'Schemaless Movie ' ,
3396+ ]));
3397+
3398+ $ futureDate = '2050-01-01T00:00:00.000Z ' ;
3399+ $ pastDate = '1900-01-01T00:00:00.000Z ' ;
3400+ $ recentPastDate = '2020-01-01T00:00:00.000Z ' ;
3401+ $ nearFutureDate = '2025-01-01T00:00:00.000Z ' ;
3402+
3403+ // --- createdBefore ---
3404+ $ documents = $ database ->find ('movies ' , [
3405+ Query::createdBefore ($ futureDate ),
3406+ Query::limit (1 ),
3407+ ]);
3408+ $ this ->assertGreaterThan (0 , count ($ documents ));
3409+
3410+ $ documents = $ database ->find ('movies ' , [
3411+ Query::createdBefore ($ pastDate ),
3412+ Query::limit (1 ),
3413+ ]);
3414+ $ this ->assertEquals (0 , count ($ documents ));
3415+
3416+ // --- createdAfter ---
3417+ $ documents = $ database ->find ('movies ' , [
3418+ Query::createdAfter ($ pastDate ),
3419+ Query::limit (1 ),
3420+ ]);
3421+ $ this ->assertGreaterThan (0 , count ($ documents ));
3422+
3423+ $ documents = $ database ->find ('movies ' , [
3424+ Query::createdAfter ($ futureDate ),
3425+ Query::limit (1 ),
3426+ ]);
3427+ $ this ->assertEquals (0 , count ($ documents ));
3428+
3429+ // --- updatedBefore ---
3430+ $ documents = $ database ->find ('movies ' , [
3431+ Query::updatedBefore ($ futureDate ),
3432+ Query::limit (1 ),
3433+ ]);
3434+ $ this ->assertGreaterThan (0 , count ($ documents ));
3435+
3436+ $ documents = $ database ->find ('movies ' , [
3437+ Query::updatedBefore ($ pastDate ),
3438+ Query::limit (1 ),
3439+ ]);
3440+ $ this ->assertEquals (0 , count ($ documents ));
3441+
3442+ // --- updatedAfter ---
3443+ $ documents = $ database ->find ('movies ' , [
3444+ Query::updatedAfter ($ pastDate ),
3445+ Query::limit (1 ),
3446+ ]);
3447+ $ this ->assertGreaterThan (0 , count ($ documents ));
3448+
3449+ $ documents = $ database ->find ('movies ' , [
3450+ Query::updatedAfter ($ futureDate ),
3451+ Query::limit (1 ),
3452+ ]);
3453+ $ this ->assertEquals (0 , count ($ documents ));
3454+
3455+ // --- createdBetween ---
3456+ $ documents = $ database ->find ('movies ' , [
3457+ Query::createdBetween ($ pastDate , $ futureDate ),
3458+ Query::limit (25 ),
3459+ ]);
3460+ $ this ->assertGreaterThan (0 , count ($ documents ));
3461+
3462+ $ documents = $ database ->find ('movies ' , [
3463+ Query::createdBetween ($ pastDate , $ pastDate ),
3464+ Query::limit (25 ),
3465+ ]);
3466+ $ this ->assertEquals (0 , count ($ documents ));
3467+
3468+ $ documents = $ database ->find ('movies ' , [
3469+ Query::createdBetween ($ recentPastDate , $ nearFutureDate ),
3470+ Query::limit (25 ),
3471+ ]);
3472+ $ count = count ($ documents );
3473+
3474+ $ documents = $ database ->find ('movies ' , [
3475+ Query::createdBetween ($ pastDate , $ nearFutureDate ),
3476+ Query::limit (25 ),
3477+ ]);
3478+ $ this ->assertGreaterThanOrEqual ($ count , count ($ documents ));
3479+
3480+ // --- updatedBetween ---
3481+ $ documents = $ database ->find ('movies ' , [
3482+ Query::updatedBetween ($ pastDate , $ futureDate ),
3483+ Query::limit (25 ),
3484+ ]);
3485+ $ this ->assertGreaterThan (0 , count ($ documents ));
3486+
3487+ $ documents = $ database ->find ('movies ' , [
3488+ Query::updatedBetween ($ pastDate , $ pastDate ),
3489+ Query::limit (25 ),
3490+ ]);
3491+ $ this ->assertEquals (0 , count ($ documents ));
3492+
3493+ $ documents = $ database ->find ('movies ' , [
3494+ Query::updatedBetween ($ recentPastDate , $ nearFutureDate ),
3495+ Query::limit (25 ),
3496+ ]);
3497+ $ count = count ($ documents );
3498+
3499+ $ documents = $ database ->find ('movies ' , [
3500+ Query::updatedBetween ($ pastDate , $ nearFutureDate ),
3501+ Query::limit (25 ),
3502+ ]);
3503+ $ this ->assertGreaterThanOrEqual ($ count , count ($ documents ));
3504+
3505+ $ database ->deleteCollection ('movies ' );
3506+ }
33733507}
0 commit comments