87 lines
2.9 KiB
PHP
Executable File
87 lines
2.9 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
namespace Magento\Setup;
|
|
|
|
use Magento\Framework\Setup\Declaration\Schema\Dto\Columns\Timestamp;
|
|
use Magento\Framework\Setup\Declaration\Schema\Dto\Constraints\Internal;
|
|
use Magento\Framework\Setup\Declaration\Schema\Dto\Constraints\Reference;
|
|
use Magento\Framework\Setup\Declaration\Schema\SchemaConfig;
|
|
use Magento\TestFramework\Deploy\CliCommand;
|
|
use Magento\TestFramework\Deploy\TestModuleManager;
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
use Magento\TestFramework\TestCase\SetupTestCase;
|
|
|
|
/**
|
|
* @magentoAppIsolation enabled
|
|
* The purpose of this test is verifying initial InstallSchema, InstallData scripts.
|
|
*/
|
|
class DeclarativeSchemaBuilderTest extends SetupTestCase
|
|
{
|
|
/**
|
|
* @var TestModuleManager
|
|
*/
|
|
private $moduleManager;
|
|
|
|
/**
|
|
* @var SchemaConfig
|
|
*/
|
|
private $schemaConfig;
|
|
|
|
/**
|
|
* @var CliCommand
|
|
*/
|
|
private $cliCommad;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
$objectManager = Bootstrap::getObjectManager();
|
|
$this->schemaConfig = $objectManager->create(SchemaConfig::class);
|
|
$this->moduleManager = $objectManager->get(TestModuleManager::class);
|
|
$this->cliCommad = $objectManager->get(CliCommand::class);
|
|
}
|
|
|
|
/**
|
|
* Tests primary key constraint conversion from XML and renamed functionality.
|
|
*
|
|
* @moduleName Magento_TestSetupDeclarationModule1
|
|
*/
|
|
public function testSchemaBuilder()
|
|
{
|
|
$this->cliCommad->install(
|
|
['Magento_TestSetupDeclarationModule1']
|
|
);
|
|
$dbSchema = $this->schemaConfig->getDeclarationConfig();
|
|
$schemaTables = $dbSchema->getTables();
|
|
self::assertArrayHasKey('reference_table', $dbSchema->getTables());
|
|
self::assertArrayHasKey('test_table', $dbSchema->getTables());
|
|
//Test primary key and renaming
|
|
$referenceTable = $schemaTables['reference_table'];
|
|
/**
|
|
* @var Internal $primaryKey
|
|
*/
|
|
$primaryKey = $referenceTable->getPrimaryConstraint();
|
|
$columns = $primaryKey->getColumns();
|
|
self::assertEquals('tinyint_ref', reset($columns)->getName());
|
|
//Test column
|
|
$testTable = $schemaTables['test_table'];
|
|
/**
|
|
* @var Timestamp $timestampColumn
|
|
*/
|
|
$timestampColumn = $testTable->getColumnByName('timestamp');
|
|
self::assertEquals('CURRENT_TIMESTAMP', $timestampColumn->getOnUpdate());
|
|
//Test disabled
|
|
self::assertArrayNotHasKey('varbinary_rename', $testTable->getColumns());
|
|
//Test foreign key
|
|
/**
|
|
* @var Reference $foreignKey
|
|
*/
|
|
$foreignKey = $testTable->getConstraintByName('TEST_TABLE_TINYINT_REFERENCE_TABLE_TINYINT_REF');
|
|
self::assertEquals('NO ACTION', $foreignKey->getOnDelete());
|
|
self::assertEquals('tinyint_ref', $foreignKey->getReferenceColumn()->getName());
|
|
}
|
|
}
|