133 lines
3.9 KiB
PHP
Executable File
133 lines
3.9 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
namespace Magento\Setup;
|
|
|
|
use Magento\Framework\Exception\LocalizedException;
|
|
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;
|
|
|
|
/**
|
|
* The purpose of this test is verifying initial InstallSchema, InstallData scripts.
|
|
*/
|
|
class ValidationRulesTest 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);
|
|
}
|
|
|
|
/**
|
|
* @moduleName Magento_TestSetupDeclarationModule8
|
|
*/
|
|
public function testFailOnInvalidPrimaryKey()
|
|
{
|
|
$this->expectException(LocalizedException::class);
|
|
$this->expectExceptionMessageMatches(
|
|
'/Primary key can`t be applied on table "test_table". All columns should be not nullable/'
|
|
);
|
|
|
|
$this->cliCommad->install(
|
|
['Magento_TestSetupDeclarationModule8']
|
|
);
|
|
$this->moduleManager->updateRevision(
|
|
'Magento_TestSetupDeclarationModule8',
|
|
'invalid_primary_key',
|
|
'db_schema.xml',
|
|
'etc'
|
|
);
|
|
|
|
$this->schemaConfig->getDeclarationConfig();
|
|
}
|
|
|
|
/**
|
|
* @moduleName Magento_TestSetupDeclarationModule8
|
|
*/
|
|
public function testFailOnIncosistentReferenceDefinition()
|
|
{
|
|
$this->expectException(LocalizedException::class);
|
|
$this->expectExceptionMessageMatches(
|
|
'/Column definition "page_id_on" and reference column definition "page_id"'
|
|
. ' are different in tables "dependent" and "test_table"/'
|
|
);
|
|
|
|
$this->cliCommad->install(
|
|
['Magento_TestSetupDeclarationModule8']
|
|
);
|
|
$this->moduleManager->updateRevision(
|
|
'Magento_TestSetupDeclarationModule8',
|
|
'incosistence_reference_definition',
|
|
'db_schema.xml',
|
|
'etc'
|
|
);
|
|
$this->schemaConfig->getDeclarationConfig();
|
|
}
|
|
|
|
/**
|
|
* @moduleName Magento_TestSetupDeclarationModule8
|
|
*/
|
|
public function testFailOnInconsistentReferenceTypeDefinition()
|
|
{
|
|
$this->expectException(LocalizedException::class);
|
|
$this->expectExceptionMessageMatches(
|
|
'/Column definition "page_id_on" and reference column definition "page_id"'
|
|
. ' are different in tables "dependent" and "test_table"/'
|
|
);
|
|
|
|
$this->cliCommad->install(
|
|
['Magento_TestSetupDeclarationModule8']
|
|
);
|
|
$this->moduleManager->updateRevision(
|
|
'Magento_TestSetupDeclarationModule8',
|
|
'inconsistent_reference_type_definition',
|
|
'db_schema.xml',
|
|
'etc'
|
|
);
|
|
$this->schemaConfig->getDeclarationConfig();
|
|
}
|
|
|
|
/**
|
|
* @moduleName Magento_TestSetupDeclarationModule8
|
|
*/
|
|
public function testFailOnInvalidAutoIncrementField()
|
|
{
|
|
$this->expectException(LocalizedException::class);
|
|
$this->expectExceptionMessageMatches('/Auto Increment column do not have index. Column - "page_id"/');
|
|
|
|
$this->cliCommad->install(
|
|
['Magento_TestSetupDeclarationModule8']
|
|
);
|
|
$this->moduleManager->updateRevision(
|
|
'Magento_TestSetupDeclarationModule8',
|
|
'invalid_auto_increment',
|
|
'db_schema.xml',
|
|
'etc'
|
|
);
|
|
$this->schemaConfig->getDeclarationConfig();
|
|
}
|
|
}
|