From 07d9844a03fd4b109ed009a5ccb625c899c746e5 Mon Sep 17 00:00:00 2001 From: Maks3w Date: Tue, 15 Sep 2015 00:36:38 +0200 Subject: [PATCH 1/4] Split test --- test/Listener/ModuleResolverListenerTest.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/Listener/ModuleResolverListenerTest.php b/test/Listener/ModuleResolverListenerTest.php index 9aff440..5257144 100644 --- a/test/Listener/ModuleResolverListenerTest.php +++ b/test/Listener/ModuleResolverListenerTest.php @@ -61,6 +61,12 @@ public function testModuleResolverListenerCanResolveModuleClasses() $e->setModuleName('ListenerTestModule'); $this->assertInstanceOf('ListenerTestModule\Module', $moduleResolver($e)); + } + + public function testModuleResolverListenerReturnFalseIfCannotResolveModuleClasses() + { + $moduleResolver = new ModuleResolverListener; + $e = new ModuleEvent; $e->setModuleName('DoesNotExist'); $this->assertFalse($moduleResolver($e)); From 8822c7d1dcc0b18379ebf5f6f36a365e2780583c Mon Sep 17 00:00:00 2001 From: Maks3w Date: Tue, 15 Sep 2015 00:40:51 +0200 Subject: [PATCH 2/4] Refactor test as data provider --- test/Listener/ModuleResolverListenerTest.php | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/test/Listener/ModuleResolverListenerTest.php b/test/Listener/ModuleResolverListenerTest.php index 5257144..81d366f 100644 --- a/test/Listener/ModuleResolverListenerTest.php +++ b/test/Listener/ModuleResolverListenerTest.php @@ -9,6 +9,7 @@ namespace ZendTest\ModuleManager\Listener; +use ListenerTestModule; use PHPUnit_Framework_TestCase as TestCase; use Zend\Loader\AutoloaderFactory; use Zend\Loader\ModuleAutoloader; @@ -54,13 +55,24 @@ public function tearDown() set_include_path($this->includePath); } - public function testModuleResolverListenerCanResolveModuleClasses() + /** + * @dataProvider validModuleNameProvider + */ + public function testModuleResolverListenerCanResolveModuleClasses($moduleName, $expectedInstanceOf) { $moduleResolver = new ModuleResolverListener; $e = new ModuleEvent; - $e->setModuleName('ListenerTestModule'); - $this->assertInstanceOf('ListenerTestModule\Module', $moduleResolver($e)); + $e->setModuleName($moduleName); + $this->assertInstanceOf($expectedInstanceOf, $moduleResolver($e)); + } + + public function validModuleNameProvider() + { + return [ + // Description => [module name, expectedInstanceOf] + 'Append Module' => ['ListenerTestModule', ListenerTestModule\Module::class], + ]; } public function testModuleResolverListenerReturnFalseIfCannotResolveModuleClasses() From c97bc6a12ab6c8b9796b7d5dd4ab7734ec255c84 Mon Sep 17 00:00:00 2001 From: Maks3w Date: Tue, 15 Sep 2015 00:58:28 +0200 Subject: [PATCH 3/4] Resolve modules using PHP 5.5 ::class constant --- src/Listener/ModuleResolverListener.php | 4 ++++ test/Listener/ModuleResolverListenerTest.php | 1 + 2 files changed, 5 insertions(+) diff --git a/src/Listener/ModuleResolverListener.php b/src/Listener/ModuleResolverListener.php index b058796..5f79508 100644 --- a/src/Listener/ModuleResolverListener.php +++ b/src/Listener/ModuleResolverListener.php @@ -23,6 +23,10 @@ class ModuleResolverListener extends AbstractListener public function __invoke(ModuleEvent $e) { $moduleName = $e->getModuleName(); + if (class_exists($moduleName)) { + return new $moduleName; + } + $class = $moduleName . '\Module'; if (!class_exists($class)) { diff --git a/test/Listener/ModuleResolverListenerTest.php b/test/Listener/ModuleResolverListenerTest.php index 81d366f..2437ddc 100644 --- a/test/Listener/ModuleResolverListenerTest.php +++ b/test/Listener/ModuleResolverListenerTest.php @@ -72,6 +72,7 @@ public function validModuleNameProvider() return [ // Description => [module name, expectedInstanceOf] 'Append Module' => ['ListenerTestModule', ListenerTestModule\Module::class], + 'FQCN Module' => [ListenerTestModule\Module::class, ListenerTestModule\Module::class], ]; } From 8d6c7f70863f6d49d5ae94688f7e04ba72f270e9 Mon Sep 17 00:00:00 2001 From: Maks3w Date: Tue, 15 Sep 2015 00:58:48 +0200 Subject: [PATCH 4/4] Add test for arbitrary class name --- test/Listener/ModuleResolverListenerTest.php | 1 + test/TestAsset/ListenerTestModule/FooModule.php | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 test/TestAsset/ListenerTestModule/FooModule.php diff --git a/test/Listener/ModuleResolverListenerTest.php b/test/Listener/ModuleResolverListenerTest.php index 2437ddc..8e3ab03 100644 --- a/test/Listener/ModuleResolverListenerTest.php +++ b/test/Listener/ModuleResolverListenerTest.php @@ -73,6 +73,7 @@ public function validModuleNameProvider() // Description => [module name, expectedInstanceOf] 'Append Module' => ['ListenerTestModule', ListenerTestModule\Module::class], 'FQCN Module' => [ListenerTestModule\Module::class, ListenerTestModule\Module::class], + 'FQCN Arbitrary' => [ListenerTestModule\FooModule::class, ListenerTestModule\FooModule::class], ]; } diff --git a/test/TestAsset/ListenerTestModule/FooModule.php b/test/TestAsset/ListenerTestModule/FooModule.php new file mode 100644 index 0000000..02b73ce --- /dev/null +++ b/test/TestAsset/ListenerTestModule/FooModule.php @@ -0,0 +1,7 @@ +