‪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;
26 use PHPUnit\Framework\Attributes\Test;
31 use TYPO3\CMS\Core\Package\PackageManager;
32 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
33 
34 final class ‪TableBuilderTest extends UnitTestCase
35 {
36  protected bool ‪$resetSingletonInstances = true;
37 
38  protected ?Table ‪$table;
39 
40  protected function ‪setUp(): void
41  {
42  parent::setUp();
43  $sqlFile = file_get_contents(__DIR__ . '/../Fixtures/tablebuilder.sql');
44  $sqlReader = new ‪SqlReader(new ‪NoopEventDispatcher(), $this->createMock(PackageManager::class));
45  $statements = $sqlReader->getCreateTableStatementArray($sqlFile);
46 
47  ‪$parser = new ‪Parser(new ‪Lexer());
48  $this->table = ‪$parser->parse($statements[0])[0];
49  }
50 
51  #[Test]
52  public function ‪hasExpectedTableName(): void
53  {
54  self::assertSame('aTestTable', $this->table->getName());
55  }
56 
57  #[Test]
58  public function ‪hasExpectedTableEngine(): void
59  {
60  self::assertTrue($this->table->hasOption('engine'));
61  self::assertSame('MyISAM', $this->table->getOption('engine'));
62  }
63 
64  #[Test]
65  public function ‪hasExpectedTableCollation(): void
66  {
67  self::assertTrue($this->table->hasOption('charset'));
68  self::assertSame('latin1', $this->table->getOption('charset'));
69  }
70 
71  #[Test]
72  public function ‪hasExpectedTableCharacterSet(): void
73  {
74  self::assertTrue($this->table->hasOption('collate'));
75  self::assertSame('latin1_german_cs', $this->table->getOption('collate'));
76  }
77 
78  #[Test]
79  public function ‪hasExpectedTableRowFormat(): void
80  {
81  self::assertTrue($this->table->hasOption('row_format'));
82  self::assertSame('DYNAMIC', $this->table->getOption('row_format'));
83  }
84 
85  #[Test]
86  public function ‪hasExpectedTableAutoIncrementValue(): void
87  {
88  self::assertTrue($this->table->hasOption('auto_increment'));
89  self::assertSame('1', $this->table->getOption('auto_increment'));
90  }
91 
92  #[Test]
93  public function ‪isExpectedUidColumn(): void
94  {
95  $subject = $this->table->getColumn('uid');
96  self::assertInstanceOf(IntegerType::class, $subject->getType());
97  self::assertSame(11, $subject->getLength());
98  self::assertFalse($subject->getUnsigned());
99  self::assertTrue($subject->getNotnull());
100  self::assertNull($subject->getDefault());
101  self::assertTrue($subject->getAutoincrement());
102  }
103 
104  #[Test]
105  public function ‪isExpectedPidColumn(): void
106  {
107  $subject = $this->table->getColumn('pid');
108  self::assertInstanceOf(IntegerType::class, $subject->getType());
109  self::assertSame(11, $subject->getLength());
110  self::assertFalse($subject->getUnsigned());
111  self::assertTrue($subject->getNotnull());
112  self::assertFalse($subject->getAutoincrement());
113  self::assertSame('0', $subject->getDefault());
114  }
115 
116  #[Test]
117  public function ‪isExpectedTstampColumn(): void
118  {
119  $subject = $this->table->getColumn('tstamp');
120  self::assertInstanceOf(IntegerType::class, $subject->getType());
121  self::assertSame(11, $subject->getLength());
122  self::assertTrue($subject->getUnsigned());
123  self::assertTrue($subject->getNotnull());
124  self::assertFalse($subject->getAutoincrement());
125  self::assertSame('0', $subject->getDefault());
126  }
127 
128  #[Test]
129  public function ‪isExpectedSortingColumn(): void
130  {
131  $subject = $this->table->getColumn('sorting');
132  self::assertInstanceOf(IntegerType::class, $subject->getType());
133  self::assertSame(11, $subject->getLength());
134  self::assertTrue($subject->getUnsigned());
135  self::assertTrue($subject->getNotnull());
136  self::assertFalse($subject->getAutoincrement());
137  self::assertSame(0, $subject->getDefault());
138  }
139 
140  #[Test]
141  public function ‪isExpectedDeletedColumn(): void
142  {
143  $subject = $this->table->getColumn('deleted');
144  self::assertInstanceOf(SmallIntType::class, $subject->getType());
145  self::assertSame(1, $subject->getLength());
146  self::assertTrue($subject->getUnsigned());
147  self::assertTrue($subject->getNotnull());
148  self::assertFalse($subject->getAutoincrement());
149  self::assertSame('0', $subject->getDefault());
150  }
151 
152  #[Test]
153  public function ‪isExpectedTSconfigColumn(): void
154  {
155  $subject = $this->table->getColumn('TSconfig');
156  self::assertInstanceOf(TextType::class, $subject->getType());
157  self::assertSame(65535, $subject->getLength());
158  self::assertFalse($subject->getNotnull());
159  self::assertNull($subject->getDefault());
160  }
161 
162  #[Test]
163  public function ‪isExpectedNoCacheColumn(): void
164  {
165  $subject = $this->table->getColumn('no_cache');
166  self::assertInstanceOf(IntegerType::class, $subject->getType());
167  self::assertSame(10, $subject->getLength());
168  self::assertTrue($subject->getUnsigned());
169  self::assertTrue($subject->getNotnull());
170  self::assertFalse($subject->getAutoincrement());
171  self::assertSame('0', $subject->getDefault());
172  }
173 
174  #[Test]
175  public function ‪isExpectedPrimaryKey(): void
176  {
177  $subject = $this->table->getPrimaryKey();
178  self::assertInstanceOf(Index::class, $subject);
179  self::assertTrue($subject->isPrimary());
180  self::assertSame(['`uid`'], $subject->getColumns());
181  }
182 
183  #[Test]
184  public function ‪isExpectedParentKey(): void
185  {
186  $subject = $this->table->getIndex('parent');
187  self::assertInstanceOf(Index::class, $subject);
188  self::assertTrue($subject->isUnique());
189  self::assertSame(['`pid`', '`deleted`', '`sorting`'], $subject->getColumns());
190  }
191 
192  #[Test]
193  public function ‪isExpectedNoCacheKey(): void
194  {
195  $subject = $this->table->getIndex('noCache');
196  self::assertInstanceOf(Index::class, $subject);
197  self::assertTrue($subject->isSimpleIndex());
198  self::assertSame(['`no_cache`'], $subject->getColumns());
199  }
200 
201  #[Test]
202  public function ‪isExpectedForeignKey(): void
203  {
204  $subject = $this->table->getForeignKey('fk_overlay');
205  self::assertInstanceOf(ForeignKeyConstraint::class, $subject);
206  self::assertSame(['`pid`'], $subject->getForeignColumns());
207  self::assertSame(['`uid`'], $subject->getLocalColumns());
208  self::assertSame('any_foreign_table', $subject->getForeignTableName());
209  }
210 
211  #[Test]
212  public function ‪hasColumnLengthOnIndex(): void
213  {
214  $subject = $this->table->getIndex('substring');
215  self::assertSame(['`TSconfig`(80)'], $subject->getColumns());
216  }
217 }
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedPrimaryKey
‪isExpectedPrimaryKey()
Definition: TableBuilderTest.php:175
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedNoCacheKey
‪isExpectedNoCacheKey()
Definition: TableBuilderTest.php:193
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedTstampColumn
‪isExpectedTstampColumn()
Definition: TableBuilderTest.php:117
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasExpectedTableName
‪hasExpectedTableName()
Definition: TableBuilderTest.php:52
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasExpectedTableEngine
‪hasExpectedTableEngine()
Definition: TableBuilderTest.php:58
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\setUp
‪setUp()
Definition: TableBuilderTest.php:40
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasColumnLengthOnIndex
‪hasColumnLengthOnIndex()
Definition: TableBuilderTest.php:212
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedDeletedColumn
‪isExpectedDeletedColumn()
Definition: TableBuilderTest.php:141
‪$parser
‪$parser
Definition: annotationChecker.php:103
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedPidColumn
‪isExpectedPidColumn()
Definition: TableBuilderTest.php:105
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasExpectedTableCharacterSet
‪hasExpectedTableCharacterSet()
Definition: TableBuilderTest.php:72
‪TYPO3\CMS\Core\Database\Schema\SqlReader
Definition: SqlReader.php:31
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedParentKey
‪isExpectedParentKey()
Definition: TableBuilderTest.php:184
‪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:36
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\$table
‪Table $table
Definition: TableBuilderTest.php:38
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedForeignKey
‪isExpectedForeignKey()
Definition: TableBuilderTest.php:202
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasExpectedTableRowFormat
‪hasExpectedTableRowFormat()
Definition: TableBuilderTest.php:79
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedTSconfigColumn
‪isExpectedTSconfigColumn()
Definition: TableBuilderTest.php:153
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedSortingColumn
‪isExpectedSortingColumn()
Definition: TableBuilderTest.php:129
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\isExpectedNoCacheColumn
‪isExpectedNoCacheColumn()
Definition: TableBuilderTest.php:163
‪TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher
Definition: NoopEventDispatcher.php:29
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasExpectedTableCollation
‪hasExpectedTableCollation()
Definition: TableBuilderTest.php:65
‪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:93
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest\hasExpectedTableAutoIncrementValue
‪hasExpectedTableAutoIncrementValue()
Definition: TableBuilderTest.php:86
‪TYPO3\CMS\Core\Database\Schema\Parser\Lexer
Definition: Lexer.php:26
‪TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\TableBuilderTest
Definition: TableBuilderTest.php:35