Issues (3641)

Zed/Cms/_support/Helper/CmsPageDataHelper.php (1 issue)

1
<?php
2
3
/**
4
 * Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerTest\Zed\Cms\Helper;
9
10
use Codeception\Module;
11
use Generated\Shared\DataBuilder\CmsPageAttributesBuilder;
12
use Generated\Shared\DataBuilder\CmsPageBuilder;
13
use Generated\Shared\Transfer\CmsPageTransfer;
14
use Generated\Shared\Transfer\StoreRelationTransfer;
15
use Spryker\Zed\Cms\Business\CmsFacadeInterface;
16
use SprykerTest\Shared\Testify\Helper\DataCleanupHelperTrait;
17
use SprykerTest\Shared\Testify\Helper\LocatorHelperTrait;
18
19
class CmsPageDataHelper extends Module
20
{
21
    use DataCleanupHelperTrait;
22
    use LocatorHelperTrait;
23
24
    /**
25
     * @param array $seedData
26
     *
27
     * @return \Generated\Shared\Transfer\CmsPageTransfer
28
     */
29
    public function haveCmsPage(array $seedData = []): CmsPageTransfer
30
    {
31
        $cmsPageTransfer = $this->generateLocalizedCmsPageTransfer($seedData);
32
33
        $this->setStoreRelation($cmsPageTransfer, $seedData);
34
35
        $idCmsPage = $this->getCmsFacade()->createPage($cmsPageTransfer);
36
37
        $this->getDataCleanupHelper()->_addCleanup(function () use ($idCmsPage): void {
38
            $this->cleanupCmsPage($idCmsPage);
39
        });
40
41
        return $this->getCmsFacade()->findCmsPageById($idCmsPage);
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->getCmsFaca...CmsPageById($idCmsPage) could return the type null which is incompatible with the type-hinted return Generated\Shared\Transfer\CmsPageTransfer. Consider adding an additional type-check to rule them out.
Loading history...
42
    }
43
44
    /**
45
     * @param array $seedData
46
     *
47
     * @return \Generated\Shared\Transfer\CmsPageTransfer
48
     */
49
    protected function generateLocalizedCmsPageTransfer(array $seedData = []): CmsPageTransfer
50
    {
51
        $cmsPageTransfer = (new CmsPageBuilder($seedData))->build();
52
53
        $cmsPageLocalizedAttributes = (new CmsPageAttributesBuilder($seedData))->build();
54
        $cmsPageTransfer->addPageAttribute($cmsPageLocalizedAttributes);
55
56
        return $cmsPageTransfer;
57
    }
58
59
    /**
60
     * @param \Generated\Shared\Transfer\CmsPageTransfer $cmsPageTransfer
61
     * @param array $seedData
62
     *
63
     * @return void
64
     */
65
    protected function setStoreRelation(CmsPageTransfer $cmsPageTransfer, array $seedData = []): void
66
    {
67
        if (!isset($seedData[CmsPageTransfer::STORE_RELATION])) {
68
            return;
69
        }
70
71
        $cmsPageTransfer->setStoreRelation(
72
            (new StoreRelationTransfer())
73
                ->fromArray($seedData[CmsPageTransfer::STORE_RELATION]),
74
        );
75
    }
76
77
    /**
78
     * @return \Spryker\Zed\Cms\Business\CmsFacadeInterface
79
     */
80
    protected function getCmsFacade(): CmsFacadeInterface
81
    {
82
        return $this->getLocator()->cms()->facade();
83
    }
84
85
    /**
86
     * @param int $idCmsPage
87
     *
88
     * @return void
89
     */
90
    protected function cleanupCmsPage(int $idCmsPage): void
91
    {
92
        $this->getCmsFacade()->deletePageById($idCmsPage);
93
    }
94
}
95