‪TYPO3CMS  11.5
TcaSlugTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
22 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
23 
27 class ‪TcaSlugTest extends UnitTestCase
28 {
30 
31  protected function ‪setUp(): void
32  {
33  parent::setUp();
34  $this->subject = new ‪TcaSlug();
35  }
36 
42  public function ‪resultArrayDataProvider(): array
43  {
44  return [
45  'Language default [0]' => [
46  [
47  'tableName' => 'aTable',
48  'site' => new ‪Site('www.foo.de', 0, [
49  'languages' => [
50  [
51  'languageId' => 0,
52  'locale' => 'en_US.UTF-8',
53  'base' => '/en/',
54  ],
55  [
56  'languageId' => 1,
57  'locale' => 'de_DE.UTF-8',
58  'base' => '/de/',
59  ],
60  ],
61  ]),
62  'databaseRow' => [
63  'sys_language_uid' => [0],
64  ],
65  'processedTca' => [
66  'ctrl' => [
67  'languageField' => 'sys_language_uid',
68  ],
69  'columns' => [
70  'slugField' => [
71  'config' => [
72  'type' => 'slug',
73  ],
74  ],
75  ],
76  ],
77  ],
78  [
79  'tableName' => 'aTable',
80  'site' => new ‪Site('www.foo.de', 0, [
81  'languages' => [
82  [
83  'languageId' => 0,
84  'locale' => 'en_US.UTF-8',
85  'base' => '/en/',
86  ],
87  [
88  'languageId' => 1,
89  'locale' => 'de_DE.UTF-8',
90  'base' => '/de/',
91  ],
92  ],
93  ]),
94  'databaseRow' => [
95  'sys_language_uid' => [0],
96  ],
97  'processedTca' => [
98  'ctrl' => [
99  'languageField' => 'sys_language_uid',
100  ],
101  'columns' => [
102  'slugField' => [
103  'config' => [
104  'type' => 'slug',
105  'appearance' => [
106  'prefix' => '/en',
107  ],
108  ],
109  ],
110  ],
111  ],
112  'customData' => [
113  'slugField' => [
114  'slugPrefix' => '/en',
115  ],
116  ],
117  ],
118  ],
119  'Language 1' => [
120  [
121  'tableName' => 'aTable',
122  'site' => new ‪Site('www.foo.de', 0, [
123  'languages' => [
124  [
125  'languageId' => 0,
126  'locale' => 'en_US.UTF-8',
127  'base' => '/en/',
128  ],
129  [
130  'languageId' => 1,
131  'locale' => 'de_DE.UTF-8',
132  'base' => '/de/',
133  ],
134  ],
135  ]),
136  'databaseRow' => [
137  'sys_language_uid' => [1],
138  ],
139  'processedTca' => [
140  'ctrl' => [
141  'languageField' => 'sys_language_uid',
142  ],
143  'columns' => [
144  'slugField' => [
145  'config' => [
146  'type' => 'slug',
147  ],
148  ],
149  ],
150  ],
151  ],
152  [
153  'tableName' => 'aTable',
154  'site' => new ‪Site('www.foo.de', 0, [
155  'languages' => [
156  [
157  'languageId' => 0,
158  'locale' => 'en_US.UTF-8',
159  'base' => '/en/',
160  ],
161  [
162  'languageId' => 1,
163  'locale' => 'de_DE.UTF-8',
164  'base' => '/de/',
165  ],
166  ],
167  ]),
168  'databaseRow' => [
169  'sys_language_uid' => [1],
170  ],
171  'processedTca' => [
172  'ctrl' => [
173  'languageField' => 'sys_language_uid',
174  ],
175  'columns' => [
176  'slugField' => [
177  'config' => [
178  'type' => 'slug',
179  'appearance' => [
180  'prefix' => '/de',
181  ],
182  ],
183  ],
184  ],
185  ],
186  'customData' => [
187  'slugField' => [
188  'slugPrefix' => '/de',
189  ],
190  ],
191  ],
192  ],
193  'Language -1' => [
194  [
195  'tableName' => 'aTable',
196  'site' => new ‪Site('www.foo.de', 0, [
197  'languages' => [
198  [
199  'languageId' => 0,
200  'locale' => 'en_US.UTF-8',
201  'base' => '/en/',
202  ],
203  [
204  'languageId' => 1,
205  'locale' => 'de_DE.UTF-8',
206  'base' => '/de/',
207  ],
208  ],
209  ]),
210  'databaseRow' => [
211  'sys_language_uid' => [-1],
212  ],
213  'processedTca' => [
214  'ctrl' => [
215  'languageField' => 'sys_language_uid',
216  ],
217  'columns' => [
218  'slugField' => [
219  'config' => [
220  'type' => 'slug',
221  ],
222  ],
223  ],
224  ],
225  ],
226  [
227  'tableName' => 'aTable',
228  'site' => new ‪Site('www.foo.de', 0, [
229  'languages' => [
230  [
231  'languageId' => 0,
232  'locale' => 'en_US.UTF-8',
233  'base' => '/en/',
234  ],
235  [
236  'languageId' => 1,
237  'locale' => 'de_DE.UTF-8',
238  'base' => '/de/',
239  ],
240  ],
241  ]),
242  'databaseRow' => [
243  'sys_language_uid' => [-1],
244  ],
245  'processedTca' => [
246  'ctrl' => [
247  'languageField' => 'sys_language_uid',
248  ],
249  'columns' => [
250  'slugField' => [
251  'config' => [
252  'type' => 'slug',
253  'appearance' => [
254  'prefix' => '/en',
255  ],
256  ],
257  ],
258  ],
259  ],
260  'customData' => [
261  'slugField' => [
262  'slugPrefix' => '/en',
263  ],
264  ],
265  ],
266  ],
267  'UserFunc' => [
268  [
269  'tableName' => 'aTable',
270  'site' => new ‪Site('www.foo.de', 0, [
271  'languages' => [
272  [
273  'languageId' => 0,
274  'locale' => 'en_US.UTF-8',
275  'base' => '/en/',
276  ],
277  [
278  'languageId' => 1,
279  'locale' => 'de_DE.UTF-8',
280  'base' => '/de/',
281  ],
282  ],
283  ]),
284  'databaseRow' => [
285  'sys_language_uid' => [0],
286  ],
287  'processedTca' => [
288  'ctrl' => [
289  'languageField' => 'sys_language_uid',
290  ],
291  'columns' => [
292  'slugField' => [
293  'config' => [
294  'type' => 'slug',
295  'appearance' => [
296  'prefix' => static function (array $parameters, ‪TcaSlug $reference): string {
297  return $parameters['site']->getIdentifier()
298  . '-'
299  . $parameters['languageId']
300  . '-'
301  . $parameters['table']
302  . '-'
303  . $parameters['row']['sys_language_uid'][0];
304  },
305  ],
306  ],
307  ],
308  ],
309  ],
310  ],
311  [
312  'tableName' => 'aTable',
313  'site' => new ‪Site('www.foo.de', 0, [
314  'languages' => [
315  [
316  'languageId' => 0,
317  'locale' => 'en_US.UTF-8',
318  'base' => '/en/',
319  ],
320  [
321  'languageId' => 1,
322  'locale' => 'de_DE.UTF-8',
323  'base' => '/de/',
324  ],
325  ],
326  ]),
327  'databaseRow' => [
328  'sys_language_uid' => [0],
329  ],
330  'processedTca' => [
331  'ctrl' => [
332  'languageField' => 'sys_language_uid',
333  ],
334  'columns' => [
335  'slugField' => [
336  'config' => [
337  'type' => 'slug',
338  'appearance' => [
339  'prefix' => 'www.foo.de-0-aTable-0',
340  ],
341  ],
342  ],
343  ],
344  ],
345  'customData' => [
346  'slugField' => [
347  'slugPrefix' => 'www.foo.de-0-aTable-0',
348  ],
349  ],
350  ],
351  ],
352  ];
353  }
354 
362  public function ‪getSlugPrefixForDefinedLanguagesAndUserFunc(array $input, array $expected): void
363  {
364  self::assertEquals($expected, $this->subject->addData($input));
365  }
366 }
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\TcaSlugTest
Definition: TcaSlugTest.php:28
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\TcaSlugTest\setUp
‪setUp()
Definition: TcaSlugTest.php:31
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\TcaSlugTest\getSlugPrefixForDefinedLanguagesAndUserFunc
‪getSlugPrefixForDefinedLanguagesAndUserFunc(array $input, array $expected)
Definition: TcaSlugTest.php:362
‪TYPO3\CMS\Core\Site\Entity\Site
Definition: Site.php:42
‪TYPO3\CMS\Backend\Form\FormDataProvider\TcaSlug
Definition: TcaSlug.php:28
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\TcaSlugTest\resultArrayDataProvider
‪array resultArrayDataProvider()
Definition: TcaSlugTest.php:42
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\TcaSlugTest\$subject
‪TcaSlug $subject
Definition: TcaSlugTest.php:29
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider
Definition: DatabaseDefaultLanguagePageRowTest.php:18