/** * @return void * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ protected function setUp() { $this->registryMock = $this->getMockBuilder('Magento\\Framework\\Registry')->disableOriginalConstructor()->setMethods(['registry', 'register'])->getMock(); $this->requestMock = $this->getMockBuilder('Magento\\Framework\\App\\Request\\Http')->disableOriginalConstructor()->getMock(); $this->viewMock = $this->getMockBuilder('Magento\\Framework\\App\\View')->disableOriginalConstructor()->setMethods(['loadLayout', 'getLayout', 'getPage', 'renderLayout'])->getMock(); $this->layoutMock = $this->getMockBuilder('Magento\\Framework\\View\\Layout')->disableOriginalConstructor()->setMethods(['getBlock', 'createBlock', 'setChild'])->getMock(); $this->menuBlockMock = $this->getMockBuilder('\\Magento\\Backend\\Block\\Menu')->disableOriginalConstructor()->setMethods(['setActive', 'getMenuModel', 'getParentItems'])->getMock(); $this->breadcrumbsBlockMock = $this->getMockBuilder('\\Magento\\Backend\\Block\\Widget\\Breadcrumbs')->disableOriginalConstructor()->setMethods(['addLink'])->getMock(); $this->editBlockMock = $this->getMockBuilder('\\Magento\\Backend\\Block\\Widget\\Breadcrumbs')->disableOriginalConstructor()->setMethods(['setEditMode'])->getMock(); $this->resultPageMock = $this->getMockBuilder('Magento\\Framework\\View\\Result\\Page')->disableOriginalConstructor()->setMethods(['setActiveMenu', 'getConfig', 'addBreadcrumb'])->getMock(); $this->pageConfigMock = $this->getMockBuilder('Magento\\Framework\\View\\Page\\Config')->disableOriginalConstructor()->getMock(); $this->pageTitleMock = $this->getMockBuilder('Magento\\Framework\\View\\Page\\Title')->disableOriginalConstructor()->getMock(); $this->viewMock->expects($this->atLeastOnce())->method('getLayout')->willReturn($this->layoutMock); $this->layoutMock->expects($this->any())->method('getBlock')->willReturnMap([['menu', $this->menuBlockMock], ['breadcrumbs', $this->breadcrumbsBlockMock], ['edit', $this->editBlockMock]]); $this->menuBlockMock->expects($this->any())->method('getMenuModel')->will($this->returnSelf()); $this->menuBlockMock->expects($this->any())->method('getParentItems')->will($this->returnValue([])); $this->viewMock->expects($this->any())->method('getPage')->willReturn($this->resultPageMock); $this->resultPageMock->expects($this->any())->method('getConfig')->willReturn($this->pageConfigMock); $this->pageConfigMock->expects($this->any())->method('getTitle')->willReturn($this->pageTitleMock); $this->layoutMock->expects($this->once())->method('createBlock')->with('Magento\\Email\\Block\\Adminhtml\\Template\\Edit', 'template_edit', [])->willReturn($this->editBlockMock); $this->editBlockMock->expects($this->once())->method('setEditMode')->willReturnSelf(); $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); $templateMock = $this->getMockBuilder('Magento\\Email\\Model\\Template')->disableOriginalConstructor()->getMock(); $templateMock->expects($this->once())->method('getId')->willReturn(1); $templateMock->expects($this->any())->method('getTemplateCode')->willReturn('My Template'); $objectManagerMock = $this->getMockBuilder('Magento\\Framework\\App\\ObjectManager')->disableOriginalConstructor()->getMock(); $objectManagerMock->expects($this->once())->method('create')->with('Magento\\Email\\Model\\BackendTemplate')->willReturn($templateMock); $this->context = $objectManager->getObject('Magento\\Backend\\App\\Action\\Context', ['request' => $this->requestMock, 'objectManager' => $objectManagerMock, 'view' => $this->viewMock]); $this->editController = $objectManager->getObject('Magento\\Email\\Controller\\Adminhtml\\Email\\Template\\Edit', ['context' => $this->context, 'coreRegistry' => $this->registryMock]); }
/** * Verify that Admin Navigation Menu elements have correct titles & are located on correct levels */ public function testRenderNavigation() { $menuConfig = $this->prepareMenuConfig(); $menuHtml = $this->blockMenu->renderNavigation($menuConfig->getMenu()); $menu = new \SimpleXMLElement($menuHtml); $item = $menu->xpath('/ul/li/a/span')[0]; $this->assertEquals('System', (string) $item, '"System" item is absent or located on wrong menu level.'); $item = $menu->xpath('/ul//ul/li/strong/span')[0]; $this->assertEquals('Report', (string) $item, '"Report" item is absent or located on wrong menu level.'); $liTitles = ['Private Sales', 'Invite', 'Invited Customers']; foreach ($menu->xpath('/ul//ul//ul/li/a/span') as $sortOrder => $item) { $this->assertEquals($liTitles[$sortOrder], (string) $item, '"' . $liTitles[$sortOrder] . '" item is absent or located on wrong menu level.'); } }
/** * @covers \Magento\Email\Controller\Adminhtml\Email\Template\Index::execute */ public function testExecute() { $this->prepareExecute(); $this->viewMock->expects($this->atLeastOnce())->method('getLayout')->willReturn($this->layoutMock); $this->layoutMock->expects($this->at(0))->method('getBlock')->with('menu')->will($this->returnValue($this->menuBlockMock)); $this->menuBlockMock->expects($this->any())->method('getMenuModel')->will($this->returnSelf()); $this->menuBlockMock->expects($this->any())->method('getParentItems')->will($this->returnValue([])); $this->viewMock->expects($this->once())->method('getPage')->willReturn($this->resultPageMock); $this->resultPageMock->expects($this->once())->method('getConfig')->willReturn($this->pageConfigMock); $this->pageConfigMock->expects($this->once())->method('getTitle')->willReturn($this->pageTitleMock); $this->pageTitleMock->expects($this->once())->method('prepend')->with('Email Templates'); $this->layoutMock->expects($this->at(1))->method('getBlock')->with('breadcrumbs')->will($this->returnValue($this->breadcrumbsBlockMock)); $this->breadcrumbsBlockMock->expects($this->any())->method('addLink')->willReturnSelf(); $this->assertNull($this->indexController->execute()); }
/** * Get menu config model * * @return \Magento\Backend\Model\Menu */ public function getMenuModel() { return $this->_blockMenu->getMenuModel(); }
public function testRenderNavigation() { $menuConfig = $this->prepareMenuConfig(); $this->assertStringEqualsFile(__DIR__ . '/_files/menu/expected.txt', $this->blockMenu->renderNavigation($menuConfig->getMenu())); }