magento2-docker/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixtureModelTest.php

151 lines
4.6 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Setup\Fixtures;
use Magento\Framework\Indexer\IndexerRegistry;
use Magento\Indexer\Model\Config;
use Magento\TestFramework\Helper\Bootstrap;
/**
* Class Application test
*
* @magentoDbIsolation disabled
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class FixtureModelTest extends \Magento\TestFramework\Indexer\TestCase
{
/**
* Profile generator working directory
*
* @var string
*/
protected static $_generatorWorkingDir;
/**
* @var \Magento\Framework\ObjectManagerInterface
*/
private $objectManager;
/**
* @var array
*/
private $indexersState = [];
/**
* @var IndexerRegistry
*/
private $indexerRegistry;
/**
* @var array
*/
private $entityAsserts = [];
/**
* Set indexer mode to "scheduled" for do not perform reindex after creation entity
*/
protected function setUp(): void
{
$this->objectManager = Bootstrap::getObjectManager();
$this->indexerRegistry = $this->objectManager->get(IndexerRegistry::class);
$this->entityAsserts[] = $this->objectManager->get(FixturesAsserts\SimpleProductsAssert::class);
$this->entityAsserts[] = $this->objectManager->get(FixturesAsserts\ConfigurableProductsAssert::class);
$this->entityAsserts[] = $this->objectManager->get(FixturesAsserts\BundleProductsAssert::class);
$this->entityAsserts[] = $this->objectManager->get(FixturesAsserts\ImagesAssert::class);
foreach ($this->objectManager->get(Config::class)->getIndexers() as $indexerId) {
$indexer = $this->indexerRegistry->get($indexerId['indexer_id']);
$this->indexersState[$indexerId['indexer_id']] = $indexer->isScheduled();
$indexer->setScheduled(true);
}
}
/**
* Return indexer to previous state
*/
protected function tearDown(): void
{
foreach ($this->indexersState as $indexerId => $state) {
$indexer = $this->indexerRegistry->get($indexerId);
$indexer->setScheduled($state);
}
self::restoreFromDb();
self::$dbRestored = true;
}
public static function setUpBeforeClass(): void
{
$db = Bootstrap::getInstance()->getBootstrap()
->getApplication()
->getDbInstance();
if (!$db->isDbDumpExists()) {
throw new \LogicException('DB dump does not exist.');
}
$db->restoreFromDbDump();
self::$_generatorWorkingDir = realpath(
__DIR__ . '/../../../../../../../setup/src/Magento/Setup/Fixtures/_files'
);
copy(
self::$_generatorWorkingDir . '/tax_rates.csv',
self::$_generatorWorkingDir . '/tax_rates.csv.bak'
);
copy(
__DIR__ . '/_files/tax_rates.csv',
self::$_generatorWorkingDir . '/tax_rates.csv'
);
parent::setUpBeforeClass();
}
/**
* Generate test profile and performs assertions that generated entities are valid
*/
public function testFixtureGeneration()
{
$reindexCommand = Bootstrap::getObjectManager()->get(
\Magento\Indexer\Console\Command\IndexerReindexCommand::class
);
$itfApplication = Bootstrap::getInstance()->getBootstrap()->getApplication();
$model = new FixtureModel($reindexCommand, $itfApplication->getInitParams());
$model->loadConfig(__DIR__ . '/_files/small.xml');
$model->initObjectManager();
foreach ($model->loadFixtures()->getFixtures() as $fixture) {
$fixture->execute();
}
foreach ($this->entityAsserts as $entityAssert) {
try {
$this->assertTrue($entityAssert->assert());
} catch (\AssertionError $assertionError) {
$this->assertTrue(false, $assertionError->getMessage());
}
}
}
public static function tearDownAfterClass(): void
{
parent::tearDownAfterClass();
unlink(self::$_generatorWorkingDir . '/tax_rates.csv');
rename(
self::$_generatorWorkingDir . '/tax_rates.csv.bak',
self::$_generatorWorkingDir . '/tax_rates.csv'
);
/** @var $appCache \Magento\Framework\App\Cache */
$appCache = Bootstrap::getObjectManager()->get(\Magento\Framework\App\Cache::class);
$appCache->clean(
[
\Magento\Eav\Model\Cache\Type::CACHE_TAG,
\Magento\Eav\Model\Entity\Attribute::CACHE_TAG,
]
);
}
}