Completed
Pull Request — master (#6)
by Willem
08:10 queued 05:05
created

testViewWithGlobalCustomUpdate()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 25
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 13
c 1
b 0
f 1
dl 0
loc 25
rs 9.8333
cc 1
nc 1
nop 0
1
<?php
2
declare(strict_types=1);
3
4
namespace IntegerNet\GlobalCustomLayout\Test\Integration;
5
6
use IntegerNet\GlobalCustomLayout\Test\Util\CustomLayoutManager;
7
use IntegerNet\GlobalCustomLayout\Test\Util\PageLayoutUpdateManager;
0 ignored issues
show
Bug introduced by
The type IntegerNet\GlobalCustomL...PageLayoutUpdateManager was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
8
use Magento\Cms\Api\Data\PageInterface;
9
use Magento\Cms\Model\Page as PageModel;
10
use Magento\Cms\Model\Page\CustomLayoutRepositoryInterface;
11
use Magento\Cms\Model\PageFactory as PageModelFactory;
0 ignored issues
show
Bug introduced by
The type Magento\Cms\Model\PageFactory was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
12
use Magento\Cms\Model\ResourceModel\Page as PageResourceModel;
13
use Magento\Framework\Exception\AlreadyExistsException;
14
15
class PageFrontendControllerTest extends AbstractFrontendControllerTest
16
{
17
    /** @var CustomLayoutManager */
18
    protected $layoutManager;
19
20
    /** @var PageModel */
21
    protected $page;
22
23
    /** @var PageResourceModel */
24
    protected $pageResource;
25
26
    /** @var pageFactory $pageFactory */
0 ignored issues
show
Bug introduced by
The type IntegerNet\GlobalCustomL...Integration\pageFactory was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
27
    protected $pageFactory;
28
29
    protected function getPage(int $storeId, string $pageIdentifier): pageModel
30
    {
31
        /** @var CustomLayoutManager $layoutManager */
32
        $layoutManager = $this->getLayoutManager();
33
34
        /** @var PageResourceModel $pageResource */
35
        $pageResource = $this->getPageResource();
36
37
        /** @var CustomLayoutRepositoryInterface $layoutRepo */
38
        $layoutRepo = $this->objectManager->create(
39
            CustomLayoutRepositoryInterface::class,
40
            ['manager' => $layoutManager]
41
        );
42
43
        /** @var PageModelFactory $pageFactory */
44
        $pageFactory = $this->objectManager->get(PageModelFactory::class);
45
46
        /** @var PageModel $page */
47
        $page = $pageFactory->create(['customLayoutRepository' => $layoutRepo]);
48
49
        $page->setStoreId($storeId);
50
        $pageResource->load($page, $pageIdentifier, PageInterface::IDENTIFIER);
51
52
        return $page;
53
    }
54
55
    /**
56
     * Check that custom handles are applied when rendering a page.
57
     *
58
     * @return void
59
     * @throws AlreadyExistsException
60
     * @magentoDataFixture Magento/Cms/_files/pages.php
61
     */
62
    public function testViewWithGlobalCustomUpdate(): void
63
    {
64
        $file = 'test-file';
65
        $pageIdentifier = 'page100';
66
        $storeId = 0;
67
68
        /** @var pageModel $page */
69
        $page = $this->getPage($storeId, $pageIdentifier);
70
        /** @var CustomLayoutManager $layoutManager */
71
        $layoutManager = $this->getLayoutManager();
72
73
        /** @var PageResourceModel $pageResource */
74
        $pageResource = $this->getPageResource();
75
76
        $pageId = $page->getId();
77
        $layoutManager->fakeAvailableFiles(0, [$file]);
78
79
        //Updating the custom attribute.
80
        $page->setData('layout_update_selected', $file);
81
        $pageResource->save($page);
82
83
        $this->dispatch('/cms/page/view/page_id/' . $pageId);
84
85
        $handles = $this->layoutInterface->getUpdate()->getHandles();
86
        $this->assertContains("cms_page_view_selectable_0_{$file}", $handles);
87
    }
88
89
    /**
90
     * @return PageResourceModel
91
     */
92
    protected function getPageResource(): PageResourceModel
93
    {
94
        if (!$this->pageResource) {
95
            $this->pageResource = $this->objectManager->get(PageResourceModel::class);
96
        }
97
        return $this->pageResource;
98
    }
99
100
    /**
101
     * @return CustomLayoutManager
102
     */
103
    protected function getLayoutManager(): CustomLayoutManager
104
    {
105
        if (!$this->layoutManager) {
106
            $this->layoutManager = $this->objectManager->get(CustomLayoutManager::class);
107
        }
108
        return $this->layoutManager;
109
    }
110
}
111