‪TYPO3CMS  ‪main
TableBuilderTest.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 Doctrine\DBAL\Schema\ForeignKeyConstraint;
21 use Doctrine\DBAL\Schema\Index;
22 use Doctrine\DBAL\Schema\Table;
23 use Doctrine\DBAL\Types\IntegerType;
24 use Doctrine\DBAL\Types\SmallIntType;
25 use Doctrine\DBAL\Types\TextType;
30 use TYPO3\CMS\Core\Package\PackageManager;
31 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
32 
33 final class ‪TableBuilderTest extends UnitTestCase
34 {
35  protected bool ‪$resetSingletonInstances = true;
36 
37  protected ?Table ‪$table;
38 
39  protected function ‪setUp(): void
40  {
41  parent::setUp();
42  $sqlFile = file_get_contents(__DIR__ . '/../Fixtures/tablebuilder.sql');
43  $sqlReader = new ‪SqlReader(new ‪NoopEventDispatcher(), $this->createMock(PackageManager::class));
44  $statements = $sqlReader->getCreateTableStatementArray($sqlFile);
45 
46  ‪$parser = new ‪Parser(new ‪Lexer());
47  $this->table = ‪$parser->parse($statements[0])[0];
48  }
49 
53  public function ‪hasExpectedTableName(): void
54  {
55  self::assertSame('aTestTable', $this->table->getName());
56  }
57 
61  public function ‪hasExpectedTableEngine(): void
62  {
63  self::assertTrue($this->table->hasOption('engine'));
64  self::assertSame('MyISAM', $this->table->getOption('engine'));
65  }
66 
70  public function ‪hasExpectedTableCollation(): void
71  {
72  self::assertTrue($this->table->hasOption('charset'));
73  self::assertSame('latin1', $this->table->getOption('charset'));
74  }
75 
79  public function ‪hasExpectedTableCharacterSet(): void
80  {
81  self::assertTrue($this->table->hasOption('collate'));
82  self::assertSame('latin1_german_cs', $this->table->getOption('collate'));
83  }
84 
88  public function ‪hasExpectedTableRowFormat(): void
89  {
90  self::assertTrue($this->table->hasOption('row_format'));
91  self::assertSame('DYNAMIC', $this->table->getOption('row_format'));
92  }
93 
97  public function ‪hasExpectedTableAutoIncrementValue(): void
98  {
99  self::assertTrue($this->table->hasOption('auto_increment'));
100  self::assertSame('1', $this->table->getOption('auto_increment'));
101  }
102 
106  public function ‪isExpectedUidColumn(): void
107  {
108  $subject = $this->table->getColumn('uid');
109  self::assertInstanceOf(IntegerType::class, $subject->getType());
110  self::assertSame(11, $subject->getLength());
111  self::assertFalse($subject->getUnsigned());
112  self::assertTrue($subject->getNotnull());
113  self::assertNull($subject->getDefault());
114  self::assertTrue($subject->getAutoincrement());
115  }
116 
120  public function ‪isExpectedPidColumn(): void
121  {
122  $subject = $this->table->getColumn('pid');
123  self::assertInstanceOf(IntegerType::class, $subject->getType());
124  self::assertSame(11, $subject->getLength());
125  self::assertFalse($subject->getUnsigned());
126  self::assertTrue($subject->getNotnull());
127  self::assertFalse($subject->getAutoincrement());
128  self::assertSame('0', $subject->getDefault());
129  }
130 
134  public function ‪isExpectedTstampColumn(): void
135  {
136  $subject = $this->table->getColumn('tstamp');
137  self::assertInstanceOf(IntegerType::class, $subject->getType());
138  self::assertSame(11, $subject->getLength());
139  self::assertTrue($subject->getUnsigned());
140  self::assertTrue($subject->getNotnull());
141  self::assertFalse($subject->getAutoincrement());
142  self::assertSame('0', $subject->getDefault());
143  }
144 
148  public function ‪isExpectedSortingColumn(): void
149  {
150  $subject = $this->table->getColumn('sorting');
151  self::assertInstanceOf(IntegerType::class, $subject->getType());
152  self::assertSame(11, $subject->getLength());
153  self::assertTrue($subject->getUnsigned());
154  self::assertTrue($subject->getNotnull());
155  self::assertFalse($subject->getAutoincrement());
156  self::assertSame(0, $subject->getDefault());
157  }
158 
162  public function ‪isExpectedDeletedColumn(): void
163  {
164  $subject = $this->table->getColumn('deleted');
165  self::assertInstanceOf(SmallIntType::class, $subject->getType());
166  self::assertSame(1, $subject->getLength());
167  self::assertTrue($subject->getUnsigned());
168  self::assertTrue($subject->getNotnull());
169  self::assertFalse($subject->getAutoincrement());
170  self::assertSame('0', $subject->getDefault());
171  }
172 
176  public function ‪isExpectedTSconfigColumn(): void
177  {
178  $subject = $this->table->getColumn('TSconfig');
179  self::assertInstanceOf(TextType::class, $subject->getType());
180  self::assertSame(65535, $subject->getLength());
181  self::assertFalse($subject->getNotnull());
182  self::assertNull($subject->getDefault());
183  }
184 
188  public function ‪isExpectedNoCacheColumn(): void
189  {
190  $subject = $this->table->getColumn('no_cache');
191  self::assertInstanceOf(IntegerType::class, $subject->getType());
192  self::assertSame(10, $subject->getLength());
193  self::assertTrue($subject->getUnsigned());
194  self::assertTrue($subject->getNotnull());
195  self::assertFalse($subject->getAutoincrement());
196  self::assertSame('0', $subject->getDefault());
197  }
198 
202  public function ‪isExpectedPrimaryKey(): void
203  {
204  $subject = $this->table->getPrimaryKey();
205  self::assertInstanceOf(Index::class, $subject);
206  self::assertTrue($subject->isPrimary());
207  self::assertSame(['`uid`'], $subject->getColumns());
208  }
209 
213  public function ‪isExpectedParentKey(): void
214  {
215  $subject = $this->table->getIndex('parent');
216  self::assertInstanceOf(Index::class, $subject);
217  self::assertTrue($subject->isUnique());
218  self::assertSame(['`pid`', '`deleted`', '`sorting`'], $subject->getColumns());
219  }
220 
224  public function ‪isExpectedNoCacheKey(): void
225  {
226  $subject = $this->table->getIndex('noCache');
227  self::assertInstanceOf(Index::class, $subject);
228  self::assertTrue($subject->isSimpleIndex());
229  self::assertSame(['`no_cache`'], $subject->getColumns());
230  }
231 
235  public function ‪isExpectedForeignKey(): void
236  {
237  $subject = $this->table->getForeignKey('fk_overlay');
238  self::assertInstanceOf(ForeignKeyConstraint::class, $subject);
239  self::assertSame(['`pid`'], $subject->getForeignColumns());
240  self::assertSame(['`uid`'], $subject->getLocalColumns());
241  self::assertSame('aTestTable', $subject->getLocalTableName());
242  self::assertSame('any_foreign_table', $subject->getForeignTableName());
243  }
244 
248  public function ‪hasColumnLengthOnIndex(): void
249  {
250  $subject = $this->table->getIndex('substring');
251  self::assertSame(['`TSconfig`(80)'], $subject->getColumns());
252  }
253 }
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedPrimaryKey
‪isExpectedPrimaryKey()
Definition: TableBuilderTest.php:202
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedNoCacheKey
‪isExpectedNoCacheKey()
Definition: TableBuilderTest.php:224
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedTstampColumn
‪isExpectedTstampColumn()
Definition: TableBuilderTest.php:134
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasExpectedTableName
‪hasExpectedTableName()
Definition: TableBuilderTest.php:53
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasExpectedTableEngine
‪hasExpectedTableEngine()
Definition: TableBuilderTest.php:61
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\setUp
‪setUp()
Definition: TableBuilderTest.php:39
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasColumnLengthOnIndex
‪hasColumnLengthOnIndex()
Definition: TableBuilderTest.php:248
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedDeletedColumn
‪isExpectedDeletedColumn()
Definition: TableBuilderTest.php:162
‪$parser
‪$parser
Definition: annotationChecker.php:108
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedPidColumn
‪isExpectedPidColumn()
Definition: TableBuilderTest.php:120
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasExpectedTableCharacterSet
‪hasExpectedTableCharacterSet()
Definition: TableBuilderTest.php:79
‪TYPO3\CMS\Core\Database\Schema\SqlReader
Definition: SqlReader.php:31
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedParentKey
‪isExpectedParentKey()
Definition: TableBuilderTest.php:213
‪TYPO3\CMS\Core\Database\Schema\Parser\Parser
Definition: Parser.php:75
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: TableBuilderTest.php:35
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\$table
‪Table $table
Definition: TableBuilderTest.php:37
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedForeignKey
‪isExpectedForeignKey()
Definition: TableBuilderTest.php:235
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasExpectedTableRowFormat
‪hasExpectedTableRowFormat()
Definition: TableBuilderTest.php:88
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedTSconfigColumn
‪isExpectedTSconfigColumn()
Definition: TableBuilderTest.php:176
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedSortingColumn
‪isExpectedSortingColumn()
Definition: TableBuilderTest.php:148
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedNoCacheColumn
‪isExpectedNoCacheColumn()
Definition: TableBuilderTest.php:188
‪TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher
Definition: NoopEventDispatcher.php:29
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasExpectedTableCollation
‪hasExpectedTableCollation()
Definition: TableBuilderTest.php:70
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser
Definition: AbstractDataTypeBaseTestCase.php:18
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedUidColumn
‪isExpectedUidColumn()
Definition: TableBuilderTest.php:106
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasExpectedTableAutoIncrementValue
‪hasExpectedTableAutoIncrementValue()
Definition: TableBuilderTest.php:97
‪TYPO3\CMS\Core\Database\Schema\Parser\Lexer
Definition: Lexer.php:26
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest
Definition: TableBuilderTest.php:34