/**
  * updateItemPermission
  *
  * @param MenuRetrieveHandler   $menuHandler       menu handler
  * @param MenuCacheHandler      $cacheHandler      menu cache handler
  * @param MenuPermissionHandler $permissionHandler menu permission handler
  * @param string                $menuId            menu id
  * @param string                $itemId            menu item id
  *
  * @return RedirectResponse
  */
 public function updateItemPermission(MenuRetrieveHandler $menuHandler, MenuCacheHandler $cacheHandler, MenuPermissionHandler $permissionHandler, $menuId, $itemId)
 {
     XeDB::beginTransaction();
     try {
         $inputs = Request::all();
         $menu = $menuHandler->getMenu($menuId);
         $item = $menu->getItem($itemId);
         $menuGrant = $permissionHandler->createAccessGrant($inputs);
         $menuGrant = $permissionHandler->createVisibleGrant($inputs, $menuGrant);
         $permissionHandler->registerItemPermission($item, $menuGrant);
         $cacheHandler->deleteCachedMenu($item->menuId);
     } catch (Exception $e) {
         XeDB::rollback();
         Request::flash();
         return Redirect::back()->with('alert', ['type' => 'danger', 'message' => $e->getMessage()]);
     }
     XeDB::commit();
     return Redirect::route('settings.menu.index');
 }
 /**
  * testGetMenu
  *
  * @return void
  */
 public function testGetMenu()
 {
     $menuRepo = $this->menuRepository;
     $typeHandler = $this->typeHandler;
     $permissionHandler = $this->menuPermissionHandler;
     $cacheHandler = $this->cacheHandler;
     $menuPermission = $this->menuPermission;
     $dummyMenu1 = new MenuEntity(['id' => 'main', 'title' => 'testTitle1', 'description' => 'testDescription'], new TreeCollection([new MenuItem(['id' => 'testMenuItem1'])]));
     $menuHandler = new MenuRetrieveHandler($menuRepo, $typeHandler, $permissionHandler, $cacheHandler);
     $cacheHandler->shouldReceive('isExistCachedMenu')->andReturn(false);
     $cacheHandler->shouldReceive('setCachedMenu')->andReturn(false);
     $menuRepo->shouldReceive('findMenu')->andReturn($dummyMenu1);
     $permissionHandler->shouldReceive('getMenuPermissions')->andReturn(['main' => $menuPermission, '' => $menuPermission]);
     $menu = $menuHandler->getMenu('main');
     $this->assertEquals($dummyMenu1, $menu);
 }