Skip to content

Commit 478fa13

Browse files
Merge pull request #73 from garygitton/feature/issue-71-class-name-resolution-problem
issue-71 - class name resolution problem
2 parents e967638 + 9db4ac9 commit 478fa13

File tree

6 files changed

+369
-182
lines changed

6 files changed

+369
-182
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@
8585
"BazConf\\": "test/Model/TestAsset/module/BazConf/",
8686
"InputFilter\\": "test/Model/TestAsset/module/InputFilter/",
8787
"Version\\": "test/Model/TestAsset/module/Version/src/Version/",
88-
"LaminasTest\\ApiTools\\Admin\\": "test/"
88+
"LaminasTest\\ApiTools\\Admin\\": "test/",
89+
"LaminasIntegrationTest\\ApiTools\\Admin\\": "test/Integration"
8990
}
9091
},
9192
"bin": [

config/module.config.php

Lines changed: 194 additions & 179 deletions
Large diffs are not rendered by default.

phpcs.xml.dist

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
<!-- Paths to check -->
1616
<file>bin</file>
17-
<file>config</file>
1817
<file>src</file>
1918
<file>test</file>
2019
<file>view</file>

phpunit.xml.dist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0"?>
22
<phpunit
33
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4-
bootstrap="./vendor/autoload.php"
4+
bootstrap="test/Bootstrap.php"
55
colors="true"
66
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd">
77
<coverage processUncoveredFiles="true">

test/Bootstrap.php

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace LaminasTest\ApiTools\Admin;
6+
7+
use Laminas\ModuleManager\ModuleManager;
8+
use Laminas\Mvc\Service\ServiceManagerConfig;
9+
use Laminas\ServiceManager\ServiceManager;
10+
11+
use function date_default_timezone_set;
12+
use function error_reporting;
13+
use function ini_set;
14+
use function is_array;
15+
16+
use const E_ALL;
17+
18+
class Bootstrap
19+
{
20+
/** @var ServiceManager */
21+
protected static $serviceManager;
22+
23+
/** @var bool */
24+
private static $initialized = false;
25+
26+
public static function init(): void
27+
{
28+
if (static::$initialized) {
29+
return;
30+
}
31+
32+
ini_set('display_errors', '1');
33+
ini_set('display_startup_errors', '1');
34+
ini_set('log_errors_max_len', '0');
35+
error_reporting(E_ALL);
36+
date_default_timezone_set('UTC');
37+
38+
include 'vendor/autoload.php';
39+
40+
$config = [
41+
'modules' => [
42+
'Laminas\\Filter',
43+
'Laminas\\Validator',
44+
'Laminas\\InputFilter',
45+
'Laminas\\ApiTools\\Admin',
46+
],
47+
'module_listener_options' => [
48+
'config_glob_paths' => [
49+
'./config/autoload/*.php',
50+
],
51+
'module_paths' => [
52+
'./module',
53+
'./vendor',
54+
],
55+
'config_cache_enabled' => false,
56+
'module_map_cache_enabled' => false,
57+
'check_dependencies' => true,
58+
],
59+
];
60+
61+
$serviceManagerConfig = new ServiceManagerConfig();
62+
$serviceManager = new ServiceManager();
63+
$serviceManagerConfig->configureServiceManager($serviceManager);
64+
$serviceManager->setService('ApplicationConfig', $config);
65+
/** @var ModuleManager $moduleManager */
66+
$moduleManager = $serviceManager->get('ModuleManager');
67+
$moduleManager->loadModules();
68+
69+
static::$serviceManager = $serviceManager;
70+
static::$initialized = true;
71+
}
72+
73+
/**
74+
* @return mixed|object
75+
*/
76+
public static function getService(string $name)
77+
{
78+
$serviceManager = self::getServiceManager();
79+
80+
return $serviceManager->get($name);
81+
}
82+
83+
public static function getConfig(): array
84+
{
85+
$serviceManager = self::getServiceManager();
86+
/** @psalm-suppress MixedAssignment */
87+
$config = $serviceManager->get('config');
88+
89+
return is_array($config) ? $config : [];
90+
}
91+
92+
public static function getServiceManager(): ServiceManager
93+
{
94+
self::init();
95+
96+
return static::$serviceManager;
97+
}
98+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace LaminasIntegrationTest\ApiTools\Admin\InputFilter;
6+
7+
use Exception;
8+
use Laminas\InputFilter\InputFilter;
9+
use Laminas\InputFilter\InputFilterInterface;
10+
use Laminas\InputFilter\InputFilterPluginManager;
11+
use LaminasTest\ApiTools\Admin\Bootstrap;
12+
use PHPUnit\Framework\TestCase;
13+
14+
use function array_keys;
15+
use function is_array;
16+
17+
class LaminasTest extends TestCase
18+
{
19+
/**
20+
* @test
21+
* @throws Exception
22+
*/
23+
public function inputFilterServiceKeyWillReturnInputFilter(): void
24+
{
25+
$inputFilterConfig = $this->getInputFilterAliases();
26+
$inputFilterKeys = array_keys($inputFilterConfig);
27+
28+
/** @var string $key */
29+
foreach ($inputFilterKeys as $key) {
30+
$inputFilter = $this->getInputFilter($key);
31+
$this->assertInstanceOf(InputFilter::class, $inputFilter);
32+
}
33+
}
34+
35+
private function getInputFilterManager(): InputFilterPluginManager
36+
{
37+
$inputFilterManager = Bootstrap::getService(InputFilterPluginManager::class);
38+
39+
if (! $inputFilterManager instanceof InputFilterPluginManager) {
40+
throw new Exception('Invalid class.');
41+
}
42+
43+
return $inputFilterManager;
44+
}
45+
46+
/**
47+
* @throws Exception
48+
*/
49+
private function getInputFilter(string $name): InputFilterInterface
50+
{
51+
$inputFilterManager = $this->getInputFilterManager();
52+
$inputFilter = $inputFilterManager->get($name);
53+
54+
if (! $inputFilter instanceof InputFilterInterface) {
55+
throw new Exception('Invalid class.');
56+
}
57+
58+
return $inputFilter;
59+
}
60+
61+
private function getInputFilterConfig(): array
62+
{
63+
$config = Bootstrap::getConfig();
64+
65+
return is_array($config['input_filters']) ? $config['input_filters'] : [];
66+
}
67+
68+
private function getInputFilterAliases(): array
69+
{
70+
$config = $this->getInputFilterConfig();
71+
72+
return is_array($config['aliases']) ? $config['aliases'] : [];
73+
}
74+
}

0 commit comments

Comments
 (0)