PageRenderTime 68ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/Zend/ModuleManager/ModuleManagerTest.php

https://bitbucket.org/aboozar/zf2
PHP | 134 lines | 106 code | 14 blank | 14 comment | 2 complexity | cc9b9bda3abf44df79ccd53468b8ff0e MD5 | raw file
Possible License(s): BSD-3-Clause
  1. <?php
  2. /**
  3. * Zend Framework (http://framework.zend.com/)
  4. *
  5. * @link http://github.com/zendframework/zf2 for the canonical source repository
  6. * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  7. * @license http://framework.zend.com/license/new-bsd New BSD License
  8. * @package Zend_ModuleManager
  9. */
  10. namespace ZendTest\ModuleManager;
  11. use PHPUnit_Framework_TestCase as TestCase;
  12. use Zend\EventManager\EventManager;
  13. use Zend\Loader\AutoloaderFactory;
  14. use Zend\Loader\ModuleAutoloader;
  15. use Zend\ModuleManager\Listener\ListenerOptions;
  16. use Zend\ModuleManager\Listener\DefaultListenerAggregate;
  17. use Zend\ModuleManager\ModuleManager;
  18. use InvalidArgumentException;
  19. class ModuleManagerTest extends TestCase
  20. {
  21. public function setUp()
  22. {
  23. $this->tmpdir = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'zend_module_cache_dir';
  24. @mkdir($this->tmpdir);
  25. $this->configCache = $this->tmpdir . DIRECTORY_SEPARATOR . 'config.cache.php';
  26. // Store original autoloaders
  27. $this->loaders = spl_autoload_functions();
  28. if (!is_array($this->loaders)) {
  29. // spl_autoload_functions does not return empty array when no
  30. // autoloaders registered...
  31. $this->loaders = array();
  32. }
  33. // Store original include_path
  34. $this->includePath = get_include_path();
  35. $this->defaultListeners = new DefaultListenerAggregate(
  36. new ListenerOptions(array(
  37. 'module_paths' => array(
  38. realpath(__DIR__ . '/TestAsset'),
  39. ),
  40. ))
  41. );
  42. }
  43. public function tearDown()
  44. {
  45. $file = glob($this->tmpdir . DIRECTORY_SEPARATOR . '*');
  46. @unlink($file[0]); // change this if there's ever > 1 file
  47. @rmdir($this->tmpdir);
  48. // Restore original autoloaders
  49. AutoloaderFactory::unregisterAutoloaders();
  50. $loaders = spl_autoload_functions();
  51. if (is_array($loaders)) {
  52. foreach ($loaders as $loader) {
  53. spl_autoload_unregister($loader);
  54. }
  55. }
  56. foreach ($this->loaders as $loader) {
  57. spl_autoload_register($loader);
  58. }
  59. // Restore original include_path
  60. set_include_path($this->includePath);
  61. }
  62. public function testEventManagerIdentifiers()
  63. {
  64. $moduleManager = new ModuleManager(array());
  65. $identifiers = $moduleManager->getEventManager()->getIdentifiers();
  66. $expected = array('Zend\ModuleManager\ModuleManager', 'module_manager');
  67. $this->assertEquals($expected, array_values($identifiers));
  68. }
  69. public function testCanLoadSomeModule()
  70. {
  71. $configListener = $this->defaultListeners->getConfigListener();
  72. $moduleManager = new ModuleManager(array('SomeModule'), new EventManager);
  73. $moduleManager->getEventManager()->attachAggregate($this->defaultListeners);
  74. $moduleManager->loadModules();
  75. $loadedModules = $moduleManager->getLoadedModules();
  76. $this->assertInstanceOf('SomeModule\Module', $loadedModules['SomeModule']);
  77. $config = $configListener->getMergedConfig();
  78. $this->assertSame($config->some, 'thing');
  79. }
  80. public function testCanLoadMultipleModules()
  81. {
  82. $configListener = $this->defaultListeners->getConfigListener();
  83. $moduleManager = new ModuleManager(array('BarModule', 'BazModule'));
  84. $moduleManager->getEventManager()->attachAggregate($this->defaultListeners);
  85. $moduleManager->loadModules();
  86. $loadedModules = $moduleManager->getLoadedModules();
  87. $this->assertInstanceOf('BarModule\Module', $loadedModules['BarModule']);
  88. $this->assertInstanceOf('BazModule\Module', $loadedModules['BazModule']);
  89. $this->assertInstanceOf('BarModule\Module', $moduleManager->getModule('BarModule'));
  90. $this->assertInstanceOf('BazModule\Module', $moduleManager->getModule('BazModule'));
  91. $this->assertNull($moduleManager->getModule('NotLoaded'));
  92. $config = $configListener->getMergedConfig();
  93. $this->assertSame('foo', $config->bar);
  94. $this->assertSame('bar', $config->baz);
  95. }
  96. public function testModuleLoadingBehavior()
  97. {
  98. $moduleManager = new ModuleManager(array('BarModule'));
  99. $moduleManager->getEventManager()->attachAggregate($this->defaultListeners);
  100. $modules = $moduleManager->getLoadedModules();
  101. $this->assertSame(0, count($modules));
  102. $modules = $moduleManager->getLoadedModules(true);
  103. $this->assertSame(1, count($modules));
  104. $moduleManager->loadModules(); // should not cause any problems
  105. $moduleManager->loadModule('BarModule'); // should not cause any problems
  106. $modules = $moduleManager->getLoadedModules(true); // BarModule already loaded so nothing happens
  107. $this->assertSame(1, count($modules));
  108. }
  109. public function testConstructorThrowsInvalidArgumentException()
  110. {
  111. $this->setExpectedException('InvalidArgumentException');
  112. $moduleManager = new ModuleManager('stringShouldBeArray');
  113. }
  114. public function testNotFoundModuleThrowsRuntimeException()
  115. {
  116. $this->setExpectedException('RuntimeException');
  117. $moduleManager = new ModuleManager(array('NotFoundModule'));
  118. $moduleManager->loadModules();
  119. }
  120. }