Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
FileResolverByModuleTest.php
Go to the documentation of this file.
1 <?php
7 
11 
12 class FileResolverByModuleTest extends \PHPUnit\Framework\TestCase
13 {
17  private $model;
18 
22  private $objectManagerHelper;
23 
27  private $readerMock;
28 
32  private $filesystemMock;
33 
37  private $fileIteratorFactoryMock;
38 
42  private $componentRegistrarMock;
43 
47  private $fileDriver;
48 
49  protected function setUp()
50  {
51  $this->readerMock = $this->getMockBuilder(\Magento\Framework\Module\Dir\Reader::class)
52  ->disableOriginalConstructor()
53  ->getMock();
54  $this->filesystemMock = $this->getMockBuilder(\Magento\Framework\Filesystem::class)
55  ->disableOriginalConstructor()
56  ->getMock();
57  $this->fileIteratorFactoryMock = $this->getMockBuilder(\Magento\Framework\Config\FileIteratorFactory::class)
58  ->disableOriginalConstructor()
59  ->getMock();
60  $this->componentRegistrarMock = $this->getMockBuilder(\Magento\Framework\Component\ComponentRegistrar::class)
61  ->disableOriginalConstructor()
62  ->getMock();
63  $this->fileDriver = $this->getMockBuilder(\Magento\Framework\Filesystem\Driver\File::class)
64  ->disableOriginalConstructor()
65  ->getMock();
66  $this->objectManagerHelper = new ObjectManagerHelper($this);
67  $this->model = $this->objectManagerHelper->getObject(
68  \Magento\Framework\Config\FileResolverByModule::class,
69  [
70  'moduleReader' => $this->readerMock,
71  'filesystem' => $this->filesystemMock,
72  'iteratorFactory' => $this->fileIteratorFactoryMock,
73  'componentRegistrar' => $this->componentRegistrarMock,
74  'driver' => $this->fileDriver
75  ]
76  );
77  }
78 
79  public function testGet()
80  {
81  $iterator = $this->getMockBuilder(FileIterator::class)
82  ->disableOriginalConstructor()
83  ->getMock();
84  $iterator->expects(self::once())
85  ->method('toArray')
86  ->willReturn([
87  'some_path' => '<xml>Some Content</xml>'
88  ]);
89  $primaryIterator = $this->getMockBuilder(FileIterator::class)
90  ->disableOriginalConstructor()
91  ->getMock();
92  $primaryIterator->expects(self::once())
93  ->method('toArray')
94  ->willReturn([
95  '/www/app/etc/db_schema.xml' => '<xml>Primary Content</xml>'
96  ]);
97  $directoryMock = $this->getMockBuilder(\Magento\Framework\Filesystem\Directory\ReadInterface::class)
98  ->disableOriginalConstructor()
99  ->getMock();
100  $directoryMock->expects(self::once())
101  ->method('search')
102  ->with('{db_schema.xml,*/db_schema.xml}')
103  ->willReturn(['app/etc/db_schema.xml']);
104  $directoryMock->expects(self::once())
105  ->method('getAbsolutePath')
106  ->willReturn('/www/app/etc/db_schema.xml');
107  $this->readerMock->expects(self::once())
108  ->method('getConfigurationFiles')
109  ->willReturn($iterator);
110  $this->fileIteratorFactoryMock->expects(self::once())
111  ->method('create')
112  ->with(['/www/app/etc/db_schema.xml'])
113  ->willReturn($primaryIterator);
114  $this->fileDriver->expects(self::once())
115  ->method('isFile')
116  ->with('/www/app/etc/db_schema.xml')
117  ->willReturn(true);
118  $this->filesystemMock->expects(self::once())
119  ->method('getDirectoryRead')
120  ->willReturn($directoryMock);
121  self::assertEquals(
122  $this->model->get('db_schema.xml', 'all'),
123  [
124  'some_path' => '<xml>Some Content</xml>',
125  '/www/app/etc/db_schema.xml' => '<xml>Primary Content</xml>'
126  ]
127  );
128  }
129 
133  public function testGetWithException()
134  {
135  $iterator = $this->getMockBuilder(FileIterator::class)
136  ->disableOriginalConstructor()
137  ->getMock();
138  $iterator->expects(self::once())
139  ->method('toArray')
140  ->willReturn([
141  'some_path' => '<xml>Some Content</xml>'
142  ]);
143  $primaryIterator = $this->getMockBuilder(FileIterator::class)
144  ->disableOriginalConstructor()
145  ->getMock();
146  $primaryIterator->expects(self::once())
147  ->method('toArray')
148  ->willReturn([
149  '/www/app/etc/db_schema.xml' => '<xml>Primary Content</xml>'
150  ]);
151  $directoryMock = $this->getMockBuilder(\Magento\Framework\Filesystem\Directory\ReadInterface::class)
152  ->disableOriginalConstructor()
153  ->getMock();
154  $directoryMock->expects(self::once())
155  ->method('search')
156  ->with('{db_schema.xml,*/db_schema.xml}')
157  ->willReturn(['app/etc/db_schema.xml']);
158  $directoryMock->expects(self::once())
159  ->method('getAbsolutePath')
160  ->willReturn('/www/app/etc/db_schema.xml');
161  $this->readerMock->expects(self::once())
162  ->method('getConfigurationFiles')
163  ->willReturn($iterator);
164  $this->fileIteratorFactoryMock->expects(self::once())
165  ->method('create')
166  ->with(['/www/app/etc/db_schema.xml'])
167  ->willReturn($primaryIterator);
168  $this->fileDriver->expects(self::once())
169  ->method('isFile')
170  ->with('/www/app/etc/db_schema.xml')
171  ->willReturn(true);
172  $this->filesystemMock->expects(self::once())
173  ->method('getDirectoryRead')
174  ->willReturn($directoryMock);
175  $this->model->get('db_schema.xml', 'all');
176  }
177 
178  public function testGetOneModule()
179  {
180  $iterator = $this->getMockBuilder(FileIterator::class)
181  ->disableOriginalConstructor()
182  ->getMock();
183  $iterator->expects(self::once())
184  ->method('toArray')
185  ->willReturn([
186  'some_path/etc/db_schema.xml' => '<xml>Some Content</xml>'
187  ]);
188  $primaryIterator = $this->getMockBuilder(FileIterator::class)
189  ->disableOriginalConstructor()
190  ->getMock();
191  $primaryIterator->expects(self::once())
192  ->method('toArray')
193  ->willReturn([
194  '/www/app/etc/db_schema.xml' => '<xml>Primary Content</xml>'
195  ]);
196  $directoryMock = $this->getMockBuilder(\Magento\Framework\Filesystem\Directory\ReadInterface::class)
197  ->disableOriginalConstructor()
198  ->getMock();
199  $directoryMock->expects(self::once())
200  ->method('search')
201  ->with('{db_schema.xml,*/db_schema.xml}')
202  ->willReturn(['app/etc/db_schema.xml']);
203  $directoryMock->expects(self::once())
204  ->method('getAbsolutePath')
205  ->willReturn('/www/app/etc/db_schema.xml');
206  $this->readerMock->expects(self::once())
207  ->method('getConfigurationFiles')
208  ->willReturn($iterator);
209  $this->fileIteratorFactoryMock->expects(self::once())
210  ->method('create')
211  ->with(['/www/app/etc/db_schema.xml'])
212  ->willReturn($primaryIterator);
213  $this->fileDriver->expects(self::once())
214  ->method('isFile')
215  ->with('/www/app/etc/db_schema.xml')
216  ->willReturn(true);
217  $this->filesystemMock->expects(self::once())
218  ->method('getDirectoryRead')
219  ->willReturn($directoryMock);
220  $this->componentRegistrarMock->expects(self::once())
221  ->method('getPath')
222  ->with('module', 'Magento_Some')
223  ->willReturn('some_path');
224  self::assertEquals(
225  [
226  'some_path/etc/db_schema.xml' => '<xml>Some Content</xml>',
227  '/www/app/etc/db_schema.xml' => '<xml>Primary Content</xml>'
228  ],
229  $this->model->get('db_schema.xml', 'Magento_Some')
230  );
231  }
232 }