Skip to content

Commit 1bddfed

Browse files
demiankatzTomHAnderson
authored andcommitted
Add support for DoctrineModule v6.
1 parent 300b6ec commit 1bddfed

File tree

6 files changed

+33
-6
lines changed

6 files changed

+33
-6
lines changed

.github/workflows/continuous-integration.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ jobs:
8888
- name: "Configure test application"
8989
run: "cp ci/config/application.config.php config/application.config.php"
9090

91+
- name: "Create cache directory"
92+
run: "mkdir -p data/DoctrineModule/cache"
93+
9194
- name: "Run PHPUnit"
9295
run: "vendor/bin/phpunit --coverage-clover=coverage.xml"
9396

ci/config/application.config.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
return [
44
'modules' => [
55
'Laminas\Cache',
6+
'Laminas\Cache\Storage\Adapter\Filesystem',
7+
'Laminas\Cache\Storage\Adapter\Memory',
68
'Laminas\Form',
79
'Laminas\Hydrator',
810
'Laminas\Paginator',

composer.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
"ext-json": "*",
5454
"doctrine/dbal": "^2.13.7 || ^3.3.2",
5555
"doctrine/doctrine-laminas-hydrator": "^3.0.0",
56-
"doctrine/doctrine-module": "^5.3.0",
56+
"doctrine/doctrine-module": "^5.3.0 || ^6.0.2",
5757
"doctrine/event-manager": "^1.1.1",
5858
"doctrine/orm": "^2.11.1",
5959
"doctrine/persistence": "^2.3.0 || ^3.0.0",
@@ -71,6 +71,8 @@
7171
"doctrine/coding-standard": "^9.0.0",
7272
"doctrine/data-fixtures": "^1.5.2",
7373
"doctrine/migrations": "^3.4.1",
74+
"laminas/laminas-cache-storage-adapter-filesystem": "^2.0",
75+
"laminas/laminas-cache-storage-adapter-memory": "^2.0",
7476
"laminas/laminas-developer-tools": "^2.3.0",
7577
"laminas/laminas-i18n": "^2.13.0",
7678
"laminas/laminas-log": "^2.15.0",

tests/Service/ConfigurationFactoryTest.php

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
use Doctrine\ORM\Mapping\NamingStrategy;
1616
use Doctrine\ORM\Mapping\QuoteStrategy;
1717
use Doctrine\Persistence\Mapping\Driver\MappingDriver;
18+
use DoctrineModule\Cache\LaminasStorageCache;
1819
use DoctrineORMModule\Options\Configuration;
1920
use DoctrineORMModule\Service\ConfigurationFactory;
2021
use DoctrineORMModuleTest\Assets\RepositoryClass;
22+
use Laminas\Cache\Storage\Adapter\Memory;
2123
use Laminas\ServiceManager\Exception\InvalidArgumentException;
2224
use Laminas\ServiceManager\ServiceManager;
2325
use PHPUnit\Framework\TestCase;
@@ -27,6 +29,7 @@
2729

2830
use function assert;
2931
use function class_exists;
32+
use function get_class;
3033

3134
class ConfigurationFactoryTest extends TestCase
3235
{
@@ -37,13 +40,21 @@ public function setUp(): void
3740
{
3841
$this->serviceManager = new ServiceManager();
3942
$this->factory = new ConfigurationFactory('test_default');
40-
$this->serviceManager->setService('doctrine.cache.array', new ArrayCache());
43+
$this->serviceManager->setService('doctrine.cache.array', $this->getArrayCacheInstance());
4144
$this->serviceManager->setService(
4245
'doctrine.driver.orm_default',
4346
$this->createMock(MappingDriver::class)
4447
);
4548
}
4649

50+
protected function getArrayCacheInstance(): object
51+
{
52+
// Set up appropriate cache based on DoctrineModule version detection:
53+
return class_exists(ArrayCache::class)
54+
? new ArrayCache() // DoctrineModule 5
55+
: new LaminasStorageCache(new Memory()); // DoctrineModule 6
56+
}
57+
4758
public function testWillInstantiateConfigWithoutNamingStrategySetting(): void
4859
{
4960
$config = [
@@ -164,7 +175,7 @@ public function testWillInstantiateConfigWithHydrationCacheSetting(): void
164175
$this->serviceManager->setService('config', $config);
165176
$factory = new ConfigurationFactory('test_default');
166177
$ormConfig = $factory($this->serviceManager, Configuration::class);
167-
$this->assertInstanceOf(ArrayCache::class, $ormConfig->getHydrationCacheImpl());
178+
$this->assertInstanceOf(get_class($this->getArrayCacheInstance()), $ormConfig->getHydrationCacheImpl());
168179
}
169180

170181
public function testCanSetDefaultRepositoryClass(): void
@@ -184,7 +195,7 @@ public function testCanSetDefaultRepositoryClass(): void
184195

185196
$factory = new ConfigurationFactory('test_default');
186197
$ormConfig = $factory($this->serviceManager, Configuration::class);
187-
$this->assertInstanceOf(ArrayCache::class, $ormConfig->getHydrationCacheImpl());
198+
$this->assertInstanceOf(get_class($this->getArrayCacheInstance()), $ormConfig->getHydrationCacheImpl());
188199
}
189200

190201
public function testAcceptsMetadataFactory(): void
@@ -376,7 +387,7 @@ public function testCanInstantiateWithSecondLevelCacheConfig(): void
376387
$reflProperty->setAccessible(true);
377388
$cacheDecorator = $reflProperty->getValue($cacheFactory);
378389
$this->assertInstanceOf(CacheAdapter::class, $cacheDecorator);
379-
$this->assertInstanceOf(ArrayCache::class, $cacheDecorator->getCache());
390+
$this->assertInstanceOf(get_class($this->getArrayCacheInstance()), $cacheDecorator->getCache());
380391
}
381392

382393
public function testConfigureMiddlewares(): void

tests/Service/DBALConnectionFactoryTest.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,16 @@
1212
use Doctrine\DBAL\Types\Type;
1313
use Doctrine\ORM\Configuration;
1414
use Doctrine\Persistence\Mapping\Driver\MappingDriver;
15+
use DoctrineModule\Cache\LaminasStorageCache;
1516
use DoctrineORMModule\Service\ConfigurationFactory;
1617
use DoctrineORMModule\Service\DBALConnectionFactory;
1718
use DoctrineORMModuleTest\Assets\Types\MoneyType;
19+
use Laminas\Cache\Storage\Adapter\Memory;
1820
use Laminas\ServiceManager\ServiceManager;
1921
use PHPUnit\Framework\TestCase;
2022

23+
use function class_exists;
24+
2125
/**
2226
* @covers \DoctrineORMModule\Service\DBALConnectionFactory
2327
*/
@@ -30,7 +34,11 @@ public function setUp(): void
3034
{
3135
$this->serviceManager = new ServiceManager();
3236
$this->factory = new DBALConnectionFactory('orm_default');
33-
$this->serviceManager->setService('doctrine.cache.array', new ArrayCache());
37+
// Set up appropriate cache based on DoctrineModule version detection:
38+
$arrayCache = class_exists(ArrayCache::class)
39+
? new ArrayCache() // DoctrineModule 5
40+
: new LaminasStorageCache(new Memory()); // DoctrineModule 6
41+
$this->serviceManager->setService('doctrine.cache.array', $arrayCache);
3442
$this->serviceManager->setService('doctrine.eventmanager.orm_default', new EventManager());
3543
}
3644

tests/config.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
return [
66
'modules' => [
77
'Laminas\Cache',
8+
'Laminas\Cache\Storage\Adapter\Memory',
89
'Laminas\Form',
910
'Laminas\Hydrator',
1011
'Laminas\Paginator',

0 commit comments

Comments
 (0)