Skip to content

Commit cf119be

Browse files
committed
387-Test coverage of getting IDs of CMS page/blocks by GraphQL API
1 parent aae7428 commit cf119be

File tree

3 files changed

+90
-134
lines changed

3 files changed

+90
-134
lines changed

app/code/Magento/CmsGraphQl/Model/Resolver/DataProvider/Page.php

Lines changed: 77 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,41 +8,59 @@
88
namespace Magento\CmsGraphQl\Model\Resolver\DataProvider;
99

1010
use Magento\Cms\Api\Data\PageInterface;
11+
use Magento\Cms\Api\GetPageByIdentifierInterface;
1112
use Magento\Cms\Api\PageRepositoryInterface;
1213
use Magento\Framework\Exception\NoSuchEntityException;
14+
use Magento\Store\Model\StoreManagerInterface;
1315
use Magento\Widget\Model\Template\FilterEmulate;
1416

1517
/**
16-
* @deprecated
17-
* @see Magento\CmsGraphQl\Model\Resolver\DataProvider\PageDataProvider
18-
*
1918
* Cms page data provider
2019
*/
2120
class Page
2221
{
2322
/**
24-
* @var FilterEmulate
23+
* @var GetPageByIdentifierInterface
2524
*/
26-
private $widgetFilter;
25+
private $pageByIdentifier;
2726

2827
/**
2928
* @var PageRepositoryInterface
3029
*/
3130
private $pageRepository;
3231

3332
/**
34-
* @param PageRepositoryInterface $pageRepository
33+
* @var StoreManagerInterface
34+
*/
35+
private $storeManager;
36+
37+
/**
38+
* @var FilterEmulate
39+
*/
40+
private $widgetFilter;
41+
42+
/**
43+
* @param GetPageByIdentifierInterface $getPageByIdentifier
3544
* @param FilterEmulate $widgetFilter
45+
* @param PageRepositoryInterface $pageRepository
46+
* @param StoreManagerInterface $storeManager
3647
*/
3748
public function __construct(
49+
GetPageByIdentifierInterface $getPageByIdentifier,
50+
FilterEmulate $widgetFilter,
3851
PageRepositoryInterface $pageRepository,
39-
FilterEmulate $widgetFilter
52+
StoreManagerInterface $storeManager
4053
) {
54+
$this->pageByIdentifier = $getPageByIdentifier;
4155
$this->pageRepository = $pageRepository;
56+
$this->storeManager = $storeManager;
4257
$this->widgetFilter = $widgetFilter;
4358
}
4459

4560
/**
61+
* @deprecated
62+
* @see getDataByPageId(int $pageId)
63+
*
4664
* Get the page data
4765
*
4866
* @param int $pageId
@@ -72,4 +90,56 @@ public function getData(int $pageId): array
7290
];
7391
return $pageData;
7492
}
93+
94+
/**
95+
* @param int $pageId
96+
* @return array
97+
* @throws NoSuchEntityException
98+
*/
99+
public function getDataByPageId(int $pageId): array
100+
{
101+
$page = $this->pageRepository->getById($pageId);
102+
103+
return $this->convertPageData($page);
104+
}
105+
106+
/**
107+
* @param string $pageIdentifier
108+
* @return array
109+
* @throws NoSuchEntityException
110+
*/
111+
public function getDataByPageIdentifier(string $pageIdentifier): array
112+
{
113+
$storeId = (int)$this->storeManager->getStore()->getId();
114+
$page = $this->pageByIdentifier->execute($pageIdentifier, $storeId);
115+
116+
return $this->convertPageData($page);
117+
}
118+
119+
/**
120+
* @param PageInterface $page
121+
* @return array
122+
* @throws NoSuchEntityException
123+
*/
124+
private function convertPageData(PageInterface $page)
125+
{
126+
if (false === $page->isActive()) {
127+
throw new NoSuchEntityException();
128+
}
129+
130+
$renderedContent = $this->widgetFilter->filter($page->getContent());
131+
132+
$pageData = [
133+
'url_key' => $page->getIdentifier(),
134+
PageInterface::IDENTIFIER => $page->getIdentifier(),
135+
PageInterface::TITLE => $page->getTitle(),
136+
PageInterface::CONTENT => $renderedContent,
137+
PageInterface::CONTENT_HEADING => $page->getContentHeading(),
138+
PageInterface::PAGE_LAYOUT => $page->getPageLayout(),
139+
PageInterface::META_TITLE => $page->getMetaTitle(),
140+
PageInterface::META_DESCRIPTION => $page->getMetaDescription(),
141+
PageInterface::META_KEYWORDS => $page->getMetaKeywords(),
142+
];
143+
return $pageData;
144+
}
75145
}

app/code/Magento/CmsGraphQl/Model/Resolver/DataProvider/PageDataProvider.php

Lines changed: 0 additions & 110 deletions
This file was deleted.

app/code/Magento/CmsGraphQl/Model/Resolver/Page.php

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
namespace Magento\CmsGraphQl\Model\Resolver;
99

10-
use Magento\CmsGraphQl\Model\Resolver\DataProvider\PageDataProvider as PageDataProvider;
10+
use Magento\CmsGraphQl\Model\Resolver\DataProvider\Page as PageDataProvider;
1111
use Magento\Framework\Exception\NoSuchEntityException;
1212
use Magento\Framework\GraphQl\Config\Element\Field;
1313
use Magento\Framework\GraphQl\Exception\GraphQlInputException;
@@ -49,10 +49,16 @@ public function resolve(
4949
throw new GraphQlInputException(__('"Page id/identifier should be specified'));
5050
}
5151

52-
if (isset($args['id'])) {
53-
$pageData = $this->getPageDataById($this->getPageId($args));
54-
} elseif (isset($args['identifier'])) {
55-
$pageData = $this->getPageDataByIdentifier($this->getPageIdentifier($args));
52+
$pageData = [];
53+
54+
try {
55+
if (isset($args['id'])) {
56+
$pageData = $this->getPageDataById($this->getPageId($args));
57+
} elseif (isset($args['identifier'])) {
58+
$pageData = $this->getPageDataByIdentifier($this->getPageIdentifier($args));
59+
}
60+
} catch (NoSuchEntityException $e) {
61+
throw new GraphQlNoSuchEntityException(__($e->getMessage()), $e);
5662
}
5763

5864
return $pageData;
@@ -83,12 +89,7 @@ private function getPageIdentifier(array $args): string
8389
*/
8490
private function getPageDataById(int $pageId): array
8591
{
86-
try {
87-
$pageData = $this->pageDataProvider->getDataByPageId($pageId);
88-
} catch (NoSuchEntityException $e) {
89-
throw new GraphQlNoSuchEntityException(__($e->getMessage()), $e);
90-
}
91-
return $pageData;
92+
return $this->pageDataProvider->getDataByPageId($pageId);
9293
}
9394

9495
/**
@@ -98,11 +99,6 @@ private function getPageDataById(int $pageId): array
9899
*/
99100
private function getPageDataByIdentifier(string $pageIdentifier): array
100101
{
101-
try {
102-
$pageData = $this->pageDataProvider->getDataByPageIdentifier($pageIdentifier);
103-
} catch (NoSuchEntityException $e) {
104-
throw new GraphQlNoSuchEntityException(__($e->getMessage()), $e);
105-
}
106-
return $pageData;
102+
return $this->pageDataProvider->getDataByPageIdentifier($pageIdentifier);
107103
}
108104
}

0 commit comments

Comments
 (0)