87 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.5 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\Declaration\ReaderComposite;
 | 
						|
use Magento\TestFramework\Deploy\TestModuleManager;
 | 
						|
use Magento\TestFramework\Helper\Bootstrap;
 | 
						|
use Magento\TestFramework\TestCase\SetupTestCase;
 | 
						|
 | 
						|
/**
 | 
						|
 * The purpose of this test is validating schema reader operations.
 | 
						|
 */
 | 
						|
class SchemaReaderTest extends SetupTestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var  \Magento\Framework\Setup\Declaration\Schema\FileSystem\XmlReader
 | 
						|
     */
 | 
						|
    private $reader;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var  TestModuleManager
 | 
						|
     */
 | 
						|
    private $moduleManager;
 | 
						|
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $objectManager = Bootstrap::getObjectManager();
 | 
						|
        $this->reader = $objectManager->get(ReaderComposite::class);
 | 
						|
        $this->moduleManager = $objectManager->get(TestModuleManager::class);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @moduleName Magento_TestSetupDeclarationModule1
 | 
						|
     * @dataProviderFromFile Magento/TestSetupDeclarationModule1/fixture/valid_xml_revision_1.php
 | 
						|
     */
 | 
						|
    public function testSuccessfullRead()
 | 
						|
    {
 | 
						|
        $schema = $this->reader->read('all');
 | 
						|
        unset($schema['table']['patch_list']);
 | 
						|
        self::assertEquals($this->getData(), $schema);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Helper method. Decrease number of params
 | 
						|
     *
 | 
						|
     * @param  string $revisionName
 | 
						|
     * @return void
 | 
						|
     */
 | 
						|
    private function updateRevisionTo($revisionName)
 | 
						|
    {
 | 
						|
        $this->moduleManager->updateRevision(
 | 
						|
            'Magento_TestSetupDeclarationModule1',
 | 
						|
            $revisionName,
 | 
						|
            TestModuleManager::DECLARATIVE_FILE_NAME,
 | 
						|
            'etc'
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @moduleName Magento_TestSetupDeclarationModule1
 | 
						|
     */
 | 
						|
    public function testFailOnInvalidColumnDeclaration()
 | 
						|
    {
 | 
						|
        $this->expectException(\Magento\Framework\Exception\LocalizedException::class);
 | 
						|
        $this->expectExceptionMessageMatches('/The attribute \'scale\' is not allowed./');
 | 
						|
 | 
						|
        $this->updateRevisionTo('fail_on_column_declaration');
 | 
						|
        $this->reader->read('all');
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @moduleName Magento_TestSetupDeclarationModule1
 | 
						|
     * @dataProviderFromFile Magento/TestSetupDeclarationModule1/fixture/foreign_key_interpreter_result.php
 | 
						|
     */
 | 
						|
    public function testForeignKeyInterpreter()
 | 
						|
    {
 | 
						|
        $this->updateRevisionTo('foreign_key_interpreter');
 | 
						|
        $schema = $this->reader->read('all');
 | 
						|
        unset($schema['table']['patch_list']);
 | 
						|
        self::assertEquals($this->getData(), $schema);
 | 
						|
    }
 | 
						|
}
 |