adminLogin(1); $smarty = createSmarty(true, true); $smarty->setForceCompile(true); $template = $smarty->fetch($this->getTemplatePath('ifrightTest.tpl')); $this->assertContains('
', $template); $this->assertContains('
', $template); $this->assertNotContains('
', $template); $this->adminLogout(); } /** * @dataProvider emptyMenuDataProvider */ public function testEmptyMenu($expected) { $this->adminLogin(2); $menuCls = new \AdminBarMenu(); $menu = $menuCls->getMenu(); $mainCls = new \Main(); $mainCls->getMenu($menu); $actual = $this->walkRecursiveRemove($menu); $this->adminLogout(); $this->assertEquals($expected, $actual, '"Vole zapomněl jsi přidat check na práva v menu" - Joe, léta páně 2024 - nebo to pridej do emptyMenuDataProvider() pokud to zadny prava mit nemusi'); } public function emptyMenuDataProvider() { return [ [[ 0 => [ 'name' => 'administration', 'submenu' => [ 0 => [ 'name' => 'leadpage', 'left' => 'blank', 'right' => 's=board.php', 'visible' => true, 'superadmin' => false, ], 2 => [ 'name' => 'newWindow', 'script' => 'newWindow();', 'visible' => true, 'superadmin' => false, ], 3 => [ 'name' => 'logout', 'script' => 'logout(0)', 'visible' => true, 'superadmin' => false, ], 4 => [ 'name' => 'adminEdit', 'script' => 'nw(\'adminEdit\')', 'visible' => true, 'superadmin' => false, ], 6 => [ 'name' => 'chooseLanguage', 'submenu' => [ 0 => [ 'name' => 'czech', 'href' => 'admin-change-language/czech', 'visible' => true, 'superadmin' => false, ], 1 => [ 'name' => 'english', 'href' => 'admin-change-language/english', 'visible' => true, 'superadmin' => false, ], 'visible' => true, ], 'level' => 1, 'superadmin' => false, 'visible' => true, ], 7 => [ 'name' => 'userInterfaceLinks', 'title' => 'Rozcestník rozhraní', 'submenu' => [ 0 => [ 'title' => 'Rozestník aplikací', 'name' => 'appMenu', 'href' => 'menu/', 'visible' => true, 'superadmin' => false, ], 4 => [ 'name' => 'checkout-print-label', 'title' => 'Balící stanoviště', 'href' => 'checkout-print-label/', 'visible' => true, 'superadmin' => false, ], 5 => [ 'name' => 'store-app', 'title' => 'Sklad - mobilní aplikace', 'href' => '/_warehouse/store-app/', 'visible' => true, 'superadmin' => false, ], 'visible' => true, ], 'level' => 1, 'superadmin' => false, 'visible' => true, ], 8 => [ 'name' => 'Status', 'left' => 'blank', 'right' => 's=board.php&type=Status', 'visible' => true, 'title' => 'Sites:status', 'superadmin' => false, ], 'visible' => true, ], 'level' => 0, 'superadmin' => false, 'visible' => true, ], 1 => [ 'name' => 'productsMenu', 'left' => 's=menu.php&type=products', 'right' => 's=list.php&type=products', 'submenu' => [], 'level' => 0, 'superadmin' => false, ], 2 => [ 'name' => 'ordersMenu', 'left' => 's=menu.php&type=orders', 'right' => 's=list.php&type=orders', 'submenu' => [], 'level' => 0, 'superadmin' => false, ], ]], ]; } private function walkRecursiveRemove($menu) { // Check if the current item is visible if (isset($menu['visible']) && !$menu['visible']) { return null; } // If the current item has a submenu, process its items if (isset($menu['submenu'])) { foreach ($menu['submenu'] as $key => $submenu) { $submenu = $this->walkRecursiveRemove($submenu); if ($submenu === null) { unset($menu['submenu'][$key]); } else { $menu['submenu'][$key] = $submenu; } } // Remove the entire item if its submenu is empty and it doesn't have 'left' or 'right' if (empty($menu['submenu']) && !isset($menu['left']) && !isset($menu['right'])) { return null; } } // If the current item is an array of items, process each one if (is_array($menu) && array_keys($menu) === range(0, count($menu) - 1)) { foreach ($menu as $key => $submenu) { $submenu = $this->walkRecursiveRemove($submenu); if ($submenu === null) { unset($menu[$key]); } else { $menu[$key] = $submenu; } } } return $menu; } protected function getTemplatePath($file) { if (!file_exists($file)) { $classFile = (new \ReflectionClass($this))->getFileName(); $file = dirname($classFile).'/'.$file; } return $file; } protected function getDataSet() { return $this->getJsonDataSetFromFile(); } }