/** * destroy * * @param MenuRetrieveHandler $menuHandler menu handler * @param MenuAlterHandler $menuChanger menu alter handler * @param MenuConfigHandler $configHandler menu config handler * @param MenuPermissionHandler $permissionHandler menu permission handler * @param string $menuId to delete menu entity object id * * @return RedirectResponse */ public function destroy(MenuRetrieveHandler $menuHandler, MenuAlterHandler $menuChanger, MenuConfigHandler $configHandler, MenuPermissionHandler $permissionHandler, $menuId) { XeDB::beginTransaction(); try { $menu = $menuHandler->getMenu($menuId); $menuChanger->removeMenu($menu); $configHandler->deleteMenuTheme($menu); $permissionHandler->deleteMenuPermission($menu); } catch (Exception $e) { XeDB::rollback(); return Redirect::back()->with('alert', ['type' => 'danger', 'message' => $e->getMessage()]); } XeDB::commit(); return Redirect::route('settings.menu.index')->with('alert', ['type' => 'success', 'message' => 'Menu deleted']); }
/** * testRemoveMenuFail * * @return void * @throws \Exception */ public function testRemoveMenuFail() { $this->setExpectedException('\\Exception'); $menuRepo = $this->menuRepository; $typeHandler = $this->typeHandler; $routeHandler = $this->routeHandler; $cacheHandler = $this->cacheHandler; $menuHandler = new MenuAlterHandler($menuRepo, $typeHandler, $routeHandler, $cacheHandler); $menu = new MenuEntity(['id' => 'testMenu', 'title' => 'testTitle', 'description' => 'testDescription'], new TreeCollection([new MenuItem(['id' => 'testMenu'])])); $menuItem = new MenuItem(['id' => 'qna', 'parentId' => 'main', 'ordering' => 1, 'activated' => 1, 'type' => 'pluginA@board', 'title' => 'Q & A', 'description' => '질답 게시판입니다.', 'url' => 'qna']); $menu->addItem($menuItem); $menuRepo->shouldReceive('findMenu')->with('basic')->andReturn($menu); $menuRepo->shouldReceive('deleteMenu')->andReturn(); $menuHandler->removeMenu($menu); }