/** * testMoveItemPermission * * @return void */ public function testMoveItemPermission() { $originItem = $this->getSampleMenuItem(); $movedItem = new MenuItem(['id' => 'testboard', 'parentId' => 'freeboard', 'ordering' => 1, 'activated' => 1, 'type' => 'pluginA@board', 'title' => 'Test 게시판', 'description' => '테스트 게시판입니다.', 'url' => 'testboard']); $movedItem->setBreadCrumbs(['basic', 'board', 'freeboard']); $registered = m::mock('Xpressengine\\Permission\\Registered'); $permissionFactory = $this->permissionFactory; $permissionFactory->shouldReceive('findRegistered')->andReturn($registered); $permissionFactory->shouldReceive('move')->andReturn(); $permissionHandler = new MenuPermissionHandler($permissionFactory, $this->groupRepoMock, $this->memberRepoMock); $permissionHandler->moveItemPermission($originItem, $movedItem); }
/** * 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()); }