/** * @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()); }
/** * @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()); }
/** * @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)); }
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([])); }