2 declare(strict_types = 1);
19 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
39 protected function setUp():
void
41 $GLOBALS[
'TYPO3_CONF_VARS'][
'SYS'][
'defaultCategorizedTables'] =
'pages';
42 $GLOBALS[
'TCA'][
'pages'][
'columns'] = [];
45 'first' => $this->getUniqueId(
'first'),
46 'second' => $this->getUniqueId(
'second')
48 foreach ($this->tables as $tableName) {
69 $this->assertTrue($this->subject->add(
'test_extension_a', $this->tables[
'first'],
'categories'));
77 $this->assertTrue($this->subject->add(
'test_extension_a', $this->tables[
'first'],
'categories'));
78 $this->assertFalse($this->subject->add(
'test_extension_a', $this->tables[
'first'],
'categories'));
86 $this->expectException(\InvalidArgumentException::class);
87 $this->expectExceptionCode(1369122038);
89 $this->subject->add(
'test_extension_a',
'',
'categories');
97 $this->expectException(\InvalidArgumentException::class);
98 $this->expectExceptionCode(1397836158);
100 $this->subject->add(
'',
'foo',
'categories');
108 $this->expectException(\InvalidArgumentException::class);
109 $this->expectExceptionCode(1369122038);
111 $this->subject->add(
'test_extension_a',
'',
'categories');
119 $this->expectException(\InvalidArgumentException::class);
120 $this->expectExceptionCode(1397836158);
122 $this->subject->add(
'',
'foo',
'categories');
130 $this->subject->add(
'test_extension_a', $this->tables[
'first'],
'categories');
131 $this->subject->add(
'test_extension_a', $this->tables[
'second'],
'categories');
132 $this->subject->applyTcaForPreRegisteredTables();
134 $this->assertArrayHasKey(
'categories',
$GLOBALS[
'TCA'][$this->tables[
'first']][
'columns']);
135 $this->assertArrayHasKey(
'categories',
$GLOBALS[
'TCA'][$this->tables[
'second']][
'columns']);
143 $this->subject->add(
'test_extension_a', $this->tables[
'first'],
'categories');
144 $this->subject->add(
'test_extension_b', $this->tables[
'second'],
'categories');
145 $this->subject->applyTcaForPreRegisteredTables();
147 $this->assertArrayHasKey(
'categories',
$GLOBALS[
'TCA'][$this->tables[
'first']][
'columns']);
148 $this->assertArrayHasKey(
'categories',
$GLOBALS[
'TCA'][$this->tables[
'second']][
'columns']);
156 $this->subject->add(
'test_extension_a', $this->tables[
'first'],
'categories1');
157 $this->subject->add(
'test_extension_b', $this->tables[
'first'],
'categories2');
158 $this->subject->applyTcaForPreRegisteredTables();
160 $this->assertArrayHasKey(
'categories1',
$GLOBALS[
'TCA'][$this->tables[
'first']][
'columns']);
161 $this->assertArrayHasKey(
'categories2',
$GLOBALS[
'TCA'][$this->tables[
'first']][
'columns']);
169 $this->subject->add(
'test_extension_a', $this->tables[
'first'],
'categories1');
170 $this->subject->add(
'test_extension_a', $this->tables[
'first'],
'categories2');
171 $this->subject->applyTcaForPreRegisteredTables();
173 $this->assertArrayHasKey(
'categories1',
$GLOBALS[
'TCA'][$this->tables[
'first']][
'columns']);
174 $this->assertArrayHasKey(
'categories2',
$GLOBALS[
'TCA'][$this->tables[
'first']][
'columns']);
182 $this->subject->add(
'test_extension_a', $this->tables[
'first'],
'categories');
183 $this->subject->add(
'test_extension_b', $this->tables[
'second'],
'categories');
184 $this->subject->add(
'test_extension_c', $this->tables[
'first'],
'categories');
185 $definitions = $this->subject->getDatabaseTableDefinitions();
187 preg_match_all(
'#CREATE TABLE\\s*([^ (]+)\\s*\\(\\s*([^ )]+)\\s+int\\(11\\)[^)]+\\);#mis', $definitions, $matches);
188 $this->assertCount(2, $matches[0]);
189 $this->assertEquals($matches[1][0], $this->tables[
'first']);
190 $this->assertEquals($matches[2][0],
'categories');
191 $this->assertEquals($matches[1][1], $this->tables[
'second']);
192 $this->assertEquals($matches[2][1],
'categories');
200 $this->subject->add(
'test_extension_a', $this->tables[
'first'],
'categories');
201 $this->subject->add(
'test_extension_b', $this->tables[
'second'],
'categories');
202 $definitions = $this->subject->getDatabaseTableDefinition(
'test_extension_a');
204 preg_match_all(
'#CREATE TABLE\\s*([^ (]+)\\s*\\(\\s*([^ )]+)\\s+int\\(11\\)[^)]+\\);#mis', $definitions, $matches);
205 $this->assertCount(1, $matches[0]);
206 $this->assertEquals($matches[1][0], $this->tables[
'first']);
207 $this->assertEquals($matches[2][0],
'categories');
215 $GLOBALS[
'TYPO3_CONF_VARS'][
'SYS'][
'defaultCategorizedTables'] = $this->tables[
'first'] .
',' . $this->tables[
'second'];
216 $this->subject->applyTcaForPreRegisteredTables();
218 $this->assertArrayHasKey(
'categories',
$GLOBALS[
'TCA'][$this->tables[
'first']][
'columns']);
219 $this->assertArrayHasKey(
'categories',
$GLOBALS[
'TCA'][$this->tables[
'second']][
'columns']);
227 $this->subject->add(
'test_extension_a', $this->tables[
'first'],
'categories');
228 $this->subject->add(
'test_extension_b', $this->tables[
'second'],
'categories');
229 $this->subject->applyTcaForPreRegisteredTables();
231 $this->assertNotEmpty(
$GLOBALS[
'TCA'][$this->tables[
'first']][
'columns'][
'categories']);
232 $this->assertNotEmpty(
$GLOBALS[
'TCA'][$this->tables[
'second']][
'columns'][
'categories']);
240 $this->subject->add(
'test_extension_a', $this->tables[
'first'],
'categories');
241 $this->assertTrue($this->subject->isRegistered($this->tables[
'first'],
'categories'));
249 $this->subject->add(
'test_extension_a', $this->tables[
'first'],
'categories');
250 $this->assertFalse($this->subject->isRegistered($this->tables[
'first'],
'_not_registered'));
251 $this->assertFalse($this->subject->isRegistered($this->tables[
'second'],
'categories'));
259 $this->subject->add(
'text_extension_a', $this->tables[
'first']);
260 $this->subject->applyTcaForPreRegisteredTables();
262 foreach (
$GLOBALS[
'TCA'][$this->tables[
'first']][
'types'] as $typeConfig) {
263 $this->assertContains(
'--div--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_category.tabs.category', $typeConfig[
'showitem']);
272 $this->subject->add(
'text_extension_a', $this->tables[
'first'],
'categories', [
'fieldList' =>
'categories']);
273 $this->subject->applyTcaForPreRegisteredTables();
275 foreach (
$GLOBALS[
'TCA'][$this->tables[
'first']][
'types'] as $typeConfig) {
276 $this->assertNotContains(
'--div--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_category.tabs.category', $typeConfig[
'showitem']);
285 $this->subject->add(
'text_extension_a', $this->tables[
'first'],
'categories', [
'typesList' =>
'0']);
286 $this->subject->applyTcaForPreRegisteredTables();
287 $this->assertSame(
'',
$GLOBALS[
'TCA'][$this->tables[
'first']][
'types'][1][
'showitem']);
295 $this->subject->add(
'text_extension_a', $this->tables[
'first'],
'categories1');
296 $this->subject->add(
'text_extension_a', $this->tables[
'first'],
'categories2');
297 $this->subject->applyTcaForPreRegisteredTables();
299 foreach (
$GLOBALS[
'TCA'][$this->tables[
'first']][
'types'] as $typeConfig) {
302 substr_count($typeConfig[
'showitem'],
'--div--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_category.tabs.category')
312 $this->subject->add(
'text_extension_a', $this->tables[
'first'],
'categories1');
313 $result = $this->subject->add(
'text_extension_a', $this->tables[
'first'],
'categories1', [],
true);
314 $this->assertTrue($result);
322 $this->subject->add(
'text_extension_a', $this->tables[
'first'],
'categories1');
323 $GLOBALS[
'TCA'][$this->tables[
'first']][
'types'][
'newtypeafterfirstadd'] = [
'showitem' =>
''];
324 $this->subject->add(
'text_extension_a', $this->tables[
'first'],
'categories1', [],
true);
327 substr_count(
$GLOBALS[
'TCA'][$this->tables[
'first']][
'types'][
'newtypeafterfirstadd'][
'showitem'],
'--div--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_category.tabs.category')