Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
XmlFilesTest.php
Go to the documentation of this file.
1 <?php
7 
9 
10 class XmlFilesTest extends \PHPUnit\Framework\TestCase
11 {
16 
17  public function setUp()
18  {
19  $this->validationStateMock = $this->createMock(\Magento\Framework\Config\ValidationStateInterface::class);
20  $this->validationStateMock->method('isValidationRequired')
21  ->willReturn(true);
22  }
23 
28  public function testViewConfigFile($file)
29  {
30  $domConfig = new \Magento\Framework\Config\Dom(
31  file_get_contents($file),
32  $this->validationStateMock
33  );
34  $errors = [];
35  $urnResolver = new \Magento\Framework\Config\Dom\UrnResolver();
36  $result = $domConfig->validate(
37  $urnResolver->getRealPath('urn:magento:framework:Config/etc/view.xsd'),
38  $errors
39  );
40  $this->assertTrue($result, "Invalid XML-file: {$file}\n" . join("\n", $errors));
41  }
42 
46  public function viewConfigFileDataProvider()
47  {
48  $result = [];
51  ->get(\Magento\Framework\Component\DirSearch::class);
52  $files = $componentDirSearch->collectFiles(ComponentRegistrar::THEME, 'etc/view.xml');
53  foreach ($files as $file) {
54  $result[substr($file, strlen(BP))] = [$file];
55  }
56  return $result;
57  }
58 
63  public function testThemeConfigFileExists($themeDir)
64  {
65  $this->assertFileExists($themeDir . '/theme.xml');
66  }
67 
71  public function themeConfigFileExistsDataProvider()
72  {
73  $result = [];
76  ->get(\Magento\Framework\Component\ComponentRegistrar::class);
77  foreach ($componentRegistrar->getPaths(ComponentRegistrar::THEME) as $themeDir) {
78  $result[substr($themeDir, strlen(BP))] = [$themeDir];
79  }
80  return $result;
81  }
82 
87  public function testThemeConfigFileSchema($file)
88  {
89  $domConfig = new \Magento\Framework\Config\Dom(file_get_contents($file), $this->validationStateMock);
90  $errors = [];
91  $result = $domConfig->validate('urn:magento:framework:Config/etc/theme.xsd', $errors);
92  $this->assertTrue($result, "Invalid XML-file: {$file}\n" . join("\n", $errors));
93  }
94 
101  public function testThemeConfigFileHasSingleTheme($file)
102  {
104  $configXml = simplexml_load_file($file);
105  $actualThemes = $configXml->xpath('/theme');
106  $this->assertCount(1, $actualThemes, 'Single theme declaration is expected.');
107  }
108 
112  public function themeConfigFileDataProvider()
113  {
114  $result = [];
117  ->get(\Magento\Framework\Component\DirSearch::class);
118  $files = $componentDirSearch->collectFiles(ComponentRegistrar::THEME, 'theme.xml');
119  foreach ($files as $file) {
120  $result[substr($file, strlen(BP))] = [$file];
121  }
122  return $result;
123  }
124 }
$componentRegistrar
Definition: bootstrap.php:23
const BP
Definition: autoload.php:14
foreach($appDirs as $dir) $files
$errors
Definition: overview.phtml:9