Skip to content

Commit

Permalink
GraphQl-387: Test coverage of getting IDs of CMS page/blocks by Graph…
Browse files Browse the repository at this point in the history
…QL API
  • Loading branch information
naydav committed May 8, 2019
1 parent 4ee64a5 commit d7b7a2e
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 73 deletions.
36 changes: 5 additions & 31 deletions app/code/Magento/CmsGraphQl/Model/Resolver/DataProvider/Page.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,23 +58,6 @@ public function __construct(
$this->storeManager = $storeManager;
}

/**
* @deprecated
* @see getDataByPageId(int $pageId)
*
* Get the page data
*
* @param int $pageId
* @return array
* @throws NoSuchEntityException
*/
public function getData(int $pageId): array
{
$page = $this->pageRepository->getById($pageId);

return $this->convertPageData($page);
}

/**
* Returns page data by page_id
*
Expand All @@ -86,7 +69,7 @@ public function getDataByPageId(int $pageId): array
{
$page = $this->pageRepository->getById($pageId);

return $this->convertPageData($page, false, true);
return $this->convertPageData($page);
}

/**
Expand All @@ -101,17 +84,15 @@ public function getDataByPageIdentifier(string $pageIdentifier): array
$storeId = (int)$this->storeManager->getStore()->getId();
$page = $this->pageByIdentifier->execute($pageIdentifier, $storeId);

return $this->convertPageData($page, false, true);
return $this->convertPageData($page);
}

/**
* @param PageInterface $page
* @param bool $includePageId
* @param bool $includePageIdentifier
* @return array
* @throws NoSuchEntityException
*/
private function convertPageData(PageInterface $page, $includePageId = true, $includePageIdentifier = false)
private function convertPageData(PageInterface $page)
{
if (false === $page->isActive()) {
throw new NoSuchEntityException();
Expand All @@ -128,16 +109,9 @@ private function convertPageData(PageInterface $page, $includePageId = true, $in
PageInterface::META_TITLE => $page->getMetaTitle(),
PageInterface::META_DESCRIPTION => $page->getMetaDescription(),
PageInterface::META_KEYWORDS => $page->getMetaKeywords(),
PageInterface::PAGE_ID => $page->getId(),
PageInterface::IDENTIFIER => $page->getIdentifier(),
];

if ($includePageId) {
$pageData[PageInterface::PAGE_ID] = $page->getId();
}

if ($includePageIdentifier) {
$pageData[PageInterface::IDENTIFIER] = $page->getIdentifier();
}

return $pageData;
}
}
45 changes: 3 additions & 42 deletions app/code/Magento/CmsGraphQl/Model/Resolver/Page.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,60 +45,21 @@ public function resolve(
array $value = null,
array $args = null
) {
if (!isset($args['id']) && !isset($args['identifier'])) {
if (!isset($args['id'], $args['identifier'])) {
throw new GraphQlInputException(__('"Page id/identifier should be specified'));
}

$pageData = [];

try {
if (isset($args['id'])) {
$pageData = $this->getPageDataById($this->getPageId($args));
$pageData = $this->pageDataProvider->getDataByPageId((int)$args['id']);
} elseif (isset($args['identifier'])) {
$pageData = $this->getPageDataByIdentifier($this->getPageIdentifier($args));
$pageData = $this->pageDataProvider->getDataByPageIdentifier((string)$args['identifier']);
}
} catch (NoSuchEntityException $e) {
throw new GraphQlNoSuchEntityException(__($e->getMessage()), $e);
}

return $pageData;
}

/**
* @param array $args
* @return int
*/
private function getPageId(array $args): int
{
return isset($args['id']) ? (int)$args['id'] : 0;
}

/**
* @param array $args
* @return string
*/
private function getPageIdentifier(array $args): string
{
return isset($args['identifier']) ? (string)$args['identifier'] : '';
}

/**
* @param int $pageId
* @return array
* @throws GraphQlNoSuchEntityException
*/
private function getPageDataById(int $pageId): array
{
return $this->pageDataProvider->getDataByPageId($pageId);
}

/**
* @param string $pageIdentifier
* @return array
* @throws GraphQlNoSuchEntityException
*/
private function getPageDataByIdentifier(string $pageIdentifier): array
{
return $this->pageDataProvider->getDataByPageIdentifier($pageIdentifier);
}
}

0 comments on commit d7b7a2e

Please sign in to comment.