/**
  * Theme registration
  *
  * @param \Magento\Framework\Event\Observer $observer
  * @return $this
  */
 public function execute(\Magento\Framework\Event\Observer $observer)
 {
     $pathPattern = $observer->getEvent()->getPathPattern();
     try {
         $this->registration->register($pathPattern);
     } catch (\Magento\Framework\Exception\LocalizedException $e) {
         $this->logger->critical($e);
     }
     return $this;
 }
Exemplo n.º 2
0
 /**
  * Add new theme from filesystem
  *
  * @param AbstractAction $subject
  * @param RequestInterface $request
  *
  * @return void
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function beforeDispatch(AbstractAction $subject, RequestInterface $request)
 {
     try {
         if ($this->appState->getMode() != AppState::MODE_PRODUCTION) {
             $this->themeRegistration->register();
         }
     } catch (LocalizedException $e) {
         $this->logger->critical($e);
     }
 }
 /**
  * @test
  * @return void
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function testRegister()
 {
     $image = 'preview.jpg';
     $themeFilePath = 'any/path';
     $parentId = 1;
     $fullPath = '/full/path';
     $theme = $this->getMockBuilder('Magento\\Framework\\View\\Design\\ThemeInterface')->setMethods(['setParentId', 'getId', 'getFullPath', 'getParentTheme', 'getCustomization', 'getPreviewImage', 'getThemeImage', 'setType', 'save'])->getMockForAbstractClass();
     $parentTheme = $this->getMockBuilder('Magento\\Framework\\View\\Design\\ThemeInterface')->getMock();
     $parentThemeFromCollectionId = 123;
     $parentThemeFromCollection = $this->getMockBuilder('Magento\\Framework\\View\\Design\\ThemeInterface')->setMethods(['getType', 'getId'])->getMockForAbstractClass();
     $themeFromCollection = $this->getMockBuilder('Magento\\Framework\\View\\Design\\ThemeInterface')->setMethods(['setType', 'save', 'getParentTheme', 'getType', 'getParentId', 'setParentId'])->getMockForAbstractClass();
     $collection = $this->getMockBuilder('Magento\\Theme\\Model\\ResourceModel\\Theme\\Data\\Collection')->disableOriginalConstructor()->getMock();
     $customization = $this->getMockBuilder('Magento\\Framework\\View\\Design\\Theme\\CustomizationInterface')->getMock();
     $imageModel = $this->getMockBuilder('Magento\\Framework\\View\\Design\\Theme\\Image')->disableOriginalConstructor()->getMock();
     $theme->expects($this->once())->method('save')->willReturnSelf();
     $theme->expects($this->once())->method('setType')->willReturn(ThemeInterface::TYPE_PHYSICAL);
     $theme->expects($this->any())->method('setParentId')->willReturn($parentId);
     $theme->expects($this->any())->method('getFullPath')->willReturn($fullPath);
     $theme->expects($this->any())->method('getParentTheme')->willReturn($parentTheme);
     $parentTheme->expects($this->any())->method('getId')->willReturn($parentId);
     $this->collectionFactory->expects($this->any())->method('create')->willReturn($collection);
     $this->filesystemCollection->expects($this->once())->method('clear');
     $this->filesystemCollection->expects($this->once())->method('hasTheme')->with($themeFromCollection)->willReturn(false);
     $this->filesystemCollection->expects($this->once())->method('getIterator')->willReturn(new \ArrayIterator([$theme]));
     $collection->expects($this->once())->method('getThemeByFullPath')->with($fullPath)->willReturn($theme);
     $theme->expects($this->once())->method('getCustomization')->willReturn($customization);
     $customization->expects($this->once())->method('getThemeFilesPath')->willReturn($themeFilePath);
     $theme->expects($this->any())->method('getPreviewImage')->willReturn($image);
     $theme->expects($this->once())->method('getThemeImage')->willReturn($imageModel);
     $imageModel->expects($this->once())->method('createPreviewImage')->with($themeFilePath . '/' . $image)->willReturnSelf();
     $collection->expects($this->once())->method('addTypeFilter')->with(ThemeInterface::TYPE_PHYSICAL)->willReturnSelf();
     $collection->expects($this->any())->method('getIterator')->willReturn(new \ArrayIterator([$themeFromCollection]));
     $collection->expects($this->any())->method('addTypeRelationFilter')->willReturnSelf();
     $themeFromCollection->expects($this->once())->method('setType')->with(ThemeInterface::TYPE_VIRTUAL)->willReturnSelf();
     $themeFromCollection->expects($this->any())->method('save')->willReturnSelf();
     $themeFromCollection->expects($this->any())->method('getParentTheme')->willReturn($parentThemeFromCollection);
     $themeFromCollection->expects($this->any())->method('getType')->willReturn(ThemeInterface::TYPE_STAGING);
     $themeFromCollection->expects($this->any())->method('getParentId')->willReturn(null);
     $themeFromCollection->expects($this->any())->method('setParentId')->with($parentThemeFromCollectionId)->willReturnSelf();
     $parentThemeFromCollection->expects($this->any())->method('getType')->willReturn(ThemeInterface::TYPE_VIRTUAL);
     $parentThemeFromCollection->expects($this->any())->method('getId')->willReturn($parentThemeFromCollectionId);
     $this->assertInstanceOf(get_class($this->model), $this->model->register());
 }
 /**
  * {@inheritdoc}
  */
 public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
 {
     $this->themeRegistration->register();
 }
Exemplo n.º 5
0
 /**
  * Register themes by pattern
  * Use this method only with database isolation
  *
  * @return \Magento\Theme\Model\Theme\RegistrationTest
  */
 protected function registerThemes()
 {
     $pathPattern = 'frontend/*/*/theme.xml';
     $this->_model->register($pathPattern);
     return $this;
 }
 /**
  * Register themes
  * Use this method only with database isolation
  *
  * @return \Magento\Theme\Model\Theme\RegistrationTest
  */
 protected function registerThemes()
 {
     $this->_model->register();
     return $this;
 }