/**
  * Include RequireJs configuration as an asset on the page
  *
  * @return $this
  */
 protected function _prepareLayout()
 {
     $requireJsConfig = $this->fileManager->createRequireJsConfigAsset();
     $requireJsMixinsConfig = $this->fileManager->createRequireJsMixinsAsset();
     $assetCollection = $this->pageConfig->getAssetCollection();
     $after = RequireJsConfig::REQUIRE_JS_FILE_NAME;
     if ($this->minification->isEnabled('js')) {
         $minResolver = $this->fileManager->createMinResolverAsset();
         $assetCollection->insert($minResolver->getFilePath(), $minResolver, $after);
         $after = $minResolver->getFilePath();
     }
     if ($this->bundleConfig->isBundlingJsFiles()) {
         $bundleAssets = $this->fileManager->createBundleJsPool();
         $staticAsset = $this->fileManager->createStaticJsAsset();
         /** @var \Magento\Framework\View\Asset\File $bundleAsset */
         if (!empty($bundleAssets) && $staticAsset !== false) {
             $bundleAssets = array_reverse($bundleAssets);
             foreach ($bundleAssets as $bundleAsset) {
                 $assetCollection->insert($bundleAsset->getFilePath(), $bundleAsset, $after);
             }
             $assetCollection->insert($staticAsset->getFilePath(), $staticAsset, reset($bundleAssets)->getFilePath());
             $after = $staticAsset->getFilePath();
         }
     }
     $assetCollection->insert($requireJsConfig->getFilePath(), $requireJsConfig, $after);
     $assetCollection->insert($requireJsMixinsConfig->getFilePath(), $requireJsMixinsConfig, $after);
     return parent::_prepareLayout();
 }
Exemple #2
0
 /**
  * Include RequireJs configuration as an asset on the page
  *
  * @return $this
  */
 protected function _prepareLayout()
 {
     $requireJsConfig = $this->fileManager->createRequireJsConfigAsset();
     $assetCollection = $this->pageConfig->getAssetCollection();
     $assetCollection->insert($requireJsConfig->getFilePath(), $requireJsConfig, RequireJsConfig::REQUIRE_JS_FILE_NAME);
     if ($this->bundleConfig->isBundlingJsFiles()) {
         $bundleAssets = $this->fileManager->createBundleJsPool();
         $staticAsset = $this->fileManager->createStaticJsAsset();
         /** @var \Magento\Framework\View\Asset\File $bundleAsset */
         if (!empty($bundleAssets) && $staticAsset !== false) {
             $bundleAssets = array_reverse($bundleAssets);
             foreach ($bundleAssets as $bundleAsset) {
                 $assetCollection->insert($bundleAsset->getFilePath(), $bundleAsset, RequireJsConfig::REQUIRE_JS_FILE_NAME);
             }
             $assetCollection->insert($staticAsset->getFilePath(), $staticAsset, RequireJsConfig::CONFIG_FILE_NAME);
         }
     }
     return parent::_prepareLayout();
 }
 public function testCreateBundleJsPool()
 {
     unset($this->configMock);
     $dirRead = $this->getMock('Magento\\Framework\\Filesystem\\Directory\\Read', [], [], 'libDir', false);
     $context = $this->getMock('Magento\\Framework\\View\\Asset\\File\\FallbackContext', [], [], '', false);
     $assetRepo = $this->getMock('Magento\\Framework\\View\\Asset\\Repository', [], [], '', false);
     $config = $this->getMock('\\Magento\\Framework\\RequireJs\\Config', [], [], '', false);
     $config->expects($this->never())->method('getConfigFileRelativePath')->willReturn(null);
     $context->expects($this->once())->method('getPath')->willReturn('path/to/bundle/dir');
     $dirRead->expects($this->once())->method('isExist')->with('path/to/bundle/dir/js/bundle')->willReturn(true);
     $dirRead->expects($this->once())->method('read')->with('path/to/bundle/dir/js/bundle')->willReturn(['bundle1.js', 'bundle2.js']);
     $dirRead->expects($this->exactly(2))->method('getRelativePath')->willReturnMap(['path/to/bundle1.js', 'path/to/bundle2.js']);
     $assetRepo->expects($this->exactly(2))->method('createArbitrary')->willReturnMap([$this->asset, $this->asset]);
     $assetRepo->expects($this->once())->method('getStaticViewFileContext')->willReturn($context);
     $this->appState->expects($this->once())->method('getMode')->willReturn('production');
     $this->fileSystem->expects($this->once())->method('getDirectoryRead')->with('static')->willReturn($dirRead);
     $object = new FileManager($config, $this->fileSystem, $this->appState, $assetRepo);
     $result = $object->createBundleJsPool();
     $this->assertArrayHasKey('0', $result);
     $this->assertArrayHasKey('1', $result);
 }