99use Codeception \Stub ;
1010use Codeception \Test \Unit ;
1111use Doctrine \Common \Collections \Criteria ;
12+ use Doctrine \Common \Collections \Order ;
1213use Doctrine \Common \DataFixtures \Executor \ORMExecutor ;
1314use Doctrine \Common \DataFixtures \Loader ;
1415use Doctrine \Common \DataFixtures \Purger \ORMPurger ;
@@ -71,14 +72,7 @@ protected function _setUp()
7172 require_once $ dir . "/CircularRelations/C.php " ;
7273 require_once $ dir . '/EntityWithUlid.php ' ;
7374
74- $ sqliteDriver = 'sqlite3 ' ;
75- // The driver "sqlite3" is only available as-of doctrine/dbal:3.5
76- // Use "pdo_sqlite" for older versions
77- if (version_compare (InstalledVersions ::getVersion ('doctrine/dbal ' ), '3.5 ' , '< ' )) {
78- $ sqliteDriver = 'pdo_sqlite ' ;
79- }
80-
81- $ connection = DriverManager ::getConnection (['driver ' => $ sqliteDriver , 'memory ' => true ]);
75+ $ connection = DriverManager ::getConnection (['driver ' => 'pdo_sqlite ' , 'memory ' => true ]);
8276
8377 if (version_compare (InstalledVersions ::getVersion ('doctrine/orm ' ), '3 ' , '>= ' )) {
8478 $ configuration = ORMSetup ::createAttributeMetadataConfiguration ([$ dir ], true );
@@ -258,17 +252,17 @@ public function testCriteria()
258252 {
259253 $ this ->module ->haveInRepository (PlainEntity::class, ['name ' => 'Test 1 ' ]);
260254 $ this ->module ->seeInRepository (PlainEntity::class, [
261- Criteria :: create ( true )->where (
255+ self :: createCriteria ( )->where (
262256 Criteria ::expr ()->eq ('name ' , 'Test 1 ' )
263257 ),
264258 ]);
265259 $ this ->module ->seeInRepository (PlainEntity::class, [
266- Criteria :: create ( true )->where (
260+ self :: createCriteria ( )->where (
267261 Criteria ::expr ()->contains ('name ' , 'est ' )
268262 ),
269263 ]);
270264 $ this ->module ->seeInRepository (PlainEntity::class, [
271- Criteria :: create ( true )->where (
265+ self :: createCriteria ( )->where (
272266 Criteria ::expr ()->in ('name ' , ['Test 1 ' ])
273267 ),
274268 ]);
@@ -296,14 +290,26 @@ public function testOrderBy()
296290
297291 $ getName = fn ($ entity ) => $ entity ->getName ();
298292
293+ $ collectionsVersion = InstalledVersions ::getVersion ('doctrine/collections ' );
294+ if (version_compare ($ collectionsVersion , '3.0 ' , '< ' )) {
295+ $ ascending = 'asc ' ;
296+ $ descending = 'desc ' ;
297+ } elseif (version_compare ($ collectionsVersion , '3.1 ' , '< ' )) {
298+ $ ascending = Order::Ascending;
299+ $ descending = Order::Descending;
300+ } else {
301+ $ ascending = \SortDirection::Ascending;
302+ $ descending = \SortDirection::Descending;
303+ }
304+
299305 $ this ->assertSame (
300306 [
301307 'a ' ,
302308 'b ' ,
303309 'c ' ,
304310 ],
305311 array_map ($ getName , $ this ->module ->grabEntitiesFromRepository (PlainEntity::class, [
306- Criteria :: create ( true )->orderBy (['name ' => ' asc ' ]),
312+ self :: createCriteria ( )->orderBy (['name ' => $ ascending ]),
307313 ]))
308314 );
309315
@@ -314,7 +320,7 @@ public function testOrderBy()
314320 'a ' ,
315321 ],
316322 array_map ($ getName , $ this ->module ->grabEntitiesFromRepository (PlainEntity::class, [
317- Criteria :: create ( true )->orderBy (['name ' => ' desc ' ]),
323+ self :: createCriteria ( )->orderBy (['name ' => $ descending ]),
318324 ]))
319325 );
320326 }
@@ -597,4 +603,10 @@ public function testHaveFakeRepository()
597603 $ this ->assertContains ($ e1 , $ entities );
598604 $ this ->assertContains ($ e2 , $ entities );
599605 }
606+
607+ private static function createCriteria (): Criteria
608+ {
609+ // Doctrine Collections 2.x support
610+ return defined (Criteria::class . '::ASC ' ) ? Criteria ::create (true ) : Criteria ::create ();
611+ }
600612}
0 commit comments