public function testBeforeDispatchWithException() { $exception = new LocalizedException(new Phrase('Phrase')); $this->themeRegistration->expects($this->once())->method('register')->willThrowException($exception); $this->logger->expects($this->once())->method('critical'); $this->plugin->beforeDispatch($this->abstractAction, $this->request); }
public function testBeforeExecuteWithException() { $exception = new LocalizedException(new Phrase('Phrase')); $this->themeRegistration->expects($this->once())->method('register')->willThrowException($exception); $this->logger->expects($this->once())->method('critical'); $object = new Registration($this->themeRegistration, $this->logger, $this->appState); $object->beforeExecute($this->abstractAction, $this->request); }
/** * 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; }
/** * 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); } }
public function testThemeRegistration() { $pattern = 'some pattern'; $eventMock = $this->getMockBuilder('Magento\\Framework\\Event')->setMethods(['getPathPattern'])->disableOriginalConstructor()->getMock(); $eventMock->expects($this->any())->method('getPathPattern')->willReturn($pattern); $observerMock = $this->getMockBuilder('Magento\\Framework\\Event\\Observer')->disableOriginalConstructor()->getMock(); $observerMock->expects($this->any())->method('getEvent')->willReturn($eventMock); $this->registration->expects($this->once())->method('register')->with($pattern)->willThrowException(new \Magento\Framework\Exception\LocalizedException(__('exception'))); $this->logger->expects($this->once())->method('critical'); /** @var $observerMock \Magento\Framework\Event\Observer */ $this->themeObserver->execute($observerMock); }
/** * @magentoDbIsolation enabled */ public function testRegister() { $this->registerThemes(); $themePath = implode(\Magento\Framework\View\Design\ThemeInterface::PATH_SEPARATOR, ['frontend', 'Test/test_theme']); $theme = $this->_model->getThemeFromDb($themePath); $this->assertEquals($themePath, $theme->getFullPath()); }
/** * @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(); }