public function testGetByIdentifierNamespace() { $userId = 1; $namespace = 'some_namespace'; $identifier = 'current'; $this->userContext->expects($this->once())->method('getUserId')->willReturn($userId); $fieldUserId = new Filter([Filter::KEY_FIELD => 'user_id', Filter::KEY_VALUE => $userId, Filter::KEY_CONDITION_TYPE => 'eq']); $fieldIdentifier = new Filter([Filter::KEY_FIELD => 'identifier', Filter::KEY_VALUE => $identifier, Filter::KEY_CONDITION_TYPE => 'eq']); $fieldNamespace = new Filter([Filter::KEY_FIELD => 'namespace', Filter::KEY_VALUE => $namespace, Filter::KEY_CONDITION_TYPE => 'eq']); $bookmarkId = 1; $bookmark = $this->getMockBuilder('Magento\\Ui\\Api\\Data\\BookmarkInterface')->getMockForAbstractClass(); $bookmark->expects($this->once())->method('getId')->willReturn($bookmarkId); $searchCriteria = $this->getMockBuilder('Magento\\Framework\\Api\\SearchCriteriaInterface')->getMockForAbstractClass(); $this->filterBuilder->expects($this->at(0))->method('create')->willReturn($fieldUserId); $this->filterBuilder->expects($this->at(1))->method('create')->willReturn($fieldIdentifier); $this->filterBuilder->expects($this->at(2))->method('create')->willReturn($fieldNamespace); $this->searchCriteriaBuilder->expects($this->once())->method('addFilters')->with([$fieldUserId, $fieldIdentifier, $fieldNamespace]); $this->searchCriteriaBuilder->expects($this->once())->method('create')->willReturn($searchCriteria); $searchResult = $this->getMockBuilder('Magento\\Ui\\Api\\Data\\BookmarkSearchResultsInterface')->getMockForAbstractClass(); $searchResult->expects($this->once())->method('getTotalCount')->willReturn(1); $searchResult->expects($this->once())->method('getItems')->willReturn([$bookmark]); $this->bookmarkRepository->expects($this->once())->method('getList')->with($searchCriteria)->willReturn($searchResult); $this->bookmarkRepository->expects($this->once())->method('getById')->with($bookmarkId)->willReturn($bookmark); $this->assertEquals($bookmark, $this->bookmarkManagement->getByIdentifierNamespace($identifier, $namespace)); }
/** * Action for AJAX request * * @return void */ public function execute() { $viewIds = explode('.', $this->_request->getParam('data')); $bookmark = $this->bookmarkManagement->getByIdentifierNamespace(array_pop($viewIds), $this->_request->getParam('namespace')); if ($bookmark && $bookmark->getId()) { $this->bookmarkRepository->delete($bookmark); } }
/** * {@inheritdoc} */ public function getByIdentifierNamespace($identifier, $namespace) { $this->searchCriteriaBuilder->addFilters([$this->filterBuilder->setField('user_id')->setConditionType('eq')->setValue($this->userContext->getUserId())->create(), $this->filterBuilder->setField('identifier')->setConditionType('eq')->setValue($identifier)->create(), $this->filterBuilder->setField('namespace')->setConditionType('eq')->setValue($namespace)->create()]); $searchCriteria = $this->searchCriteriaBuilder->create(); $searchResults = $this->bookmarkRepository->getList($searchCriteria); if ($searchResults->getTotalCount() > 0) { foreach ($searchResults->getItems() as $searchResult) { $bookmark = $this->bookmarkRepository->getById($searchResult->getId()); return $bookmark; } } return null; }
/** * Update current bookmark * * @param string $identifier * @return void */ protected function updateCurrentBookmark($identifier) { $bookmarks = $this->bookmarkManagement->loadByNamespace($this->_request->getParam('namespace')); foreach ($bookmarks->getItems() as $bookmark) { if ($bookmark->getIdentifier() == $identifier) { $bookmark->setCurrent(true); } else { $bookmark->setCurrent(false); } $this->bookmarkRepository->save($bookmark); } }
/** * Update bookmarks based on request params * * @param BookmarkInterface $bookmark * @param string $identifier * @param string $title * @param array $config * @return void */ protected function updateBookmark(BookmarkInterface $bookmark, $identifier, $title, array $config = []) { $this->filterVars($config); $bookmark->setUserId($this->userContext->getUserId())->setNamespace($this->_request->getParam('namespace'))->setIdentifier($identifier)->setTitle($title)->setConfig($config)->setCurrent($identifier !== self::CURRENT_IDENTIFIER); $this->bookmarkRepository->save($bookmark); $bookmarks = $this->bookmarkManagement->loadByNamespace($this->_request->getParam('namespace')); foreach ($bookmarks->getItems() as $bookmark) { if ($bookmark->getIdentifier() == $identifier) { continue; } $bookmark->setCurrent(false); $this->bookmarkRepository->save($bookmark); } }