Issues (3641)

Zed/Cms/Business/Page/CmsPageSaverTest.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\Business\Page;
9
10
use Generated\Shared\Transfer\CmsPageAttributesTransfer;
11
use Generated\Shared\Transfer\CmsPageMetaAttributesTransfer;
12
use Generated\Shared\Transfer\CmsPageTransfer;
13
use Generated\Shared\Transfer\CmsTemplateTransfer;
14
use Generated\Shared\Transfer\StoreRelationTransfer;
15
use Orm\Zed\Url\Persistence\SpyUrl;
16
use Spryker\Zed\Cms\Business\Mapping\CmsGlossarySaverInterface;
17
use Spryker\Zed\Cms\Business\Page\CmsPageSaver;
18
use Spryker\Zed\Cms\Business\Page\CmsPageUrlBuilderInterface;
19
use Spryker\Zed\Cms\Business\Page\Store\CmsPageStoreRelationWriterInterface;
20
use Spryker\Zed\Cms\Business\Template\TemplateManagerInterface;
21
use Spryker\Zed\Cms\Dependency\Facade\CmsToTouchFacadeInterface;
22
use Spryker\Zed\Cms\Persistence\CmsQueryContainerInterface;
23
use Spryker\Zed\Url\Business\UrlFacadeInterface;
24
use SprykerTest\Zed\Cms\Business\CmsMocks;
25
26
/**
27
 * Auto-generated group annotations
28
 *
29
 * @group SprykerTest
30
 * @group Zed
31
 * @group Cms
32
 * @group Business
33
 * @group Page
34
 * @group CmsPageSaverTest
35
 * Add your own group annotations below this line
36
 */
37
class CmsPageSaverTest extends CmsMocks
38
{
39
    /**
40
     * @return void
41
     */
42
    public function testCreatePageShouldPersistGivenTransfer(): void
43
    {
44
        $cmsPageSaverMock = $this->createCmsPageSaverMock();
45
46
        $cmsPageEntityMock = $this->createCmsPageEntityMock();
47
        $cmsPageEntityMock->setIdCmsPage(1);
48
        $cmsPageEntityMock->expects($this->once())
49
            ->method('save');
50
        $cmsPageSaverMock->expects($this->once())
51
            ->method('createCmsPageEntity')
52
            ->willReturn($cmsPageEntityMock);
53
54
        $cmsPageLocalizedAttributesEntityMock = $this->createCmsPageLocalizedAttributesEntityMock();
55
        $cmsPageLocalizedAttributesEntityMock->expects($this->exactly(2))
56
            ->method('save');
57
        $cmsPageSaverMock->expects($this->once())
58
            ->method('createCmsPageLocalizedAttributesEntity')
59
            ->willReturn($cmsPageLocalizedAttributesEntityMock);
60
61
        $cmsPageTransfer = new CmsPageTransfer();
62
        $cmsPageTransfer->addPageAttribute(new CmsPageAttributesTransfer());
63
        $cmsPageTransfer->addMetaAttribute(new CmsPageMetaAttributesTransfer());
64
        $cmsPageTransfer->setStoreRelation(new StoreRelationTransfer());
65
66
        $idCmsPage = $cmsPageSaverMock->createPage($cmsPageTransfer);
67
68
        $this->assertSame($cmsPageEntityMock->getIdCmsPage(), $idCmsPage);
69
    }
70
71
    /**
72
     * @return void
73
     */
74
    public function testUpdatePageShouldUpdateExistingEntityWithNewData(): void
75
    {
76
        $touchFacadeMock = $this->createTouchFacadeMock();
77
        $touchFacadeMock->expects($this->once())
78
            ->method('touchActive');
79
80
        $cmsPageSaverMock = $this->createCmsPageSaverMock(null, $touchFacadeMock);
81
82
        $cmsPageEntityMock = $this->createCmsPageEntityMock();
83
        $cmsPageEntityMock->setIsActive(true);
84
85
        $localizedAttributesEntityMock = $this->createCmsPageLocalizedAttributesEntityMock();
86
        $localizedAttributesEntityMock->setIdCmsPageLocalizedAttributes(1);
87
        $cmsPageEntityMock->addSpyCmsPageLocalizedAttributes($localizedAttributesEntityMock);
88
89
        $urlEntity = new SpyUrl();
90
        $urlEntity->setFkLocale(1);
91
        $cmsPageEntityMock->addSpyUrl($urlEntity);
92
93
        $cmsPageSaverMock->expects($this->once())
94
            ->method('getCmsPageEntity')
95
            ->willReturn($cmsPageEntityMock);
96
97
        $cmsPageEntityMock->setIdCmsPage(1);
98
99
        $cmsPageTransfer = new CmsPageTransfer();
100
        $cmsPageTransfer->setIsSearchable(false);
101
102
        $idStores = [1, 3];
103
104
        $storeRelationTransfer = new StoreRelationTransfer();
105
        $storeRelationTransfer->setIdEntity(1);
106
        $storeRelationTransfer->setIdStores($idStores);
107
108
        $cmsPageAttributesTransfer = new CmsPageAttributesTransfer();
109
        $cmsPageAttributesTransfer->setIdCmsPageLocalizedAttributes(1);
110
        $cmsPageAttributesTransfer->setUrl('/en/english');
111
        $cmsPageAttributesTransfer->setName('english name');
112
        $cmsPageAttributesTransfer->setFkLocale(1);
113
        $cmsPageAttributesTransfer->setIdCmsPage(1);
114
        $cmsPageTransfer->setStoreRelation($storeRelationTransfer);
115
116
        $cmsPageTransfer->addPageAttribute($cmsPageAttributesTransfer);
117
118
        $cmsPageTransfer = $cmsPageSaverMock->updatePage($cmsPageTransfer);
119
120
        $cmsPageAttributesEntity = $cmsPageEntityMock->getSpyCmsPageLocalizedAttributess()[0];
121
        $this->assertEquals($cmsPageAttributesEntity->getName(), $cmsPageAttributesTransfer->getName());
122
        $this->assertSame($urlEntity->getUrl(), $cmsPageAttributesTransfer->getUrlPrefix());
123
        $this->assertEquals($cmsPageTransfer->getStoreRelation()->getIdStores(), $idStores);
124
    }
125
126
    /**
127
     * @param \Spryker\Zed\Url\Business\UrlFacadeInterface|null $urlFacadeMock
128
     * @param \Spryker\Zed\Cms\Dependency\Facade\CmsToTouchFacadeInterface|null $touchFacadeMock
129
     * @param \Spryker\Zed\Cms\Persistence\CmsQueryContainerInterface|null $cmsQueryContainerMock
130
     * @param \Spryker\Zed\Cms\Business\Page\CmsPageUrlBuilderInterface|null $cmsPageUrlBuilderMock
131
     * @param \Spryker\Zed\Cms\Business\Mapping\CmsGlossarySaverInterface|null $cmsGlossarySaverMock
132
     * @param \Spryker\Zed\Cms\Business\Template\TemplateManagerInterface|null $templateManagerMock
133
     * @param \Spryker\Zed\Cms\Business\Page\Store\CmsPageStoreRelationWriterInterface|null $cmsPageStoreRelationWriterMock
134
     *
135
     * @return \PHPUnit\Framework\MockObject\MockObject|\Spryker\Zed\Cms\Business\Page\CmsPageSaver
136
     */
137
    protected function createCmsPageSaverMock(
138
        ?UrlFacadeInterface $urlFacadeMock = null,
139
        ?CmsToTouchFacadeInterface $touchFacadeMock = null,
140
        ?CmsQueryContainerInterface $cmsQueryContainerMock = null,
141
        ?CmsPageUrlBuilderInterface $cmsPageUrlBuilderMock = null,
142
        ?CmsGlossarySaverInterface $cmsGlossarySaverMock = null,
143
        ?TemplateManagerInterface $templateManagerMock = null,
144
        ?CmsPageStoreRelationWriterInterface $cmsPageStoreRelationWriterMock = null
145
    ): CmsPageSaver {
146
        if ($urlFacadeMock === null) {
147
            $urlFacadeMock = $this->createUrlFacadeMock();
148
        }
149
150
        if ($touchFacadeMock === null) {
151
            $touchFacadeMock = $this->createTouchFacadeMock();
152
        }
153
154
        if ($cmsQueryContainerMock === null) {
155
            $cmsQueryContainerMock = $this->createCmsQueryContainerMock();
156
        }
157
158
        if ($cmsPageUrlBuilderMock === null) {
159
            $cmsPageUrlBuilderMock = $this->createCmsPageUrlBuilderMock();
160
        }
161
162
        if ($cmsGlossarySaverMock === null) {
163
            $cmsGlossarySaverMock = $this->createCmsGlossarySaverMock();
164
        }
165
166
        if ($templateManagerMock === null) {
167
            $templateManagerMock = $this->createTemplateManagerMock();
168
        }
169
170
        if ($cmsPageStoreRelationWriterMock === null) {
171
            $cmsPageStoreRelationWriterMock = $this->createCmsPageStoreRelationWriterMock();
172
        }
173
174
        $templateManagerMock->expects($this->any())
0 ignored issues
show
The method expects() does not exist on Spryker\Zed\Cms\Business...emplateManagerInterface. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

174
        $templateManagerMock->/** @scrutinizer ignore-call */ 
175
                              expects($this->any())

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
175
            ->method('getTemplateById')
176
            ->willReturn((new CmsTemplateTransfer())->setTemplatePath('template_path'));
177
178
        return $this->getMockBuilder(CmsPageSaver::class)
179
            ->setConstructorArgs([
180
                $urlFacadeMock,
181
                $touchFacadeMock,
182
                $cmsQueryContainerMock,
183
                $cmsPageUrlBuilderMock,
184
                $cmsGlossarySaverMock,
185
                $templateManagerMock,
186
                $cmsPageStoreRelationWriterMock,
187
            ])
188
            ->setMethods([
189
                'getCmsPageEntity',
190
                'createCmsPageEntity',
191
                'createCmsPageLocalizedAttributesEntity',
192
                'checkTemplateFileExists',
193
            ])
194
            ->getMock();
195
    }
196
}
197