123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\View\Test\Unit\Layout;
- use \Magento\Framework\View\Layout\ScheduledStructure;
- /**
- * Test class for \Magento\Framework\View\Layout\ScheduledStructure
- */
- class ScheduledStructureTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var ScheduledStructure
- */
- protected $model;
- /**
- * @var array
- */
- protected $scheduledData = [];
- /**
- * @return void
- */
- protected function setUp()
- {
- $this->scheduledData = [
- 'scheduledStructure' => [
- 'element1' => ['data', 'of', 'element', '1'],
- 'element2' => ['data', 'of', 'element', '2'],
- 'element3' => ['data', 'of', 'element', '3'],
- 'element4' => ['data', 'of', 'element', '4'],
- 'element5' => ['data', 'of', 'element', '5'],
- ],
- 'scheduledElements' => [
- 'element1' => ['data', 'of', 'element', '1'],
- 'element2' => ['data', 'of', 'element', '2'],
- 'element3' => ['data', 'of', 'element', '3'],
- 'element4' => ['data', 'of', 'element', '4'],
- 'element5' => ['data', 'of', 'element', '5'],
- 'element9' => ['data', 'of', 'element', '9'],
- ],
- 'scheduledMoves' => [
- 'element1' => ['data', 'of', 'element', 'to', 'move', '1'],
- 'element4' => ['data', 'of', 'element', 'to', 'move', '4'],
- 'element6' => ['data', 'of', 'element', 'to', 'move', '6'],
- ],
- 'scheduledRemoves' => [
- 'element2' => ['data', 'of', 'element', 'to', 'remove', '2'],
- 'element3' => ['data', 'of', 'element', 'to', 'remove', '3'],
- 'element6' => ['data', 'of', 'element', 'to', 'remove', '6'],
- 'element7' => ['data', 'of', 'element', 'to', 'remove', '7'],
- ],
- 'scheduledPaths' => [
- 'path1' => 'path 1',
- 'path2' => 'path 2',
- 'path3' => 'path 3',
- 'path4' => 'path 4',
- ],
- ];
- $helperObjectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
- $this->model = $helperObjectManager->getObject(
- \Magento\Framework\View\Layout\ScheduledStructure::class,
- ['data' => $this->scheduledData]
- );
- }
- /**
- * @return void
- */
- public function testGetListToMove()
- {
- /**
- * Only elements that are present in elements list and specified in list to move can be moved
- */
- $expected = ['element1', 'element4'];
- $this->assertEquals($expected, $this->model->getListToMove());
- }
- /**
- * @return void
- */
- public function testGetListToRemove()
- {
- /**
- * Only elements that are present in elements list and specified in list to remove can be removed
- */
- $expected = ['element2', 'element3'];
- $this->assertEquals($expected, $this->model->getListToRemove());
- }
- /**
- * @return void
- */
- public function testGetElements()
- {
- $this->assertEquals($this->scheduledData['scheduledElements'], $this->model->getElements());
- }
- /**
- * @return void
- */
- public function testGetElement()
- {
- $expected = $this->scheduledData['scheduledElements']['element2'];
- $this->assertEquals($expected, $this->model->getElement('element2'));
- $default = ['some', 'default', 'value'];
- $this->assertEquals($default, $this->model->getElement('not_existing_element', $default));
- }
- /**
- * @return void
- */
- public function testIsElementsEmpty()
- {
- $this->assertFalse($this->model->isElementsEmpty());
- $this->model->flushScheduledStructure();
- $this->assertTrue($this->model->isElementsEmpty());
- }
- /**
- * @return void
- */
- public function testSetElement()
- {
- $data = ['some', 'new', 'data'];
- /** Test add new element */
- $this->assertFalse($this->model->hasElement('new_element'));
- $this->model->setElement('new_element', $data);
- $this->assertEquals($data, $this->model->getElement('new_element'));
- /** Test override existing element */
- $this->assertTrue($this->model->hasElement('element1'));
- $this->model->setElement('element1', $data);
- $this->assertEquals($data, $this->model->getElement('element1'));
- }
- /**
- * @return void
- */
- public function testHasElement()
- {
- $this->assertFalse($this->model->hasElement('not_existing_element'));
- $this->assertTrue($this->model->hasElement('element1'));
- }
- /**
- * @return void
- */
- public function testUnsetElement()
- {
- $this->assertTrue($this->model->hasElement('element1'));
- $this->model->unsetElement('element1');
- $this->assertFalse($this->model->hasElement('element1'));
- }
- /**
- * @return void
- */
- public function testGetElementToMove()
- {
- $this->assertEquals(
- $this->scheduledData['scheduledMoves']['element1'],
- $this->model->getElementToMove('element1')
- );
- $default = ['some', 'data'];
- $this->assertEquals($default, $this->model->getElementToMove('not_existing_element', $default));
- }
- /**
- * @return void
- */
- public function getIfconfigElement()
- {
- $this->assertEquals(
- $this->scheduledData['scheduledIfconfig']['element1'],
- $this->model->getIfconfigElement('element1')
- );
- $default = ['some', 'data'];
- $this->assertEquals($default, $this->model->getIfconfigElement('not_existing_element', $default));
- }
- /**
- * @return void
- */
- public function testSetElementToMove()
- {
- $data = ['some', 'new', 'data', 'element', 'to', 'move'];
- /** Test add new element */
- $this->assertFalse($this->model->hasElement('new_element'));
- $this->model->setElementToMove('new_element', $data);
- $this->assertEquals($data, $this->model->getElementToMove('new_element'));
- /** Test override existing element */
- $this->assertNotEquals($data, $this->model->getElementToMove('element1'));
- $this->model->setElementToMove('element1', $data);
- $this->assertEquals($data, $this->model->getElementToMove('element1'));
- }
- /**
- * @return void
- */
- public function testUnsetElementFromListToRemove()
- {
- $this->assertContains('element2', $this->model->getListToRemove());
- $this->model->unsetElementFromListToRemove('element2');
- $this->assertNotContains('element2', $this->model->getListToRemove());
- }
- /**
- * @return void
- */
- public function testSetElementToRemoveList()
- {
- $this->assertNotContains('element1', $this->model->getListToRemove());
- $this->model->setElementToRemoveList('element1');
- $this->assertContains('element1', $this->model->getListToRemove());
- }
- /**
- * @return void
- */
- public function testGetStructure()
- {
- $this->assertEquals($this->scheduledData['scheduledStructure'], $this->model->getStructure());
- }
- /**
- * @return void
- */
- public function testGetStructureElement()
- {
- $expected = $this->scheduledData['scheduledStructure']['element2'];
- $this->assertEquals($expected, $this->model->getStructureElement('element2'));
- $default = ['some', 'default', 'value'];
- $this->assertEquals($default, $this->model->getStructureElement('not_existing_element', $default));
- }
- /**
- * @return void
- */
- public function testIsStructureEmpty()
- {
- $this->assertFalse($this->model->isStructureEmpty());
- $this->model->flushScheduledStructure();
- $this->assertTrue($this->model->isStructureEmpty());
- }
- /**
- * @return void
- */
- public function testHasStructureElement()
- {
- $this->assertTrue($this->model->hasStructureElement('element1'));
- $this->assertFalse($this->model->hasStructureElement('not_existing_element'));
- }
- /**
- * @return void
- */
- public function testSetStructureElement()
- {
- $data = ['some', 'new', 'data', 'structure', 'element'];
- /** Test add new structure element */
- $this->assertFalse($this->model->hasStructureElement('new_element'));
- $this->model->setStructureElement('new_element', $data);
- $this->assertEquals($data, $this->model->getStructureElement('new_element'));
- /** Test override existing structure element */
- $this->assertTrue($this->model->hasStructureElement('element1'));
- $this->model->setStructureElement('element1', $data);
- $this->assertEquals($data, $this->model->getStructureElement('element1'));
- }
- /**
- * @return void
- */
- public function testUnsetStructureElement()
- {
- $this->assertTrue($this->model->hasStructureElement('element1'));
- $this->model->unsetStructureElement('element1');
- $this->assertFalse($this->model->hasStructureElement('element1'));
- }
- /**
- * @return void
- */
- public function testGetPaths()
- {
- $this->assertEquals($this->scheduledData['scheduledPaths'], $this->model->getPaths());
- }
- /**
- * @return void
- */
- public function testGetPath()
- {
- $this->assertEquals($this->scheduledData['scheduledPaths']['path1'], $this->model->getPath('path1'));
- $default = ['some', 'data'];
- $this->assertEquals($default, $this->model->getPath('not_existing_element', $default));
- }
- /**
- * @return void
- */
- public function testHasPath()
- {
- $this->assertTrue($this->model->hasPath('path1'));
- $this->assertFalse($this->model->hasPath('not_existing_element'));
- }
- /**
- * @return void
- */
- public function testSetPathElement()
- {
- $data = ['some', 'new', 'data', 'path'];
- /** Test add new structure element */
- $this->assertFalse($this->model->hasPath('new_element'));
- $this->model->setPathElement('new_element', $data);
- $this->assertEquals($data, $this->model->getPath('new_element'));
- /** Test override existing structure element */
- $this->assertTrue($this->model->hasPath('path1'));
- $this->model->setPathElement('path1', $data);
- $this->assertEquals($data, $this->model->getPath('path1'));
- }
- /**
- * @return void
- */
- public function testUnsetPathElement()
- {
- $this->assertTrue($this->model->hasPath('path1'));
- $this->model->unsetPathElement('path1');
- $this->assertFalse($this->model->hasPath('path1'));
- }
- /**
- * @return void
- */
- public function testFlushPaths()
- {
- $this->assertNotEmpty($this->model->getPaths());
- $this->model->flushPaths();
- $this->assertEmpty($this->model->getPaths());
- }
- /**
- * @return void
- */
- public function testFlushScheduledStructure()
- {
- $this->assertNotEmpty($this->model->getPaths());
- $this->assertNotEmpty($this->model->getElements());
- $this->assertNotEmpty($this->model->getStructure());
- $this->model->flushScheduledStructure();
- $this->assertEmpty($this->model->getPaths());
- $this->assertEmpty($this->model->getElements());
- $this->assertEmpty($this->model->getStructure());
- }
- /**
- * @return void
- */
- public function testSetElementToBrokenParentList()
- {
- $element = 'element9';
- $expectedToRemove = ['element2', 'element3'];
- $expectedToRemoveWithBroken = ['element2', 'element3', 'element9'];
- $this->assertEquals($expectedToRemove, $this->model->getListToRemove());
- $this->model->setElementToBrokenParentList($element);
- $this->assertEquals($expectedToRemoveWithBroken, $this->model->getListToRemove());
- $this->model->unsetElementFromBrokenParentList($element);
- $this->assertEquals($expectedToRemove, $this->model->getListToRemove());
- }
- /**
- * @return void
- */
- public function testSetElementToSortList()
- {
- list($parentName, $name, $sibling, $isAfter, $element) = $this->getDataSort();
- $elementsList = [$name => $element];
- $this->assertArrayNotHasKey($name, $this->model->getListToSort());
- $this->model->setElementToSortList($parentName, $name, $sibling, $isAfter);
- $this->assertEquals($elementsList, $this->model->getListToSort());
- }
- /**
- * @return void
- */
- public function testGetElementToSortEmpty()
- {
- $this->assertEmpty($this->model->getElementToSort('test'));
- }
- /**
- * @return void
- */
- public function testGetElementToSort()
- {
- list($parentName, $name, $sibling, $isAfter, $element) = $this->getDataSort();
- $this->model->setElementToSortList($parentName, $name, $sibling, $isAfter);
- $this->assertEquals($element, $this->model->getElementToSort($name));
- }
- /**
- * @return void
- */
- public function testUnsetElementToSort()
- {
- list($parentName, $name, $sibling, $isAfter) = $this->getDataSort();
- $this->model->setElementToSortList($parentName, $name, $sibling, $isAfter);
- $this->assertArrayHasKey($name, $this->model->getListToSort());
- $this->model->unsetElementToSort($name);
- $this->assertArrayNotHasKey($name, $this->model->getListToSort());
- }
- /**
- * @return void
- */
- public function testIsListToSortEmpty()
- {
- list($parentName, $name, $sibling, $isAfter) = $this->getDataSort();
- $this->assertTrue($this->model->isListToSortEmpty());
- $this->model->setElementToSortList($parentName, $name, $sibling, $isAfter);
- $this->assertFalse($this->model->isListToSortEmpty());
- }
- /**
- * @return array
- */
- protected function getDataSort()
- {
- return [
- 'parent name',
- 'element name',
- 'sibling',
- false,
- [
- ScheduledStructure::ELEMENT_NAME => 'element name',
- ScheduledStructure::ELEMENT_PARENT_NAME => 'parent name',
- ScheduledStructure::ELEMENT_OFFSET_OR_SIBLING => 'sibling',
- ScheduledStructure::ELEMENT_IS_AFTER => false
- ]
- ];
- }
- }
|