181 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
namespace Magento\Backend\Model;
 | 
						|
 | 
						|
/**
 | 
						|
 * Test class for \Magento\Backend\Model\Auth.
 | 
						|
 *
 | 
						|
 * @magentoAppArea adminhtml
 | 
						|
 */
 | 
						|
class MenuTest extends \PHPUnit\Framework\TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var \Magento\Backend\Model\Menu
 | 
						|
     */
 | 
						|
    private $model;
 | 
						|
 | 
						|
    /** @var \Magento\Framework\ObjectManagerInterface */
 | 
						|
    private $objectManager;
 | 
						|
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        parent::setUp();
 | 
						|
        \Magento\TestFramework\Helper\Bootstrap::getInstance()
 | 
						|
            ->loadArea(\Magento\Backend\App\Area\FrontNameResolver::AREA_CODE);
 | 
						|
        $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
 | 
						|
        $this->model = $this->objectManager->create(\Magento\Backend\Model\Auth::class);
 | 
						|
        $this->objectManager->get(\Magento\Framework\Config\ScopeInterface::class)
 | 
						|
            ->setCurrentScope(\Magento\Backend\App\Area\FrontNameResolver::AREA_CODE);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testMenuItemManipulation()
 | 
						|
    {
 | 
						|
        /* @var $menu \Magento\Backend\Model\Menu */
 | 
						|
        $menu = $this->objectManager->create(\Magento\Backend\Model\Menu\Config::class)->getMenu();
 | 
						|
        /* @var $itemFactory \Magento\Backend\Model\Menu\Item\Factory */
 | 
						|
        $itemFactory = $this->objectManager->create(\Magento\Backend\Model\Menu\Item\Factory::class);
 | 
						|
 | 
						|
        // Add new item in top level
 | 
						|
        $menu->add(
 | 
						|
            $itemFactory->create(
 | 
						|
                [
 | 
						|
                    'id' => 'Magento_Backend::system2',
 | 
						|
                    'title' => 'Extended System',
 | 
						|
                    'module' => 'Magento_Backend',
 | 
						|
                    'resource' => 'Magento_Backend::system2',
 | 
						|
                ]
 | 
						|
            )
 | 
						|
        );
 | 
						|
 | 
						|
        // Add submenu
 | 
						|
        $menu->add(
 | 
						|
            $itemFactory->create(
 | 
						|
                [
 | 
						|
                    'id' => 'Magento_Backend::system2_acl',
 | 
						|
                    'title' => 'Acl',
 | 
						|
                    'module' => 'Magento_Backend',
 | 
						|
                    'action' => 'admin/backend/acl/index',
 | 
						|
                    'resource' => 'Magento_Backend::system2_acl',
 | 
						|
                ]
 | 
						|
            ),
 | 
						|
            'Magento_Backend::system2'
 | 
						|
        );
 | 
						|
 | 
						|
        // Modify existing menu item
 | 
						|
        $menu->get('Magento_Backend::system2')->setTitle('Base system')->setAction('admin/backend/system/base');
 | 
						|
        // remove dependency from config
 | 
						|
 | 
						|
        // Change sort order
 | 
						|
        $menu->reorder('Magento_Backend::system', 40);
 | 
						|
 | 
						|
        // Remove menu item
 | 
						|
        $menu->remove('Magento_Backend::catalog_attribute');
 | 
						|
 | 
						|
        // Move menu item
 | 
						|
        $menu->move('Magento_Catalog::catalog_products', 'Magento_Backend::system2');
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     */
 | 
						|
    public function testSerialize()
 | 
						|
    {
 | 
						|
        /** @var Menu $menu */
 | 
						|
        $menu = $this->objectManager->get(\Magento\Backend\Model\MenuFactory::class)->create();
 | 
						|
        /* @var \Magento\Backend\Model\Menu\Item\Factory $itemFactory */
 | 
						|
        $itemFactory = $this->objectManager->create(\Magento\Backend\Model\Menu\Item\Factory::class);
 | 
						|
 | 
						|
        // Add new item in top level
 | 
						|
        $menu->add(
 | 
						|
            $itemFactory->create(
 | 
						|
                [
 | 
						|
                    'id' => 'Magento_Backend::system3',
 | 
						|
                    'title' => 'Extended System',
 | 
						|
                    'module' => 'Magento_Backend',
 | 
						|
                    'resource' => 'Magento_Backend::system3',
 | 
						|
                    'dependsOnConfig' => 'dev/test/system',
 | 
						|
                ]
 | 
						|
            )
 | 
						|
        );
 | 
						|
 | 
						|
        // Add submenu
 | 
						|
        $menu->add(
 | 
						|
            $itemFactory->create(
 | 
						|
                [
 | 
						|
                    'id' => 'Magento_Backend::system3_acl',
 | 
						|
                    'title' => 'Acl',
 | 
						|
                    'module' => 'Magento_Backend',
 | 
						|
                    'action' => 'admin/backend/acl/index',
 | 
						|
                    'resource' => 'Magento_Backend::system3_acl',
 | 
						|
                ]
 | 
						|
            ),
 | 
						|
            'Magento_Backend::system3'
 | 
						|
        );
 | 
						|
        $serializedString = $menu->serialize();
 | 
						|
        $expected = '[{"parent_id":null,"module":"Magento_Backend","sort_index":null,'
 | 
						|
            . '"dependsOnConfig":"dev\/test\/system",'
 | 
						|
            . '"id":"Magento_Backend::system3","resource":"Magento_Backend::system3","path":"","action":null,'
 | 
						|
            . '"dependsOnModule":null,"toolTip":null,"title":"Extended System",'
 | 
						|
            . '"target":null,"sub_menu":[{"parent_id":null,"module":"Magento_Backend","sort_index":null,'
 | 
						|
            . '"dependsOnConfig":null,"id":"Magento_Backend::system3_acl","resource":"Magento_Backend::system3_acl",'
 | 
						|
            . '"path":"","action":"admin\/backend\/acl\/index","dependsOnModule":null,"toolTip":null,"title":"Acl",'
 | 
						|
            . '"target":null,"sub_menu":null}]}]';
 | 
						|
        $this->assertEquals($expected, $serializedString);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     */
 | 
						|
    public function testUnserialize()
 | 
						|
    {
 | 
						|
        $serializedMenu = '[{"parent_id":null,"module":"Magento_Backend","sort_index":null,'
 | 
						|
            . '"dependsOnConfig":"dev\/test","id":"Magento_Backend::system3","resource":"Magento_Backend::system3",'
 | 
						|
            . '"path":"","action":null,"dependsOnModule":null,"toolTip":null,"title":"Extended System",'
 | 
						|
            . '"target":null,"sub_menu":[{"parent_id":null,"module":"Magento_Backend","sort_index":null,'
 | 
						|
            . '"dependsOnConfig":null,"id":"Magento_Backend::system3_acl","resource":"Magento_Backend::system3_acl",'
 | 
						|
            . '"path":"","action":"admin\/backend\/acl\/index","dependsOnModule":null,"toolTip":null,"title":"Acl",'
 | 
						|
            . '"target":null,"sub_menu":null}]}]';
 | 
						|
        /** @var Menu $menu */
 | 
						|
        $menu = $this->objectManager->get(\Magento\Backend\Model\MenuFactory::class)->create();
 | 
						|
        $menu->unserialize($serializedMenu);
 | 
						|
        $expected = [
 | 
						|
            [
 | 
						|
                'parent_id' => null,
 | 
						|
                'module' => 'Magento_Backend',
 | 
						|
                'sort_index' => null,
 | 
						|
                'dependsOnConfig' => 'dev/test',
 | 
						|
                'id' => 'Magento_Backend::system3',
 | 
						|
                'resource' => 'Magento_Backend::system3',
 | 
						|
                'path' => '',
 | 
						|
                'action' => null,
 | 
						|
                'dependsOnModule' => null,
 | 
						|
                'toolTip' => null,
 | 
						|
                'title' => 'Extended System',
 | 
						|
                'target' => null,
 | 
						|
                'sub_menu' =>
 | 
						|
                    [
 | 
						|
                        [
 | 
						|
                            'parent_id' => null,
 | 
						|
                            'module' => 'Magento_Backend',
 | 
						|
                            'sort_index' => null,
 | 
						|
                            'dependsOnConfig' => null,
 | 
						|
                            'id' => 'Magento_Backend::system3_acl',
 | 
						|
                            'resource' => 'Magento_Backend::system3_acl',
 | 
						|
                            'path' => '',
 | 
						|
                            'action' => 'admin/backend/acl/index',
 | 
						|
                            'dependsOnModule' => null,
 | 
						|
                            'toolTip' => null,
 | 
						|
                            'title' => 'Acl',
 | 
						|
                            'sub_menu' => null,
 | 
						|
                            'target' => null
 | 
						|
                        ],
 | 
						|
                    ],
 | 
						|
            ],
 | 
						|
        ];
 | 
						|
        $this->assertEquals($expected, $menu->toArray());
 | 
						|
    }
 | 
						|
}
 |