/** * @test * @return void */ public function testLoadData() { $relativeDir = 'dir'; $fileContent = 'content file'; $media = ['preview_image' => 'preview.jpg']; $themeTitle = 'Theme title'; $themeConfigs = ['frontend/theme/code']; $themeConfig = $this->getMockBuilder('Magento\\Framework\\Config\\Theme')->disableOriginalConstructor()->getMock(); $theme = $this->getMockBuilder('Magento\\Theme\\Model\\Theme')->disableOriginalConstructor()->getMock(); $parentTheme = ['parentThemeCode']; $parentThemePath = 'frontend/parent/theme'; $this->directory->expects($this->once())->method('search')->with($relativeDir)->willReturn($themeConfigs); $this->directory->expects($this->any())->method('isExist')->with($themeConfigs[0])->willReturn(true); $this->directory->expects($this->any())->method('readFile')->with($themeConfigs[0])->willReturn($fileContent); $this->directory->expects($this->any())->method('getRelativePath')->with($themeConfigs[0])->willReturn($themeConfigs[0]); $this->directory->expects($this->any())->method('getAbsolutePath')->willReturnMap([[$themeConfigs[0], $themeConfigs[0]], [null, '']]); $this->themeConfigFactory->expects($this->once())->method('create')->with(['configContent' => $fileContent])->willReturn($themeConfig); $this->directory->expects($this->at(1))->method('getAbsolutePath')->willReturn(''); $this->entityFactory->expects($this->any())->method('create')->with('Magento\\Theme\\Model\\Theme')->willReturn($theme); $themeConfig->expects($this->once())->method('getMedia')->willReturn($media); $themeConfig->expects($this->once())->method('getParentTheme')->willReturn($parentTheme); $themeConfig->expects($this->once())->method('getThemeTitle')->willReturn($themeTitle); $theme->expects($this->once())->method('addData')->with(['parent_id' => null, 'type' => ThemeInterface::TYPE_PHYSICAL, 'area' => 'frontend', 'theme_path' => 'theme', 'code' => 'theme', 'theme_title' => $themeTitle, 'preview_image' => $media['preview_image'], 'parent_theme_path' => $parentTheme[0]])->willReturnSelf(); $theme->expects($this->once())->method('getData')->with('parent_theme_path')->willReturn($parentThemePath); $theme->expects($this->once())->method('getArea')->willReturn('frontend'); $this->model->addTargetPattern($relativeDir); $this->assertInstanceOf(get_class($this->model), $this->model->loadData()); }
/** * Theme registration * * @param string $pathPattern * @return $this */ public function register($pathPattern = '') { if (empty($pathPattern)) { $this->_themeCollection->addDefaultPattern('*'); } else { $this->_themeCollection->addTargetPattern($pathPattern); } foreach ($this->_themeCollection as $theme) { $this->_registerThemeRecursively($theme); } $this->checkPhysicalThemes()->checkAllowedThemeRelations(); return $this; }
/** * Load from configuration * * @dataProvider expectedThemeDataFromConfiguration */ public function testLoadFromConfiguration($themePath, $expectedData) { $theme = $this->_model->addTargetPattern($themePath)->getFirstItem(); $this->assertEquals($expectedData, $theme->getData()); }