Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ModuleDependencyTest.php
Go to the documentation of this file.
1 <?php
8 
9 class ModuleDependencyTest extends \PHPUnit\Framework\TestCase
10 {
14  private $_model;
15 
19  private $_fileSource;
20 
24  private $_moduleListMock;
25 
26  protected function setUp()
27  {
28  $this->_fileSource = $this->getMockForAbstractClass(\Magento\Framework\View\File\CollectorInterface::class);
29  $this->_moduleListMock = $this->createMock(\Magento\Framework\Module\ModuleListInterface::class);
30  $this->_moduleListMock->expects($this->any())
31  ->method('getNames')
32  ->will($this->returnValue(['Fixture_ModuleB', 'Fixture_ModuleA']));
33  $this->_model = new \Magento\Framework\View\File\Collector\Decorator\ModuleDependency(
34  $this->_fileSource,
35  $this->_moduleListMock
36  );
37  }
38 
45  public function testGetFiles(array $fixtureFiles, array $expectedFiles, $message)
46  {
47  $theme = $this->getMockForAbstractClass(\Magento\Framework\View\Design\ThemeInterface::class);
48  $this->_fileSource
49  ->expects($this->once())
50  ->method('getFiles')
51  ->with($theme, '*.xml')
52  ->will($this->returnValue($fixtureFiles));
53  $this->assertSame($expectedFiles, $this->_model->getFiles($theme, '*.xml'), $message);
54  }
55 
59  public function getFilesDataProvider()
60  {
61  $fileOne = new \Magento\Framework\View\File('b.xml', 'Fixture_ModuleB');
62  $fileTwo = new \Magento\Framework\View\File('a.xml', 'Fixture_ModuleA');
63  $fileThree = new \Magento\Framework\View\File('b.xml', 'Fixture_ModuleA');
64 
65  $unknownFileOne = new \Magento\Framework\View\File('b.xml', 'Unknown_ModuleA');
66  $unknownFileTwo = new \Magento\Framework\View\File('a.xml', 'Unknown_ModuleB');
67  return [
68  'same module' => [
69  [$fileThree, $fileTwo],
70  [$fileTwo, $fileThree],
71  'Files belonging to the same module are expected to be sorted by file names',
72  ],
73  'different modules' => [
74  [$fileTwo, $fileOne],
75  [$fileOne, $fileTwo],
76  'Files belonging to different modules are expected to be sorted by module dependencies',
77  ],
78  'different unknown modules' => [
79  [$unknownFileTwo, $unknownFileOne],
80  [$unknownFileOne, $unknownFileTwo],
81  'Files belonging to different unknown modules are expected to be sorted by module names',
82  ],
83  'known and unknown modules' => [
84  [$fileTwo, $unknownFileOne],
85  [$unknownFileOne, $fileTwo],
86  'Files belonging to unknown modules are expected to go before ones of known modules',
87  ],
88  ];
89  }
90 }
$message
$theme