123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Test\Integrity\Modular;
- use Magento\Customer\Model\Context;
- /**
- * @magentoAppIsolation enabled
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class TemplateFilesTest extends \Magento\TestFramework\TestCase\AbstractIntegrity
- {
- public function testAllTemplates()
- {
- $invoker = new \Magento\Framework\App\Utility\AggregateInvoker($this);
- $invoker(
- function ($module, $template, $class, $area) {
- \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
- \Magento\Framework\View\DesignInterface::class
- )->setDefaultDesignTheme();
- // intentionally to make sure the module files will be requested
- $params = [
- 'area' => $area,
- 'themeModel' => \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
- \Magento\Framework\View\Design\ThemeInterface::class
- ),
- 'module' => $module,
- ];
- $file = \Magento\TestFramework\Helper\Bootstrap::getObjectmanager()->get(
- \Magento\Framework\View\FileSystem::class
- )->getTemplateFileName(
- $template,
- $params
- );
- $this->assertInternalType('string', $file, "Block class: {$class} {$template}");
- $this->assertFileExists($file, "Block class: {$class}");
- },
- $this->allTemplatesDataProvider()
- );
- }
- /**
- * @return array
- * @SuppressWarnings(PHPMD.CyclomaticComplexity)
- */
- public function allTemplatesDataProvider()
- {
- $blockClass = '';
- try {
- /** @var $website \Magento\Store\Model\Website */
- \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
- \Magento\Store\Model\StoreManagerInterface::class
- )->getStore()->setWebsiteId(
- 0
- );
- $templates = [];
- $skippedBlocks = $this->_getBlocksToSkip();
- foreach (\Magento\Framework\App\Utility\Classes::collectModuleClasses('Block') as $blockClass => $module) {
- if (!in_array($module, $this->_getEnabledModules()) || in_array($blockClass, $skippedBlocks)) {
- continue;
- }
- $class = new \ReflectionClass($blockClass);
- if ($class->isAbstract() || !$class->isSubclassOf(\Magento\Framework\View\Element\Template::class)) {
- continue;
- }
- $area = 'frontend';
- if ($module == 'Magento_Backend' || strpos(
- $blockClass,
- '\\Adminhtml\\'
- ) !== false || strpos(
- $blockClass,
- '\\Backend\\'
- ) !== false || $class->isSubclassOf(
- \Magento\Backend\Block\Template::class
- )
- ) {
- $area = 'adminhtml';
- }
- \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
- \Magento\Framework\App\AreaList::class
- )->getArea(
- $area
- )->load(
- \Magento\Framework\App\Area::PART_CONFIG
- );
- \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
- \Magento\Framework\Config\ScopeInterface::class
- )->setCurrentScope(
- $area
- );
- \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
- \Magento\Framework\App\State::class
- )->setAreaCode(
- $area
- );
- $context = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
- \Magento\Framework\App\Http\Context::class
- );
- $context->setValue(Context::CONTEXT_AUTH, false, false);
- $context->setValue(
- Context::CONTEXT_GROUP,
- \Magento\Customer\Model\GroupManagement::NOT_LOGGED_IN_ID,
- \Magento\Customer\Model\GroupManagement::NOT_LOGGED_IN_ID
- );
- $block = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create($blockClass);
- $template = $block->getTemplate();
- if ($template) {
- $templates[$module . ', ' . $template . ', ' . $blockClass . ', ' . $area] = [
- $module,
- $template,
- $blockClass,
- $area,
- ];
- }
- }
- return $templates;
- } catch (\Exception $e) {
- trigger_error(
- "Corrupted data provider. Last known block instantiation attempt: '{$blockClass}'." .
- " Exception: {$e}",
- E_USER_ERROR
- );
- }
- }
- /**
- * @return array
- */
- protected function _getBlocksToSkip()
- {
- $result = [];
- foreach (glob(__DIR__ . '/_files/skip_template_blocks*.php') as $file) {
- $blocks = include $file;
- $result = array_merge($result, $blocks);
- }
- return array_combine($result, $result);
- }
- }
|