Ejemplo n.º 1
0
 /**
  * destroyItem
  * 메뉴 아이템 삭제 처리 메소드
  *
  * @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            menu id
  * @param string                $itemId            item id
  *
  * @return RedirectResponse
  * @throws Exception
  */
 public function destroyItem(MenuRetrieveHandler $menuHandler, MenuAlterHandler $menuChanger, MenuConfigHandler $configHandler, MenuPermissionHandler $permissionHandler, $menuId, $itemId)
 {
     XeDB::beginTransaction();
     try {
         $menu = $menuHandler->getMenu($menuId);
         $item = $menu->getItem($itemId);
         $menuChanger->removeItem($item);
         $configHandler->deleteMenuItemTheme($item);
         $permissionHandler->deleteItemPermission($item);
     } 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' => 'MenuItem deleted']);
 }
 /**
  * testRemoveItemFail
  *
  * @return void
  */
 public function testRemoveItemFail()
 {
     $this->setExpectedException('Xpressengine\\Menu\\Exceptions\\CanNotDeleteMenuItemHaveChildException');
     $menuRepo = $this->menuRepository;
     $typeHandler = $this->typeHandler;
     $routeHandler = $this->routeHandler;
     $cacheHandler = $this->cacheHandler;
     $instanceRouteMock = m::mock('Xpressengine\\Routing\\InstanceRoute');
     $instanceRouteMock->shouldReceive('setUrl')->andReturn();
     $menuRepo->shouldReceive('countItem')->andReturn(1);
     $menuRepo->shouldReceive('deleteItem')->andReturn();
     $menuRepo->shouldReceive('removeHierarchy')->andReturn();
     $routeHandler->shouldReceive('remove')->andReturn();
     $menuHandler = new MenuAlterHandler($menuRepo, $typeHandler, $routeHandler, $cacheHandler);
     $dummyMenuType = m::mock('alias:Theme', 'Xpressengine\\Menu\\MenuType\\MenuTypeInterface', ['isRouteAble' => true]);
     $testItem = new MenuItem(['id' => 'testItem', 'type' => 'testType']);
     $testChildItem = new MenuItem(['id' => 'testChild', 'parentId' => 'testItem']);
     $testItem->addChild($testChildItem);
     $dummyMenuType->shouldReceive('deleteMenu')->andReturn();
     $typeHandler->shouldReceive('getModuleObject')->andReturn($dummyMenuType);
     $typeHandler->shouldReceive('updateMenu')->andReturn(0);
     $menuHandler->removeItem($testItem);
 }