![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/Setup/Test/Unit/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\Setup\Test\Unit; use Magento\Framework\Component\ComponentRegistrar; use Magento\Framework\Setup\SchemaListener; use Magento\Framework\Setup\SchemaPersistor; use Magento\Framework\Setup\XmlPersistor; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; /** * Unit test for schema persistor. * */ class SchemaPersistorTest extends TestCase { /** * @var SchemaPersistor */ private $model; /** * @var ObjectManagerHelper */ private $objectManagerHelper; /** * @var ComponentRegistrar|MockObject */ private $componentRegistrarMock; /** * @var XmlPersistor|MockObject */ private $xmlPersistor; protected function setUp(): void { $this->componentRegistrarMock = $this->getMockBuilder(ComponentRegistrar::class) ->disableOriginalConstructor() ->getMock(); $this->xmlPersistor = $this->getMockBuilder(XmlPersistor::class) ->getMock(); $this->objectManagerHelper = new ObjectManagerHelper($this); $this->model = $this->objectManagerHelper->getObject( SchemaPersistor::class, [ 'componentRegistrar' => $this->componentRegistrarMock, 'xmlPersistor' => $this->xmlPersistor ] ); } /** * @dataProvider schemaListenerTablesDataProvider * @param array $tables * @param string $expectedXML */ public function testPersist(array $tables, $expectedXML) : void { $moduleName = 'First_Module'; /** @var SchemaListener|MockObject $schemaListenerMock */ $schemaListenerMock = $this->getMockBuilder(SchemaListener::class) ->disableOriginalConstructor() ->getMock(); $schemaListenerMock->expects(self::once()) ->method('getTables') ->willReturn($tables); $this->componentRegistrarMock->expects(self::once()) ->method('getPath') ->with('module', $moduleName) ->willReturn('some-non-existing-path'); $simpleXmlElement = new \SimpleXMLElement($expectedXML); $this->xmlPersistor ->expects(self::once()) ->method('persist') ->with($simpleXmlElement, 'some-non-existing-path/etc/db_schema.xml'); $this->model->persist($schemaListenerMock); } /** * Provide listened schema. * * @return array */ public function schemaListenerTablesDataProvider() : array { return [ [ 'schemaListenerTables' => [ 'First_Module' => [ 'first_table' => [ 'disabled' => false, 'name' => 'first_table', 'resource' => 'default', 'engine' => 'innodb', 'columns' => [ 'first_column' => [ 'name' => 'first_column', 'xsi:type' => 'integer', 'nullable' => 1, 'unsigned' => '0', ], 'second_column' => [ 'name' => 'second_column', 'xsi:type' => 'date', 'nullable' => 0, ] ], 'indexes' => [ 'TEST_INDEX' => [ 'name' => 'TEST_INDEX', 'indexType' => 'btree', 'columns' => [ 'first_column' ] ] ], 'constraints' => [ 'foreign' => [ 'some_foreign_constraint' => [ 'referenceTable' => 'table', 'referenceColumn' => 'column', 'table' => 'first_table', 'column' => 'first_column' ] ], 'primary' => [ 'PRIMARY' => [ 'xsi:type' => 'primary', 'name' => 'PRIMARY', 'columns' => [ 'second_column' ] ] ] ] ] ] ], // @codingStandardsIgnoreStart 'XMLResult' => '<?xml version="1.0"?> <schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd"> <table name="first_table" resource="default" engine="innodb"> <column xmlns:xsi="xsi" xsi:type="integer" name="first_column" nullable="1" unsigned="0"/> <column xmlns:xsi="xsi" xsi:type="date" name="second_column" nullable="0"/> <constraint xmlns:xsi="xsi" xsi:type="foreign" referenceId="some_foreign_constraint" referenceTable="table" referenceColumn="column" table="first_table" column="first_column"/> <constraint xmlns:xsi="xsi" xsi:type="primary" referenceId="PRIMARY"> <column name="second_column"/> </constraint> <index referenceId="TEST_INDEX" indexType="btree"> <column name="first_column"/> </index> </table> </schema>' // @codingStandardsIgnoreEnd ] ]; } }