diff --git a/app/code/Magento/ImportExport/Model/Import.php b/app/code/Magento/ImportExport/Model/Import.php index b7ba3196de4566950d45bc0a335310d77b6c6202..157887ec62c526458377d5d0103a992fab60a63d 100644 --- a/app/code/Magento/ImportExport/Model/Import.php +++ b/app/code/Magento/ImportExport/Model/Import.php @@ -605,7 +605,10 @@ class Import extends \Magento\ImportExport\Model\AbstractModel foreach (array_keys($relatedIndexers) as $indexerId) { try { $indexer = $this->indexerRegistry->get($indexerId); - $indexer->invalidate(); + + if (!$indexer->isScheduled()) { + $indexer->invalidate(); + } } catch (\InvalidArgumentException $e) { } } diff --git a/app/code/Magento/ImportExport/Test/Unit/Model/ImportTest.php b/app/code/Magento/ImportExport/Test/Unit/Model/ImportTest.php index f39acf7add05dc30cc91e56e2fbb7e1e7d6a6fd2..4c175b64924b951465ba9d512900e56570180ad4 100644 --- a/app/code/Magento/ImportExport/Test/Unit/Model/ImportTest.php +++ b/app/code/Magento/ImportExport/Test/Unit/Model/ImportTest.php @@ -5,6 +5,9 @@ */ namespace Magento\ImportExport\Test\Unit\Model; +use Magento\Framework\Indexer\IndexerInterface; +use Magento\ImportExport\Model\Import; + /** * Class ImportTest * @package Magento\ImportExport\Test\Unit\Model @@ -126,7 +129,7 @@ class ImportTest extends \Magento\ImportExport\Test\Unit\Model\Import\AbstractIm ->getMock(); $this->_importConfig = $this->getMockBuilder(\Magento\ImportExport\Model\Import\Config::class) ->disableOriginalConstructor() - ->setMethods(['getEntityTypeCode', 'getBehavior', 'getEntities']) + ->setMethods(['getEntityTypeCode', 'getBehavior', 'getEntities', 'getRelatedIndexers']) ->getMockForAbstractClass(); $this->_entityFactory = $this->getMockBuilder(\Magento\ImportExport\Model\Import\Entity\Factory::class) ->disableOriginalConstructor() @@ -419,12 +422,90 @@ class ImportTest extends \Magento\ImportExport\Test\Unit\Model\Import\AbstractIm $this->markTestIncomplete('This test has not been implemented yet.'); } - /** - * @todo to implement it. - */ public function testInvalidateIndex() { - $this->markTestIncomplete('This test has not been implemented yet.'); + $indexers = [ + 'indexer_1' => 'indexer_1', + 'indexer_2' => 'indexer_2' + ]; + $indexer1 = $this->getMockBuilder(IndexerInterface::class) + ->getMockForAbstractClass(); + $indexer2 = clone $indexer1; + $logger = $this->getMockBuilder(\Psr\Log\LoggerInterface::class) + ->disableOriginalConstructor() + ->getMock(); + + $indexer1->expects($this->once()) + ->method('isScheduled') + ->willReturn(true); + $indexer1->expects($this->never()) + ->method('invalidate'); + $indexer2->expects($this->once()) + ->method('isScheduled') + ->willReturn(false); + $indexer2->expects($this->once()) + ->method('invalidate'); + + $this->_importConfig->expects($this->atLeastOnce()) + ->method('getRelatedIndexers') + ->willReturn($indexers); + $this->indexerRegistry->expects($this->any()) + ->method('get') + ->willReturnMap([ + ['indexer_1', $indexer1], + ['indexer_2', $indexer2], + ]); + + $import = new Import( + $logger, + $this->_filesystem, + $this->_importExportData, + $this->_coreConfig, + $this->_importConfig, + $this->_entityFactory, + $this->_importData, + $this->_csvFactory, + $this->_httpFactory, + $this->_uploaderFactory, + $this->_behaviorFactory, + $this->indexerRegistry, + $this->historyModel, + $this->dateTime + ); + + $import->setEntity('test'); + $import->invalidateIndex(); + } + + public function testInvalidateIndexWithoutIndexers() + { + $this->_importConfig->expects($this->once()) + ->method('getRelatedIndexers') + ->willReturn([]); + + $logger = $this->getMockBuilder(\Psr\Log\LoggerInterface::class) + ->disableOriginalConstructor() + ->getMock(); + + $import = new Import( + $logger, + $this->_filesystem, + $this->_importExportData, + $this->_coreConfig, + $this->_importConfig, + $this->_entityFactory, + $this->_importData, + $this->_csvFactory, + $this->_httpFactory, + $this->_uploaderFactory, + $this->_behaviorFactory, + $this->indexerRegistry, + $this->historyModel, + $this->dateTime + ); + + $import->setEntity('test'); + $this->assertSame($import, $import->invalidateIndex()); } /** diff --git a/dev/tests/integration/testsuite/Magento/Framework/Backup/FilesystemTest.php b/dev/tests/integration/testsuite/Magento/Framework/Backup/FilesystemTest.php new file mode 100644 index 0000000000000000000000000000000000000000..a28a92d9658d60dd804d8a900e231bf79f23cb62 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Framework/Backup/FilesystemTest.php @@ -0,0 +1,50 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Framework\Backup; + +use \Magento\TestFramework\Helper\Bootstrap; +use \Magento\Framework\App\Filesystem\DirectoryList; + +class FilesystemTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Framework\ObjectManagerInterface + */ + private $objectManager; + + /** + * @var \Magento\Framework\Backup\Filesystem + */ + private $filesystem; + + protected function setUp() + { + $this->objectManager = Bootstrap::getObjectManager(); + $this->filesystem = $this->objectManager->create(\Magento\Framework\Backup\Filesystem::class); + } + + /** + * @magentoAppIsolation enabled + */ + public function testRollback() + { + $rootDir = Bootstrap::getInstance()->getAppTempDir() + . '/rollback_test_' . time(); + $backupsDir = __DIR__ . '/_files/var/backups'; + $fileName = 'test.txt'; + + mkdir($rootDir); + + $this->filesystem->setRootDir($rootDir) + ->setBackupsDir($backupsDir) + ->setTime(1474538269) + ->setName('code') + ->setBackupExtension('tgz'); + + $this->assertTrue($this->filesystem->rollback()); + $this->assertTrue(file_exists($rootDir . '/' . $fileName)); + } +} diff --git a/dev/tests/integration/testsuite/Magento/Framework/Backup/_files/var/backups/1474538269_filesystem_code.tgz b/dev/tests/integration/testsuite/Magento/Framework/Backup/_files/var/backups/1474538269_filesystem_code.tgz new file mode 100644 index 0000000000000000000000000000000000000000..6e972c35672a8fbee6f29c71c415648b410275f1 Binary files /dev/null and b/dev/tests/integration/testsuite/Magento/Framework/Backup/_files/var/backups/1474538269_filesystem_code.tgz differ diff --git a/dev/tests/integration/testsuite/Magento/Framework/Image/Adapter/InterfaceTest.php b/dev/tests/integration/testsuite/Magento/Framework/Image/Adapter/InterfaceTest.php index 341b710d5a82f3bf15c831650663345be000c761..324e93770f048d3e76eca7bc9d7219132808f562 100644 --- a/dev/tests/integration/testsuite/Magento/Framework/Image/Adapter/InterfaceTest.php +++ b/dev/tests/integration/testsuite/Magento/Framework/Image/Adapter/InterfaceTest.php @@ -547,6 +547,9 @@ class InterfaceTest extends \PHPUnit_Framework_TestCase */ public function testCreatePngFromString($pixel1, $expectedColor1, $pixel2, $expectedColor2, $adapterType) { + if (!function_exists('imagettfbbox')) { + $this->markTestSkipped('Workaround for problem with imagettfbbox() function on Travis'); + } $adapter = $this->_getAdapter($adapterType); /** @var \Magento\Framework\Filesystem\Directory\ReadFactory readFactory */ diff --git a/lib/internal/Magento/Framework/Backup/Filesystem.php b/lib/internal/Magento/Framework/Backup/Filesystem.php index 2d77fa164b0a4ec228288a011de95e3c3ea5dee8..7fe469441eeaf6bd53a5144a5180669ff47b4583 100644 --- a/lib/internal/Magento/Framework/Backup/Filesystem.php +++ b/lib/internal/Magento/Framework/Backup/Filesystem.php @@ -316,7 +316,7 @@ class Filesystem extends AbstractBackup if (!$this->rollBackFtp) { $this->rollBackFtp = ObjectManager::getInstance()->create( \Magento\Framework\Backup\Filesystem\Rollback\Ftp::class, - [$this] + ['snapshotObject' => $this] ); } @@ -332,7 +332,7 @@ class Filesystem extends AbstractBackup if (!$this->rollBackFs) { $this->rollBackFs = ObjectManager::getInstance()->create( \Magento\Framework\Backup\Filesystem\Rollback\Fs::class, - [$this] + ['snapshotObject' => $this] ); }