/** * moveItem * * @param MenuRetrieveHandler $menuRetrieveHandler menu handler * @param MenuAlterHandler $menuChanger menu alter handler * @param MenuConfigHandler $configHandler menu config handler * @param MenuPermissionHandler $permissionHandler menu permission handler * * @return RendererInterface * @throws Exception */ public function moveItem(MenuRetrieveHandler $menuRetrieveHandler, MenuAlterHandler $menuChanger, MenuConfigHandler $configHandler, MenuPermissionHandler $permissionHandler) { $ordering = Request::get('ordering'); $itemId = Request::get('itemId'); $parentId = Request::get('parent'); XeDB::beginTransaction(); try { $item = $menuRetrieveHandler->getItem($itemId); $movedItem = $menuChanger->moveItem($item, $parentId); $menuChanger->setOrder($item, $ordering); $configHandler->moveItemConfig($item, $movedItem); $permissionHandler->moveItemPermission($item, $movedItem); } catch (\Exception $e) { XeDB::rollback(); throw $e; } XeDB::commit(); return Presenter::makeApi(\Request::all()); }
/** * testMoveItemNewMenuId * * @return void */ public function testMoveItemNewMenuId() { $menuRepo = $this->menuRepository; $typeHandler = $this->typeHandler; $routeHandler = $this->routeHandler; $cacheHandler = $this->cacheHandler; $menuItem = new MenuItem(['parentId' => 'main', 'ordering' => 1]); $menuRepo->shouldReceive('unlinkHierarchy')->andReturn(1); $menuRepo->shouldReceive('linkHierarchy')->andReturn(); $menuRepo->shouldReceive('updateItem')->andReturn(); $menuRepo->shouldReceive('findItem')->andReturn($menuItem); $menuRepo->shouldReceive('countMenu')->andReturn(1); $menuHandler = new MenuAlterHandler($menuRepo, $typeHandler, $routeHandler, $cacheHandler); $movedItem = $menuHandler->moveItem($menuItem, 'notice'); $this->assertEquals('notice', $movedItem->parentId); $this->assertEquals('1', $movedItem->ordering); }