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));
 }
Example #2
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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);
     }
 }
Example #5
0
 /**
  * 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);
     }
 }