Skip to content
This repository was archived by the owner on Jan 21, 2020. It is now read-only.

Commit b4c5a27

Browse files
committed
Merge branch 'hotfix/33'
Close #35 Fixes #33
2 parents a90f054 + c7b4858 commit b4c5a27

File tree

5 files changed

+42
-2
lines changed

5 files changed

+42
-2
lines changed

CHANGELOG.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
All notable changes to this project will be documented in this file, in reverse chronological order by release.
44

5-
## 1.5.1 - TBD
5+
## 1.5.1 - 2016-11-14
66

77
### Added
88

@@ -18,7 +18,9 @@ All notable changes to this project will be documented in this file, in reverse
1818

1919
### Fixed
2020

21-
- Nothing.
21+
- [#35](https://github.com/zfcampus/zf-doctrine-querybuilder/pull/35) fixes
22+
an issue with `DefaultOdmFactory` and `DefaultOrmFactory` when used with
23+
ZF2 with context of `AbstractPluginManager`.
2224

2325
## 1.5.0 - 2016-11-10
2426

src/Query/Provider/DefaultOdmFactory.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
namespace ZF\Doctrine\QueryBuilder\Query\Provider;
88

99
use Interop\Container\ContainerInterface;
10+
use Zend\ServiceManager\AbstractPluginManager;
1011

1112
class DefaultOdmFactory
1213
{
@@ -18,6 +19,10 @@ class DefaultOdmFactory
1819
*/
1920
public function __invoke(ContainerInterface $container)
2021
{
22+
if ($container instanceof AbstractPluginManager) {
23+
$container = $container->getServiceLocator() ?: $container;
24+
}
25+
2126
$provider = new DefaultOdm();
2227
$provider->setServiceLocator($container);
2328

src/Query/Provider/DefaultOrmFactory.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
namespace ZF\Doctrine\QueryBuilder\Query\Provider;
88

99
use Interop\Container\ContainerInterface;
10+
use Zend\ServiceManager\AbstractPluginManager;
1011

1112
class DefaultOrmFactory
1213
{
@@ -18,6 +19,10 @@ class DefaultOrmFactory
1819
*/
1920
public function __invoke(ContainerInterface $container)
2021
{
22+
if ($container instanceof AbstractPluginManager) {
23+
$container = $container->getServiceLocator() ?: $container;
24+
}
25+
2126
$provider = new DefaultOrm();
2227
$provider->setServiceLocator($container);
2328

test/Query/Provider/DefaultOdmFactoryTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
namespace ZFTest\Doctrine\QueryBuilder\Query\Provider;
88

99
use PHPUnit_Framework_TestCase as TestCase;
10+
use Zend\ServiceManager\AbstractPluginManager;
1011
use Zend\ServiceManager\ServiceLocatorInterface;
1112
use ZF\Doctrine\QueryBuilder\Query\Provider\DefaultOdm;
1213
use ZF\Doctrine\QueryBuilder\Query\Provider\DefaultOdmFactory;
@@ -23,4 +24,17 @@ public function testInvokableFactoryReturnsDefaultOdmQueryProvider()
2324
$this->assertInstanceOf(DefaultOdm::class, $provider);
2425
$this->assertAttributeSame($serviceLocator, 'serviceLocator', $provider);
2526
}
27+
28+
public function testInvokableFactoryReturnsDefaultOdmQueryProviderWhenCreatedViaAbstractPluginManager()
29+
{
30+
$serviceLocator = $this->prophesize(ServiceLocatorInterface::class)->reveal();
31+
$abstractPluginManager = $this->prophesize(AbstractPluginManager::class);
32+
$abstractPluginManager->getServiceLocator()->willReturn($serviceLocator);
33+
34+
$factory = new DefaultOdmFactory();
35+
$provider = $factory($abstractPluginManager->reveal());
36+
37+
$this->assertInstanceOf(DefaultOdm::class, $provider);
38+
$this->assertAttributeSame($serviceLocator, 'serviceLocator', $provider);
39+
}
2640
}

test/Query/Provider/DefaultOrmFactoryTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
namespace ZFTest\Doctrine\QueryBuilder\Query\Provider;
88

99
use PHPUnit_Framework_TestCase as TestCase;
10+
use Zend\ServiceManager\AbstractPluginManager;
1011
use Zend\ServiceManager\ServiceLocatorInterface;
1112
use ZF\Doctrine\QueryBuilder\Query\Provider\DefaultOrm;
1213
use ZF\Doctrine\QueryBuilder\Query\Provider\DefaultOrmFactory;
@@ -23,4 +24,17 @@ public function testInvokableFactoryReturnsDefaultOdmQueryProvider()
2324
$this->assertInstanceOf(DefaultOrm::class, $provider);
2425
$this->assertAttributeSame($serviceLocator, 'serviceLocator', $provider);
2526
}
27+
28+
public function testInvokableFactoryReturnsDefaultOrmQueryProviderWhenCreatedViaAbstractPluginManager()
29+
{
30+
$serviceLocator = $this->prophesize(ServiceLocatorInterface::class)->reveal();
31+
$abstractPluginManager = $this->prophesize(AbstractPluginManager::class);
32+
$abstractPluginManager->getServiceLocator()->willReturn($serviceLocator);
33+
34+
$factory = new DefaultOrmFactory();
35+
$provider = $factory($abstractPluginManager->reveal());
36+
37+
$this->assertInstanceOf(DefaultOrm::class, $provider);
38+
$this->assertAttributeSame($serviceLocator, 'serviceLocator', $provider);
39+
}
2640
}

0 commit comments

Comments
 (0)