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

Commit 60abfad

Browse files
mtymekweierophinney
authored andcommitted
factory for helper plugin manager
1 parent df4eb83 commit 60abfad

File tree

3 files changed

+98
-0
lines changed

3 files changed

+98
-0
lines changed

src/HelperPluginManagerFactory.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace Zend\Expressive\ZendView;
4+
5+
use Interop\Container\ContainerInterface;
6+
use Zend\ServiceManager\Config;
7+
use Zend\View\HelperPluginManager;
8+
9+
class HelperPluginManagerFactory
10+
{
11+
public function __invoke(ContainerInterface $container)
12+
{
13+
$config = $container->has('config') ? $container->get('config') : [];
14+
$config = isset($config['view_helpers']) ? $config['view_helpers'] : [];
15+
$manager = new HelperPluginManager(new Config($config));
16+
$manager->setServiceLocator($container);
17+
18+
return $manager;
19+
}
20+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?php
2+
/**
3+
* Zend Framework (http://framework.zend.com/)
4+
*
5+
* @see https://github.com/zendframework/zend-expressive for the canonical source repository
6+
* @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
7+
* @license https://github.com/zendframework/zend-expressive/blob/master/LICENSE.md New BSD License
8+
*/
9+
10+
namespace ZendTest\Expressive\ZendView;
11+
12+
use Interop\Container\ContainerInterface;
13+
use PHPUnit_Framework_TestCase as TestCase;
14+
use Zend\Expressive\ZendView\HelperPluginManagerFactory;
15+
use Zend\ServiceManager\ServiceManager;
16+
use Zend\View\HelperPluginManager;
17+
use ZendTest\Expressive\ZendView\TestAsset\TestHelper;
18+
19+
class HelperPluginManagerFactoryTest extends TestCase
20+
{
21+
/**
22+
* @var ContainerInterface
23+
*/
24+
private $container;
25+
26+
public function setUp()
27+
{
28+
$this->container = $this->prophesize(ServiceManager::class);
29+
}
30+
31+
public function testCallingFactoryWithNoConfigReturnsHelperPluginManagerInstance()
32+
{
33+
$this->container->has('config')->willReturn(false);
34+
$factory = new HelperPluginManagerFactory();
35+
$manager = $factory($this->container->reveal());
36+
$this->assertInstanceOf(HelperPluginManager::class, $manager);
37+
return $manager;
38+
}
39+
40+
public function testCallingFactoryWithNoViewHelperConfigReturnsHelperPluginManagerInstance()
41+
{
42+
$this->container->has('config')->willReturn(true);
43+
$this->container->get('config')->willReturn([]);
44+
$factory = new HelperPluginManagerFactory();
45+
$manager = $factory($this->container->reveal());
46+
$this->assertInstanceOf(HelperPluginManager::class, $manager);
47+
return $manager;
48+
}
49+
50+
public function testCallingFactoryWithConfigAllowsAddingHelpers()
51+
{
52+
$this->container->has('config')->willReturn(true);
53+
$this->container->get('config')->willReturn(
54+
[
55+
'view_helpers' => [
56+
'invokables' => [
57+
'testHelper' => TestHelper::class,
58+
],
59+
],
60+
]
61+
);
62+
$factory = new HelperPluginManagerFactory();
63+
$manager = $factory($this->container->reveal());
64+
$this->assertInstanceOf(HelperPluginManager::class, $manager);
65+
$this->assertTrue($manager->has('testHelper'));
66+
$this->assertInstanceOf(TestHelper::class, $manager->get('testHelper'));
67+
return $manager;
68+
}
69+
}

test/TestAsset/TestHelper.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
namespace ZendTest\Expressive\ZendView\TestAsset;
4+
5+
use Zend\View\Helper\AbstractHelper;
6+
7+
class TestHelper extends AbstractHelper
8+
{
9+
}

0 commit comments

Comments
 (0)