From 263588a28f1b529ce225f62cc87b4d4639614e39 Mon Sep 17 00:00:00 2001 From: Alex Taranovsky Date: Tue, 16 Apr 2019 09:22:28 +0300 Subject: [PATCH] magento/graphql-ce#387: Test coverage of getting IDs of CMS page/blocks by GraphQL API --- .../Model/Resolver/DataProvider/Page.php | 54 ++------- .../DataProvider/PageDataProvider.php | 110 ++++++++++++++++++ .../CmsGraphQl/Model/Resolver/Page.php | 2 +- 3 files changed, 119 insertions(+), 47 deletions(-) create mode 100644 app/code/Magento/CmsGraphQl/Model/Resolver/DataProvider/PageDataProvider.php diff --git a/app/code/Magento/CmsGraphQl/Model/Resolver/DataProvider/Page.php b/app/code/Magento/CmsGraphQl/Model/Resolver/DataProvider/Page.php index 0745296822c3c..e943ba0c2fd5e 100644 --- a/app/code/Magento/CmsGraphQl/Model/Resolver/DataProvider/Page.php +++ b/app/code/Magento/CmsGraphQl/Model/Resolver/DataProvider/Page.php @@ -8,21 +8,22 @@ namespace Magento\CmsGraphQl\Model\Resolver\DataProvider; use Magento\Cms\Api\Data\PageInterface; -use Magento\Cms\Api\GetPageByIdentifierInterface; use Magento\Cms\Api\PageRepositoryInterface; use Magento\Framework\Exception\NoSuchEntityException; -use Magento\Store\Model\StoreManagerInterface; use Magento\Widget\Model\Template\FilterEmulate; /** + * @deprecated + * @see Magento\CmsGraphQl\Model\Resolver\DataProvider\PageDataProvider + * * Cms page data provider */ class Page { /** - * @var GetPageByIdentifierInterface + * @var FilterEmulate */ - private $pageByIdentifier; + private $widgetFilter; /** * @var PageRepositoryInterface @@ -30,30 +31,14 @@ class Page private $pageRepository; /** - * @var StoreManagerInterface - */ - private $storeManager; - - /** - * @var FilterEmulate - */ - private $widgetFilter; - - /** - * @param GetPageByIdentifierInterface $getPageByIdentifier - * @param FilterEmulate $widgetFilter * @param PageRepositoryInterface $pageRepository - * @param StoreManagerInterface $storeManager + * @param FilterEmulate $widgetFilter */ public function __construct( - GetPageByIdentifierInterface $getPageByIdentifier, - FilterEmulate $widgetFilter, PageRepositoryInterface $pageRepository, - StoreManagerInterface $storeManager + FilterEmulate $widgetFilter ) { - $this->pageByIdentifier = $getPageByIdentifier; $this->pageRepository = $pageRepository; - $this->storeManager = $storeManager; $this->widgetFilter = $widgetFilter; } @@ -62,32 +47,10 @@ public function __construct( * @return array * @throws NoSuchEntityException */ - public function getDataByPageId(int $pageId): array + public function getData(int $pageId): array { $page = $this->pageRepository->getById($pageId); - return $this->convertPageData($page); - } - - /** - * @param string $pageIdentifier - * @return array - */ - public function getDataByPageIdentifier(string $pageIdentifier): array - { - $storeId = (int)$this->storeManager->getStore()->getId(); - $page = $this->pageByIdentifier->execute($pageIdentifier, $storeId); - - return $this->convertPageData($page); - } - - /** - * @param PageInterface $page - * @return array - * @throws NoSuchEntityException - */ - private function convertPageData(PageInterface $page) - { if (false === $page->isActive()) { throw new NoSuchEntityException(); } @@ -96,7 +59,6 @@ private function convertPageData(PageInterface $page) $pageData = [ 'url_key' => $page->getIdentifier(), - PageInterface::PAGE_ID => $page->getId(), PageInterface::TITLE => $page->getTitle(), PageInterface::CONTENT => $renderedContent, PageInterface::CONTENT_HEADING => $page->getContentHeading(), diff --git a/app/code/Magento/CmsGraphQl/Model/Resolver/DataProvider/PageDataProvider.php b/app/code/Magento/CmsGraphQl/Model/Resolver/DataProvider/PageDataProvider.php new file mode 100644 index 0000000000000..7391f736e95e6 --- /dev/null +++ b/app/code/Magento/CmsGraphQl/Model/Resolver/DataProvider/PageDataProvider.php @@ -0,0 +1,110 @@ +pageByIdentifier = $getPageByIdentifier; + $this->pageRepository = $pageRepository; + $this->storeManager = $storeManager; + $this->widgetFilter = $widgetFilter; + } + + /** + * @param int $pageId + * @return array + * @throws NoSuchEntityException + */ + public function getDataByPageId(int $pageId): array + { + $page = $this->pageRepository->getById($pageId); + + return $this->convertPageData($page); + } + + /** + * @param string $pageIdentifier + * @return array + */ + public function getDataByPageIdentifier(string $pageIdentifier): array + { + $storeId = (int)$this->storeManager->getStore()->getId(); + $page = $this->pageByIdentifier->execute($pageIdentifier, $storeId); + + return $this->convertPageData($page); + } + + /** + * @param PageInterface $page + * @return array + * @throws NoSuchEntityException + */ + private function convertPageData(PageInterface $page) + { + if (false === $page->isActive()) { + throw new NoSuchEntityException(); + } + + $renderedContent = $this->widgetFilter->filter($page->getContent()); + + $pageData = [ + 'url_key' => $page->getIdentifier(), + PageInterface::PAGE_ID => $page->getId(), + PageInterface::TITLE => $page->getTitle(), + PageInterface::CONTENT => $renderedContent, + PageInterface::CONTENT_HEADING => $page->getContentHeading(), + PageInterface::PAGE_LAYOUT => $page->getPageLayout(), + PageInterface::META_TITLE => $page->getMetaTitle(), + PageInterface::META_DESCRIPTION => $page->getMetaDescription(), + PageInterface::META_KEYWORDS => $page->getMetaKeywords(), + ]; + return $pageData; + } +} diff --git a/app/code/Magento/CmsGraphQl/Model/Resolver/Page.php b/app/code/Magento/CmsGraphQl/Model/Resolver/Page.php index 41712889a1bfd..544a09c780070 100644 --- a/app/code/Magento/CmsGraphQl/Model/Resolver/Page.php +++ b/app/code/Magento/CmsGraphQl/Model/Resolver/Page.php @@ -7,7 +7,7 @@ namespace Magento\CmsGraphQl\Model\Resolver; -use Magento\CmsGraphQl\Model\Resolver\DataProvider\Page as PageDataProvider; +use Magento\CmsGraphQl\Model\Resolver\DataProvider\PageDataProvider as PageDataProvider; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Exception\GraphQlInputException;