Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ScheduledStructureTest.php
Go to the documentation of this file.
1 <?php
7 
8 use \Magento\Framework\View\Layout\ScheduledStructure;
9 
13 class ScheduledStructureTest extends \PHPUnit\Framework\TestCase
14 {
18  protected $model;
19 
23  protected $scheduledData = [];
24 
28  protected function setUp()
29  {
30  $this->scheduledData = [
31  'scheduledStructure' => [
32  'element1' => ['data', 'of', 'element', '1'],
33  'element2' => ['data', 'of', 'element', '2'],
34  'element3' => ['data', 'of', 'element', '3'],
35  'element4' => ['data', 'of', 'element', '4'],
36  'element5' => ['data', 'of', 'element', '5'],
37  ],
38  'scheduledElements' => [
39  'element1' => ['data', 'of', 'element', '1'],
40  'element2' => ['data', 'of', 'element', '2'],
41  'element3' => ['data', 'of', 'element', '3'],
42  'element4' => ['data', 'of', 'element', '4'],
43  'element5' => ['data', 'of', 'element', '5'],
44  'element9' => ['data', 'of', 'element', '9'],
45  ],
46  'scheduledMoves' => [
47  'element1' => ['data', 'of', 'element', 'to', 'move', '1'],
48  'element4' => ['data', 'of', 'element', 'to', 'move', '4'],
49  'element6' => ['data', 'of', 'element', 'to', 'move', '6'],
50  ],
51  'scheduledRemoves' => [
52  'element2' => ['data', 'of', 'element', 'to', 'remove', '2'],
53  'element3' => ['data', 'of', 'element', 'to', 'remove', '3'],
54  'element6' => ['data', 'of', 'element', 'to', 'remove', '6'],
55  'element7' => ['data', 'of', 'element', 'to', 'remove', '7'],
56  ],
57  'scheduledPaths' => [
58  'path1' => 'path 1',
59  'path2' => 'path 2',
60  'path3' => 'path 3',
61  'path4' => 'path 4',
62  ],
63  ];
64 
65  $helperObjectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
66  $this->model = $helperObjectManager->getObject(
67  \Magento\Framework\View\Layout\ScheduledStructure::class,
68  ['data' => $this->scheduledData]
69  );
70  }
71 
75  public function testGetListToMove()
76  {
80  $expected = ['element1', 'element4'];
81  $this->assertEquals($expected, $this->model->getListToMove());
82  }
83 
87  public function testGetListToRemove()
88  {
92  $expected = ['element2', 'element3'];
93  $this->assertEquals($expected, $this->model->getListToRemove());
94  }
95 
99  public function testGetElements()
100  {
101  $this->assertEquals($this->scheduledData['scheduledElements'], $this->model->getElements());
102  }
103 
107  public function testGetElement()
108  {
109  $expected = $this->scheduledData['scheduledElements']['element2'];
110  $this->assertEquals($expected, $this->model->getElement('element2'));
111 
112  $default = ['some', 'default', 'value'];
113  $this->assertEquals($default, $this->model->getElement('not_existing_element', $default));
114  }
115 
119  public function testIsElementsEmpty()
120  {
121  $this->assertFalse($this->model->isElementsEmpty());
122  $this->model->flushScheduledStructure();
123  $this->assertTrue($this->model->isElementsEmpty());
124  }
125 
129  public function testSetElement()
130  {
131  $data = ['some', 'new', 'data'];
132 
134  $this->assertFalse($this->model->hasElement('new_element'));
135  $this->model->setElement('new_element', $data);
136  $this->assertEquals($data, $this->model->getElement('new_element'));
137 
139  $this->assertTrue($this->model->hasElement('element1'));
140  $this->model->setElement('element1', $data);
141  $this->assertEquals($data, $this->model->getElement('element1'));
142  }
143 
147  public function testHasElement()
148  {
149  $this->assertFalse($this->model->hasElement('not_existing_element'));
150  $this->assertTrue($this->model->hasElement('element1'));
151  }
152 
156  public function testUnsetElement()
157  {
158  $this->assertTrue($this->model->hasElement('element1'));
159  $this->model->unsetElement('element1');
160  $this->assertFalse($this->model->hasElement('element1'));
161  }
162 
166  public function testGetElementToMove()
167  {
168  $this->assertEquals(
169  $this->scheduledData['scheduledMoves']['element1'],
170  $this->model->getElementToMove('element1')
171  );
172  $default = ['some', 'data'];
173  $this->assertEquals($default, $this->model->getElementToMove('not_existing_element', $default));
174  }
175 
179  public function getIfconfigElement()
180  {
181  $this->assertEquals(
182  $this->scheduledData['scheduledIfconfig']['element1'],
183  $this->model->getIfconfigElement('element1')
184  );
185  $default = ['some', 'data'];
186  $this->assertEquals($default, $this->model->getIfconfigElement('not_existing_element', $default));
187  }
188 
192  public function testSetElementToMove()
193  {
194  $data = ['some', 'new', 'data', 'element', 'to', 'move'];
195 
197  $this->assertFalse($this->model->hasElement('new_element'));
198  $this->model->setElementToMove('new_element', $data);
199  $this->assertEquals($data, $this->model->getElementToMove('new_element'));
200 
202  $this->assertNotEquals($data, $this->model->getElementToMove('element1'));
203  $this->model->setElementToMove('element1', $data);
204  $this->assertEquals($data, $this->model->getElementToMove('element1'));
205  }
206 
211  {
212  $this->assertContains('element2', $this->model->getListToRemove());
213  $this->model->unsetElementFromListToRemove('element2');
214  $this->assertNotContains('element2', $this->model->getListToRemove());
215  }
216 
220  public function testSetElementToRemoveList()
221  {
222  $this->assertNotContains('element1', $this->model->getListToRemove());
223  $this->model->setElementToRemoveList('element1');
224  $this->assertContains('element1', $this->model->getListToRemove());
225  }
226 
230  public function testGetStructure()
231  {
232  $this->assertEquals($this->scheduledData['scheduledStructure'], $this->model->getStructure());
233  }
234 
238  public function testGetStructureElement()
239  {
240  $expected = $this->scheduledData['scheduledStructure']['element2'];
241  $this->assertEquals($expected, $this->model->getStructureElement('element2'));
242 
243  $default = ['some', 'default', 'value'];
244  $this->assertEquals($default, $this->model->getStructureElement('not_existing_element', $default));
245  }
246 
250  public function testIsStructureEmpty()
251  {
252  $this->assertFalse($this->model->isStructureEmpty());
253  $this->model->flushScheduledStructure();
254  $this->assertTrue($this->model->isStructureEmpty());
255  }
256 
260  public function testHasStructureElement()
261  {
262  $this->assertTrue($this->model->hasStructureElement('element1'));
263  $this->assertFalse($this->model->hasStructureElement('not_existing_element'));
264  }
265 
269  public function testSetStructureElement()
270  {
271  $data = ['some', 'new', 'data', 'structure', 'element'];
272 
274  $this->assertFalse($this->model->hasStructureElement('new_element'));
275  $this->model->setStructureElement('new_element', $data);
276  $this->assertEquals($data, $this->model->getStructureElement('new_element'));
277 
279  $this->assertTrue($this->model->hasStructureElement('element1'));
280  $this->model->setStructureElement('element1', $data);
281  $this->assertEquals($data, $this->model->getStructureElement('element1'));
282  }
283 
287  public function testUnsetStructureElement()
288  {
289  $this->assertTrue($this->model->hasStructureElement('element1'));
290  $this->model->unsetStructureElement('element1');
291  $this->assertFalse($this->model->hasStructureElement('element1'));
292  }
293 
297  public function testGetPaths()
298  {
299  $this->assertEquals($this->scheduledData['scheduledPaths'], $this->model->getPaths());
300  }
301 
305  public function testGetPath()
306  {
307  $this->assertEquals($this->scheduledData['scheduledPaths']['path1'], $this->model->getPath('path1'));
308  $default = ['some', 'data'];
309  $this->assertEquals($default, $this->model->getPath('not_existing_element', $default));
310  }
311 
315  public function testHasPath()
316  {
317  $this->assertTrue($this->model->hasPath('path1'));
318  $this->assertFalse($this->model->hasPath('not_existing_element'));
319  }
320 
324  public function testSetPathElement()
325  {
326  $data = ['some', 'new', 'data', 'path'];
327 
329  $this->assertFalse($this->model->hasPath('new_element'));
330  $this->model->setPathElement('new_element', $data);
331  $this->assertEquals($data, $this->model->getPath('new_element'));
332 
334  $this->assertTrue($this->model->hasPath('path1'));
335  $this->model->setPathElement('path1', $data);
336  $this->assertEquals($data, $this->model->getPath('path1'));
337  }
338 
342  public function testUnsetPathElement()
343  {
344  $this->assertTrue($this->model->hasPath('path1'));
345  $this->model->unsetPathElement('path1');
346  $this->assertFalse($this->model->hasPath('path1'));
347  }
348 
352  public function testFlushPaths()
353  {
354  $this->assertNotEmpty($this->model->getPaths());
355  $this->model->flushPaths();
356  $this->assertEmpty($this->model->getPaths());
357  }
358 
362  public function testFlushScheduledStructure()
363  {
364  $this->assertNotEmpty($this->model->getPaths());
365  $this->assertNotEmpty($this->model->getElements());
366  $this->assertNotEmpty($this->model->getStructure());
367 
368  $this->model->flushScheduledStructure();
369 
370  $this->assertEmpty($this->model->getPaths());
371  $this->assertEmpty($this->model->getElements());
372  $this->assertEmpty($this->model->getStructure());
373  }
374 
379  {
380  $element = 'element9';
381  $expectedToRemove = ['element2', 'element3'];
382  $expectedToRemoveWithBroken = ['element2', 'element3', 'element9'];
383  $this->assertEquals($expectedToRemove, $this->model->getListToRemove());
384 
385  $this->model->setElementToBrokenParentList($element);
386  $this->assertEquals($expectedToRemoveWithBroken, $this->model->getListToRemove());
387 
388  $this->model->unsetElementFromBrokenParentList($element);
389  $this->assertEquals($expectedToRemove, $this->model->getListToRemove());
390  }
391 
395  public function testSetElementToSortList()
396  {
397  list($parentName, $name, $sibling, $isAfter, $element) = $this->getDataSort();
398  $elementsList = [$name => $element];
399  $this->assertArrayNotHasKey($name, $this->model->getListToSort());
400  $this->model->setElementToSortList($parentName, $name, $sibling, $isAfter);
401  $this->assertEquals($elementsList, $this->model->getListToSort());
402  }
403 
407  public function testGetElementToSortEmpty()
408  {
409  $this->assertEmpty($this->model->getElementToSort('test'));
410  }
411 
415  public function testGetElementToSort()
416  {
417  list($parentName, $name, $sibling, $isAfter, $element) = $this->getDataSort();
418  $this->model->setElementToSortList($parentName, $name, $sibling, $isAfter);
419  $this->assertEquals($element, $this->model->getElementToSort($name));
420  }
421 
425  public function testUnsetElementToSort()
426  {
427  list($parentName, $name, $sibling, $isAfter) = $this->getDataSort();
428  $this->model->setElementToSortList($parentName, $name, $sibling, $isAfter);
429  $this->assertArrayHasKey($name, $this->model->getListToSort());
430  $this->model->unsetElementToSort($name);
431  $this->assertArrayNotHasKey($name, $this->model->getListToSort());
432  }
433 
437  public function testIsListToSortEmpty()
438  {
439  list($parentName, $name, $sibling, $isAfter) = $this->getDataSort();
440  $this->assertTrue($this->model->isListToSortEmpty());
441  $this->model->setElementToSortList($parentName, $name, $sibling, $isAfter);
442  $this->assertFalse($this->model->isListToSortEmpty());
443  }
444 
448  protected function getDataSort()
449  {
450  return [
451  'parent name',
452  'element name',
453  'sibling',
454  false,
455  [
456  ScheduledStructure::ELEMENT_NAME => 'element name',
460  ]
461  ];
462  }
463 }
return false
Definition: gallery.phtml:36
if(!isset($_GET['name'])) $name
Definition: log.php:14
$element
Definition: element.phtml:12