Issues (3641)

Zed/Content/Business/ContentFacadeTest.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\Content\Business;
9
10
use Codeception\Test\Unit;
11
use Generated\Shared\DataBuilder\ContentBuilder;
12
use Generated\Shared\Transfer\ContentTransfer;
13
use Generated\Shared\Transfer\LocalizedContentTransfer;
14
15
/**
16
 * Auto-generated group annotations
17
 *
18
 * @group SprykerTest
19
 * @group Zed
20
 * @group Content
21
 * @group Business
22
 * @group Facade
23
 * @group ContentFacadeTest
24
 * Add your own group annotations below this line
25
 */
26
class ContentFacadeTest extends Unit
27
{
28
    /**
29
     * @var string
30
     */
31
    protected const NAME = 'New name';
32
33
    /**
34
     * @var string
35
     */
36
    protected const PARAMETERS = '{"sku"}';
37
38
    /**
39
     * @var string
40
     */
41
    protected const DESCRIPTION = 'Test description';
42
43
    /**
44
     * @var string
45
     */
46
    protected const KEY = 'name-1';
47
48
    /**
49
     * @var \SprykerTest\Zed\Content\ContentBusinessTester
50
     */
51
    protected $tester;
52
53
    /**
54
     * @return void
55
     */
56
    public function testFindContentById(): void
57
    {
58
        $contentTransfer = $this->tester->haveContent();
59
        $foundContentTransfer = $this->tester->getFacade()->findContentById($contentTransfer->getIdContent());
60
61
        $this->assertNotNull($foundContentTransfer->getIdContent());
62
    }
63
64
    /**
65
     * @return void
66
     */
67
    public function testFindContentByKey(): void
68
    {
69
        $contentTransfer = $this->tester->haveContent();
70
        $foundContentTransfer = $this->tester->getFacade()->findContentByKey($contentTransfer->getKey());
71
72
        $this->assertNotNull($foundContentTransfer->getIdContent());
73
    }
74
75
    /**
76
     * @return void
77
     */
78
    public function testCreate(): void
79
    {
80
        $contentTransfer = (new ContentBuilder(
81
            [
82
                ContentTransfer::LOCALIZED_CONTENTS => [
83
                    [
84
                        LocalizedContentTransfer::PARAMETERS => '{}',
85
                    ],
86
                ],
87
                ContentTransfer::KEY => static::KEY,
88
            ],
89
        ))->build();
90
        $createdContentTransfer = $this->tester->getFacade()->create($contentTransfer);
91
92
        $this->assertNotNull($createdContentTransfer->getIdContent());
93
    }
94
95
    /**
96
     * @return void
97
     */
98
    public function testCreateContentWithProvidedKeyHasSameKey(): void
99
    {
100
        $contentTransfer = (new ContentBuilder(
101
            [
102
                ContentTransfer::LOCALIZED_CONTENTS => [
103
                    [
104
                        LocalizedContentTransfer::PARAMETERS => '{}',
105
                    ],
106
                ],
107
                ContentTransfer::KEY => static::KEY,
108
            ],
109
        ))->build();
110
        $createdContentTransfer = $this->tester->getFacade()->create($contentTransfer);
111
112
        $this->assertSame(static::KEY, $createdContentTransfer->getKey());
113
    }
114
115
    /**
116
     * @return void
117
     */
118
    public function testCreateContentWithEmptyKeyGeneratesKey(): void
119
    {
120
        $contentTransfer = (new ContentBuilder(
121
            [
122
                ContentTransfer::LOCALIZED_CONTENTS => [
123
                    [
124
                        LocalizedContentTransfer::PARAMETERS => '{}',
125
                    ],
126
                ],
127
            ],
128
        ))->build();
129
        $createdContentTransfer = $this->tester->getFacade()->create($contentTransfer);
130
131
        $this->assertNotNull($createdContentTransfer->getKey());
132
    }
133
134
    /**
135
     * @return void
136
     */
137
    public function testUpdate(): void
138
    {
139
        $contentTransfer = $this->tester->haveContent();
140
141
        $contentTransfer->setName(static::NAME);
142
        $contentTransfer->getLocalizedContents()[0]->setParameters(static::PARAMETERS);
143
144
        $this->tester->getFacade()->update($contentTransfer);
145
146
        $updatedContentTransfer = $this->tester->getFacade()->findContentById($contentTransfer->getIdContent());
147
148
        $this->assertSame($contentTransfer->getName(), $updatedContentTransfer->getName());
149
        $this->assertEquals(
150
            $contentTransfer->getLocalizedContents()[0]->getParameters(),
151
            $updatedContentTransfer->getLocalizedContents()[0]->getParameters(),
152
        );
153
    }
154
155
    /**
156
     * @return void
157
     */
158
    public function testValidateSuccess(): void
159
    {
160
        $contentTransfer = new ContentTransfer();
161
        $contentTransfer->setName(static::NAME);
162
        $contentTransfer->setDescription(static::DESCRIPTION);
163
        $contentTransfer->setKey(static::KEY);
164
165
        $validationResponse = $this->tester->getFacade()->validateContent($contentTransfer);
166
167
        $this->assertTrue($validationResponse->getIsSuccess());
168
    }
169
170
    /**
171
     * @return void
172
     */
173
    public function testValidateFailsOnEmptyName(): void
174
    {
175
        $contentTransfer = new ContentTransfer();
176
        $contentTransfer->setName('');
177
        $contentTransfer->setDescription(static::DESCRIPTION);
178
        $contentTransfer->setKey(static::KEY);
179
180
        $validationResponse = $this->tester->getFacade()->validateContent($contentTransfer);
181
182
        $this->assertFalse($validationResponse->getIsSuccess());
183
    }
184
185
    /**
186
     * @return void
187
     */
188
    public function testValidateFailsOnVeryLongDescription(): void
189
    {
190
        $contentTransfer = new ContentTransfer();
191
        $contentTransfer->setName(static::NAME);
192
        $contentTransfer->setDescription(str_repeat(static::DESCRIPTION, 100));
193
        $contentTransfer->setKey(static::KEY);
194
195
        $validationResponse = $this->tester->getFacade()->validateContent($contentTransfer);
196
197
        $this->assertFalse($validationResponse->getIsSuccess());
198
    }
199
200
    /**
201
     * @return void
202
     */
203
    public function testValidateFailsOnIncorrectlyFormattedKey(): void
204
    {
205
        $contentTransfer = new ContentTransfer();
206
        $contentTransfer->setName(static::NAME);
207
        $contentTransfer->setDescription(static::DESCRIPTION);
208
        $contentTransfer->setKey('Wrong-key');
209
210
        $validationResponse = $this->tester->getFacade()->validateContent($contentTransfer);
211
212
        $this->assertFalse($validationResponse->getIsSuccess());
213
    }
214
215
    /**
216
     * @return void
217
     */
218
    public function testGetContentByKeysReturnCorrectResult(): void
219
    {
220
        // Arrange
221
        $contentTransfer = $this->tester->haveContent();
222
223
        // Act
224
        $foundContentTransfers = $this->tester->getFacade()->getContentByKeys([$contentTransfer->getKey()]);
225
226
        // Assert
227
        $this->assertNotEmpty($foundContentTransfers);
228
        $this->assertEquals(
229
            $contentTransfer->getKey(),
230
            array_shift($foundContentTransfers)->getKey(),
231
        );
232
    }
233
234
    /**
235
     * @return void
236
     */
237
    public function testGetContentByKeysReturnEmptyArray(): void
238
    {
239
        // Arrange
240
        $contentTransfer = $this->tester->haveContent();
0 ignored issues
show
The assignment to $contentTransfer is dead and can be removed.
Loading history...
241
242
        // Act
243
        $foundContentTransfers = $this->tester->getFacade()->getContentByKeys([static::KEY]);
244
245
        // Assert
246
        $this->assertEmpty($foundContentTransfers);
247
    }
248
}
249