Issues (281)

Branch: master

Backend/Modules/Blog/Tests/Engine/ModelTest.php (1 issue)

1
<?php
2
3
namespace Backend\Modules\Blog\Tests\Engine;
4
5
use Backend\Modules\Blog\DataFixtures\LoadBlogCategories;
6
use Backend\Modules\Blog\DataFixtures\LoadBlogPostComments;
7
use Backend\Modules\Blog\DataFixtures\LoadBlogPosts;
8
use Backend\Modules\Blog\Engine\Model;
9
use Backend\Core\Tests\BackendWebTestCase;
10
use Symfony\Bundle\FrameworkBundle\Client;
11
12
class ModelTest extends BackendWebTestCase
13
{
14
    // comments
15
    public function testCreateComment(Client $client): void
16
    {
17
        $this->loadFixtures(
18
            $client,
19
            [
20
                LoadBlogCategories::class,
21
                LoadBlogPosts::class,
22
            ]
23
        );
24
25
        $commentData = [
26
            'post_id' => LoadBlogPosts::BLOG_POST_ID,
27
            'language' => 'en',
28
            'created_on' => '2020-01-01 13:37:00',
29
            'author' => 'Elon Musk',
30
            'email' => '[email protected]',
31
            'website' => 'http://example.org',
32
            'text' => 'I really like this CMS',
33
            'type' => 'comment',
34
            'status' => 'published',
35
            'data' => 'a:1:{s:6:"server";a:1:{s:3:"foo";s:3:"bar";}}',
36
        ];
37
        $id = Model::insertComment($commentData);
38
39
        $addedComment = Model::getComment($id);
40
41
        self::assertEquals($id, $addedComment['id']);
42
        self::assertEquals($commentData['post_id'], $addedComment['post_id']);
43
        self::assertEquals($commentData['language'], $addedComment['language']);
44
        self::assertEquals($commentData['author'], $addedComment['author']);
45
        self::assertEquals($commentData['email'], $addedComment['email']);
46
        self::assertEquals($commentData['website'], $addedComment['website']);
47
        self::assertEquals($commentData['text'], $addedComment['text']);
48
        self::assertEquals($commentData['type'], $addedComment['type']);
49
        self::assertEquals($commentData['status'], $addedComment['status']);
50
        self::assertEquals($commentData['data'], $addedComment['data']);
51
        self::assertEquals(LoadBlogPosts::BLOG_POST_TITLE, $addedComment['post_title']);
52
    }
53
54
    public function testIfCommentExists(Client $client): void
55
    {
56
        $this->loadFixtures(
57
            $client,
58
            [
59
                LoadBlogCategories::class,
60
                LoadBlogPosts::class,
61
                LoadBlogPostComments::class,
62
            ]
63
        );
64
65
        self::assertTrue(Model::existsComment(1));
66
        self::assertFalse(Model::existsComment(2));
67
    }
68
69
    public function testUpdateComment(Client $client): void
70
    {
71
        $this->loadFixtures(
72
            $client,
73
            [
74
                LoadBlogCategories::class,
75
                LoadBlogPosts::class,
76
                LoadBlogPostComments::class,
77
            ]
78
        );
79
80
        $commentData = [
81
            'id' => LoadBlogPostComments::BLOG_POST_COMMENT_ID,
82
            'post_id' => LoadBlogPosts::BLOG_POST_ID,
83
            'language' => 'en',
84
            'created_on' => '2017-01-01 13:37:00',
85
            'author' => 'John Doe EDIT',
86
            'email' => '[email protected]',
87
            'website' => 'http://example.org',
88
            'text' => 'Lorem Ipsum EDIT',
89
            'type' => 'comment',
90
            'status' => 'published',
91
            'data' => serialize(['server' => ['foo' => 'bar edit']]),
92
        ];
93
94
        Model::updateComment($commentData);
95
96
        $editedComment = Model::getComment(LoadBlogPostComments::BLOG_POST_COMMENT_ID);
97
98
        self::assertEquals(LoadBlogPostComments::BLOG_POST_COMMENT_ID, $editedComment['id']);
99
        self::assertEquals($commentData['post_id'], $editedComment['post_id']);
100
        self::assertEquals($commentData['language'], $editedComment['language']);
101
        self::assertEquals($commentData['author'], $editedComment['author']);
102
        self::assertEquals($commentData['email'], $editedComment['email']);
103
        self::assertEquals($commentData['website'], $editedComment['website']);
104
        self::assertEquals($commentData['text'], $editedComment['text']);
105
        self::assertEquals($commentData['type'], $editedComment['type']);
106
        self::assertEquals($commentData['status'], $editedComment['status']);
107
        self::assertEquals($commentData['data'], $editedComment['data']);
108
        self::assertEquals(LoadBlogPosts::BLOG_POST_TITLE, $editedComment['post_title']);
109
    }
110
111
    public function testGettingAllComments(Client $client): void
112
    {
113
        $this->loadFixtures(
114
            $client,
115
            [
116
                LoadBlogCategories::class,
117
                LoadBlogPosts::class,
118
                LoadBlogPostComments::class,
119
            ]
120
        );
121
122
        $comments = Model::getAllCommentsForStatus('published');
123
124
        self::assertCount(1, $comments);
125
126
        $firstComment = $comments[0];
127
128
        self::assertEquals(1, $firstComment['post_id']);
129
        self::assertEquals(LoadBlogPostComments::BLOG_POST_COMMENT_DATA['post_id'], $firstComment['post_id']);
130
        self::assertEquals(
131
            (string) strtotime(LoadBlogPostComments::BLOG_POST_COMMENT_DATA['created_on'] . ' UTC'),
132
            $firstComment['created_on']
133
        );
134
        self::assertEquals(LoadBlogPostComments::BLOG_POST_COMMENT_DATA['author'], $firstComment['author']);
135
        self::assertEquals(LoadBlogPostComments::BLOG_POST_COMMENT_DATA['email'], $firstComment['email']);
136
        self::assertEquals(LoadBlogPostComments::BLOG_POST_COMMENT_DATA['website'], $firstComment['website']);
137
        self::assertEquals(LoadBlogPostComments::BLOG_POST_COMMENT_DATA['text'], $firstComment['text']);
138
        self::assertEquals(LoadBlogPostComments::BLOG_POST_COMMENT_DATA['type'], $firstComment['type']);
139
        self::assertEquals(LoadBlogPostComments::BLOG_POST_COMMENT_DATA['status'], $firstComment['status']);
140
        self::assertEquals(LoadBlogPosts::BLOG_POST_TITLE, $firstComment['post_title']);
141
        self::assertEquals(LoadBlogPosts::BLOG_POST_DATA['language'], $firstComment['post_language']);
142
    }
143
144
    public function testDeleteComment(Client $client): void
145
    {
146
        $this->loadFixtures(
147
            $client,
148
            [
149
                LoadBlogCategories::class,
150
                LoadBlogPosts::class,
151
                LoadBlogPostComments::class,
152
            ]
153
        );
154
155
        self::assertTrue(Model::existsComment(1));
156
        Model::deleteComments([1]);
157
        self::assertFalse(Model::existsComment(1));
158
    }
159
160
    // categories
161
    public function testCreateCategory(): void
162
    {
163
        $id = Model::insertCategory(
164
            LoadBlogCategories::BLOG_CATEGORY_DATA,
165
            LoadBlogCategories::BLOG_CATEGORY_META_DATA
166
        );
167
        $createdCategory = Model::getCategory($id);
168
169
        self::assertArrayHasKey('meta_id', $createdCategory);
170
        self::assertEquals($id, $createdCategory['id']);
171
        self::assertEquals(LoadBlogCategories::BLOG_CATEGORY_DATA['language'], $createdCategory['language']);
172
        self::assertEquals(LoadBlogCategories::BLOG_CATEGORY_DATA['title'], $createdCategory['title']);
173
    }
174
175
    public function testIfCategoryExists(Client $client): void
176
    {
177
        $this->loadFixtures(
178
            $client,
179
            [
180
                LoadBlogCategories::class,
181
            ]
182
        );
183
        self::assertTrue(Model::existsCategory(1));
184
        self::assertTrue(Model::existsCategory(2));
185
        self::assertFalse(Model::existsCategory(1337));
186
    }
187
188
    public function testUpdateCategory(Client $client): void
189
    {
190
        $this->loadFixtures(
191
            $client,
192
            [
193
                LoadBlogCategories::class,
194
            ]
195
        );
196
        $categoryMetaData = [
197
            'id' => LoadBlogCategories::getMetaId(),
198
            'keywords' => 'Believe me, I\'ve changed',
199
            'description' => 'Believe me, I\'ve changed',
200
            'title' => 'Believe me, I\'ve changed',
201
            'url' => 'believe-me-i-ve-changed',
202
        ];
203
204
        $newCategoryData = [
205
            'id' => LoadBlogCategories::getCategoryId(),
206
            'title' => 'Believe me, I\'ve changed',
207
            'language' => 'en',
208
        ];
209
        $category = Model::getCategory(LoadBlogCategories::getCategoryId());
210
        self::assertEquals($newCategoryData['id'], $category['id']);
211
        self::assertEquals($categoryMetaData['id'], $category['meta_id']);
212
        self::assertEquals($newCategoryData['language'], $category['language']);
213
        self::assertNotEquals($newCategoryData['title'], $category['title']);
214
215
        Model::updateCategory($newCategoryData, $categoryMetaData);
216
217
        $updatedCategory = Model::getCategory(LoadBlogCategories::getCategoryId());
218
219
        self::assertEquals($newCategoryData['id'], $updatedCategory['id']);
220
        self::assertEquals($categoryMetaData['id'], $updatedCategory['meta_id']);
221
        self::assertEquals($newCategoryData['language'], $updatedCategory['language']);
222
        self::assertEquals($newCategoryData['title'], $updatedCategory['title']);
223
    }
224
225
    public function testDeleteCategory(Client $client): void
226
    {
227
        $this->loadFixtures(
228
            $client,
229
            [
230
                LoadBlogCategories::class,
231
            ]
232
        );
233
234
        $id = LoadBlogCategories::getCategoryId();
235
236
        self::assertTrue(Model::existsCategory($id));
237
        Model::deleteCategory($id);
0 ignored issues
show
It seems like $id can also be of type null; however, parameter $id of Backend\Modules\Blog\Eng...Model::deleteCategory() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

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

237
        Model::deleteCategory(/** @scrutinizer ignore-type */ $id);
Loading history...
238
        self::assertFalse(Model::existsCategory($id));
239
    }
240
241
    public function testCalculatingCategoryUrl(Client $client): void
242
    {
243
        self::assertEquals(
244
            LoadBlogCategories::BLOG_CATEGORY_SLUG,
245
            Model::getUrlForCategory(LoadBlogCategories::BLOG_CATEGORY_SLUG)
246
        );
247
248
        $this->loadFixtures(
249
            $client,
250
            [
251
                LoadBlogCategories::class,
252
            ]
253
        );
254
255
        self::assertEquals(
256
            LoadBlogCategories::BLOG_CATEGORY_SLUG . '-2',
257
            Model::getUrlForCategory(LoadBlogCategories::BLOG_CATEGORY_SLUG)
258
        );
259
260
        // check if the same url is returned when we pass the id
261
        self::assertEquals(
262
            LoadBlogCategories::BLOG_CATEGORY_SLUG,
263
            Model::getUrlForCategory(
264
                LoadBlogCategories::BLOG_CATEGORY_SLUG,
265
                LoadBlogCategories::getCategoryId()
266
            )
267
        );
268
    }
269
}
270