コード例 #1
0
ファイル: RegistrationTest.php プロジェクト: koliaGI/magento2
 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);
 }
コード例 #2
0
 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);
 }
コード例 #3
0
 /**
  * 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;
 }
コード例 #4
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);
     }
 }
コード例 #5
0
 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);
 }
コード例 #6
0
 /**
  * @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());
 }
コード例 #7
0
 /**
  * @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());
 }
コード例 #8
0
 /**
  * {@inheritdoc}
  */
 public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
 {
     $this->themeRegistration->register();
 }