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