From 8e5aed23edaea3a866425beab8c12ad39481e27b Mon Sep 17 00:00:00 2001 From: Volodymyr Kholoshenko <vkholoshenko@ebay.com> Date: Tue, 22 Sep 2015 13:35:28 +0300 Subject: [PATCH] MAGETWO-42724: Import error: We can run the operation right now, see error log for details --- .../Model/Product/Plugin/Import.php | 14 ++++---- .../Unit/Model/Product/Plugin/ImportTest.php | 36 ++++++++++++++++++- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Product/Plugin/Import.php b/app/code/Magento/CatalogUrlRewrite/Model/Product/Plugin/Import.php index d83d347f4b6..45ac3244d56 100644 --- a/app/code/Magento/CatalogUrlRewrite/Model/Product/Plugin/Import.php +++ b/app/code/Magento/CatalogUrlRewrite/Model/Product/Plugin/Import.php @@ -320,12 +320,14 @@ class Import $urls = []; foreach ($this->products as $productId => $productsByStores) { foreach ($productsByStores as $storeId => $product) { - $urls[] = $this->urlRewriteFactory->create() - ->setEntityType(ProductUrlRewriteGenerator::ENTITY_TYPE) - ->setEntityId($productId) - ->setRequestPath($this->productUrlPathGenerator->getUrlPathWithSuffix($product, $storeId)) - ->setTargetPath($this->productUrlPathGenerator->getCanonicalUrlPath($product)) - ->setStoreId($storeId); + if ($this->productUrlPathGenerator->getUrlPath($product)) { + $urls[] = $this->urlRewriteFactory->create() + ->setEntityType(ProductUrlRewriteGenerator::ENTITY_TYPE) + ->setEntityId($productId) + ->setRequestPath($this->productUrlPathGenerator->getUrlPathWithSuffix($product, $storeId)) + ->setTargetPath($this->productUrlPathGenerator->getCanonicalUrlPath($product)) + ->setStoreId($storeId); + } } } diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Product/Plugin/ImportTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Product/Plugin/ImportTest.php index 296a19e9374..b462b7b6580 100644 --- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Product/Plugin/ImportTest.php +++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Product/Plugin/ImportTest.php @@ -670,7 +670,7 @@ class ImportTest extends \PHPUnit_Framework_TestCase /** * Cover canonicalUrlRewriteGenerate(). */ - public function testCanonicalUrlRewriteGenerate() + public function testCanonicalUrlRewriteGenerateWithUrlPath() { $productId = 'product_id'; $requestPath = 'simple-product.html'; @@ -691,6 +691,10 @@ class ImportTest extends \PHPUnit_Framework_TestCase ->expects($this->once()) ->method('getUrlPathWithSuffix') ->will($this->returnValue($requestPath)); + $this->productUrlPathGenerator + ->expects($this->once()) + ->method('getUrlPath') + ->will($this->returnValue('urlPath')); $this->productUrlPathGenerator ->expects($this->once()) ->method('getCanonicalUrlPath') @@ -734,6 +738,36 @@ class ImportTest extends \PHPUnit_Framework_TestCase ); } + /** + * Cover canonicalUrlRewriteGenerate(). + */ + public function testCanonicalUrlRewriteGenerateWithEmptyUrlPath() + { + $productId = 'product_id'; + $storeId = 10; + $product = $this + ->getMockBuilder('Magento\Catalog\Model\Product') + ->disableOriginalConstructor() + ->getMock(); + $productsByStores = [$storeId => $product]; + $products = [ + $productId => $productsByStores, + ]; + + $this->setPropertyValue($this->import, 'products', $products); + + $this->productUrlPathGenerator + ->expects($this->once()) + ->method('getUrlPath') + ->will($this->returnValue('')); + $this->urlRewriteFactory + ->expects($this->never()) + ->method('create'); + + $actualResult = $this->invokeMethod($this->import, 'canonicalUrlRewriteGenerate'); + $this->assertEquals([], $actualResult); + } + /** * Cover categoriesUrlRewriteGenerate(). */ -- GitLab