コード例 #1
0
 /**
  * @param $themePath
  * @dataProvider dataProviderThemeFormat
  */
 public function testExecuteWrongThemeFormat($themePath)
 {
     $this->themePackageInfo->expects($this->once())->method('getPackageName')->willReturn('dummy');
     $themeMock = $this->getMockBuilder('Magento\\Framework\\View\\Design\\ThemeInterface')->getMockForAbstractClass();
     $this->collection->expects($this->once())->method('getThemeByFullPath')->with($themePath)->willReturn($themeMock);
     $this->collection->expects($this->once())->method('hasTheme')->with($themeMock)->willReturn(false);
     $this->tester->execute(['theme' => [$themePath]]);
     $this->assertContains('Theme path should be specified as full path which is area/vendor/name.', $this->tester->getDisplay());
 }
コード例 #2
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());
 }
コード例 #3
0
 /**
  * @dataProvider executeFailedChildThemeCheckDataProvider
  * @param bool $hasVirtual
  * @param bool $hasPhysical
  * @param array $input
  * @param string $expected
  * @return void
  */
 public function testExecuteFailedChildThemeCheck($hasVirtual, $hasPhysical, array $input, $expected)
 {
     $theme = $this->getMock('Magento\\Theme\\Model\\Theme', [], [], '', false);
     $theme->expects($this->any())->method('hasChildThemes')->willReturn($hasVirtual);
     $parentThemeA = $this->getMock('Magento\\Theme\\Model\\Theme', [], [], '', false);
     $parentThemeA->expects($this->any())->method('getFullPath')->willReturn('frontend/Magento/a');
     $parentThemeB = $this->getMock('Magento\\Theme\\Model\\Theme', [], [], '', false);
     $parentThemeB->expects($this->any())->method('getFullPath')->willReturn('frontend/Magento/b');
     $childThemeC = $this->getMock('Magento\\Theme\\Model\\Theme', [], [], '', false);
     $childThemeC->expects($this->any())->method('getFullPath')->willReturn('frontend/Magento/c');
     $childThemeD = $this->getMock('Magento\\Theme\\Model\\Theme', [], [], '', false);
     $childThemeD->expects($this->any())->method('getFullPath')->willReturn('frontend/Magento/d');
     if ($hasPhysical) {
         $childThemeC->expects($this->any())->method('getParentTheme')->willReturn($parentThemeA);
         $childThemeD->expects($this->any())->method('getParentTheme')->willReturn($parentThemeB);
     }
     $this->themeProvider->expects($this->any())->method('getThemeByFullPath')->willReturn($theme);
     $this->themeCollection->expects($this->any())->method('getIterator')->willReturn(new \ArrayIterator([$childThemeC, $childThemeD]));
     $this->assertEquals($expected, $this->themeDependencyChecker->checkChildTheme($input));
 }
コード例 #4
0
 public function setupPassChildThemeCheck()
 {
     $theme = $this->getMock('Magento\\Theme\\Model\\Theme', [], [], '', false);
     $theme->expects($this->any())->method('hasChildThemes')->willReturn(false);
     $this->collection->expects($this->any())->method('getIterator')->willReturn(new \ArrayIterator([]));
 }