40 private $objectManagerHelper;
45 private $elementFactoryMock;
50 private $booleanUtilsMock;
55 private $shardingMock;
60 private $validationCompositeMock;
65 private $resourceConnectionMock;
69 $this->elementFactoryMock = $this->getMockBuilder(ElementFactory::class)
70 ->disableOriginalConstructor()
72 $this->booleanUtilsMock = $this->getMockBuilder(BooleanUtils::class)
73 ->disableOriginalConstructor()
75 $this->shardingMock = $this->getMockBuilder(Sharding::class)
76 ->disableOriginalConstructor()
78 $this->validationCompositeMock = $this->getMockBuilder(ValidationComposite::class)
79 ->disableOriginalConstructor()
81 $this->resourceConnectionMock = $this->getMockBuilder(ResourceConnection::class)
82 ->disableOriginalConstructor()
85 $this->objectManagerHelper =
new ObjectManagerHelper($this);
86 $this->model = $this->objectManagerHelper->getObject(
87 \
Magento\Framework\Setup\Declaration\
Schema\Declaration\SchemaBuilder::class,
89 'elementFactory' => $this->elementFactoryMock,
91 'sharding' => $this->shardingMock,
92 'validationComposite' => $this->validationCompositeMock,
93 'resourceConnection' => $this->resourceConnectionMock
107 'name' =>
'first_table',
108 'engine' =>
'innodb',
109 'resource' =>
'default',
112 'name' =>
'first_column',
118 'foreign_column' => [
119 'name' =>
'foreign_column',
124 'some_disabled_column' => [
125 'name' =>
'some_disabled_column',
126 'disabled' =>
'true',
132 'name' =>
'second_column',
133 'type' =>
'timestamp',
134 'default' =>
'CURRENT_TIMESTAMP',
139 'some_foreign_key' => [
140 'name' =>
'some_foreign_key',
142 'column' =>
'foreign_column',
143 'table' =>
'first_table',
144 'referenceTable' =>
'second_table',
145 'referenceColumn' =>
'ref_column' 157 'name' =>
'second_table',
158 'engine' =>
'innodb',
159 'resource' =>
'default',
162 'name' =>
'ref_column',
170 'name' =>
'FIRST_INDEX',
188 private function createTable(
$name)
247 private function createPrimaryConstraint(
Table $table, array
$columns, $nameWithoutPrefix =
'PRIMARY')
267 private function createIndex($indexName,
Table $table, array
$columns, $nameWithoutPrefix =
null)
275 $nameWithoutPrefix ?: $indexName
288 return new Timestamp(
304 public function testBuild(array $tablesData)
306 $table = $this->createTable(
'first_table');
307 $refTable = $this->createTable(
'second_table');
308 $refColumn = $this->createIntegerColumn(
'ref_column', $refTable);
309 $index = $this->createIndex(
'PRE_FIRST_INDEX',
$table, [$refColumn],
'FIRST_INDEX');
310 $refTable->addColumns([$refColumn]);
311 $refTable->addIndexes([
$index]);
312 $firstColumn = $this->createIntegerAIColumn(
'first_column',
$table);
313 $foreignColumn = $this->createIntegerColumn(
'foreign_column',
$table);
314 $timestampColumn = $this->createTimestampColumn(
'second_column',
$table);
315 $primaryKey = $this->createPrimaryConstraint(
$table, [$firstColumn]);
316 $foreignKey =
new Reference(
326 $firstTableColumns = [$firstColumn, $foreignColumn, $timestampColumn];
327 $firstTableConstraints = [$foreignKey, $primaryKey];
328 $table->addColumns($firstTableColumns);
329 $table->addConstraints($firstTableConstraints);
330 $this->elementFactoryMock->expects(self::exactly(9))
332 ->willReturnOnConsecutiveCalls(
343 $resourceConnectionMock = $this->getMockBuilder(ResourceConnection::class)
344 ->disableOriginalConstructor()
347 $schema = $this->objectManagerHelper->getObject(
349 [
'resourceConnection' => $resourceConnectionMock]
351 $this->resourceConnectionMock->expects(self::once())
352 ->method(
'getTableName')
353 ->willReturn(
'second_table');
354 $resourceConnectionMock->expects(self::exactly(6))
355 ->method(
'getTableName')
364 ->willReturnOnConsecutiveCalls(
372 $this->model->addTablesData($tablesData);
if(!isset($_GET['name'])) $name