From 3bcdd349c770aa1fe6218b98f1f088975b7f8684 Mon Sep 17 00:00:00 2001 From: Roman Ganin Date: Sat, 11 Jun 2016 17:44:17 +0300 Subject: [PATCH 1/8] MAGETWO-54211: Downloadable product has direct link in category after update applied --- .../ProductProcessUrlRewriteSavingObserver.php | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php b/app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php index 2b7bfe017455b..6639437eab449 100644 --- a/app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php +++ b/app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php @@ -47,17 +47,18 @@ public function execute(\Magento\Framework\Event\Observer $observer) $product = $observer->getEvent()->getProduct(); $isChangedWebsites = $product->getIsChangedWebsites(); - if ($product->dataHasChangedFor('url_key') || $product->getIsChangedCategories() || $isChangedWebsites - || $product->dataHasChangedFor('visibility')) { - if ($isChangedWebsites) { + if ($product->dataHasChangedFor('url_key') + || $product->getIsChangedCategories() + || $isChangedWebsites + || $product->dataHasChangedFor('visibility') + ) { $this->urlPersist->deleteByData([ UrlRewrite::ENTITY_ID => $product->getId(), UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE, ]); - } - if (!in_array($product->getOrigData('visibility'), $product->getVisibleInSiteVisibilities())) { - $this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product)); - } + if (in_array($product->getVisibility(), $product->getVisibleInSiteVisibilities())) { + $this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product)); + } } } } From 7ed3a7d45a0b20735a48e676cb0708766a2320e4 Mon Sep 17 00:00:00 2001 From: Roman Ganin Date: Sat, 11 Jun 2016 18:24:07 +0300 Subject: [PATCH 2/8] MAGETWO-54211: Downloadable product has direct link in category after update applied --- .../ProductProcessUrlRewriteSavingObserver.php | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php b/app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php index 6639437eab449..13dffac83d7ce 100644 --- a/app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php +++ b/app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php @@ -52,13 +52,14 @@ public function execute(\Magento\Framework\Event\Observer $observer) || $isChangedWebsites || $product->dataHasChangedFor('visibility') ) { - $this->urlPersist->deleteByData([ - UrlRewrite::ENTITY_ID => $product->getId(), - UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE, - ]); - if (in_array($product->getVisibility(), $product->getVisibleInSiteVisibilities())) { - $this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product)); - } + $this->urlPersist->deleteByData([ + UrlRewrite::ENTITY_ID => $product->getId(), + UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE, + UrlRewrite::REDIRECT_TYPE => 0, + ]); + if (in_array($product->getVisibility(), $product->getVisibleInSiteVisibilities())) { + $this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product)); + } } } } From f32e362a0e8f32697fcbdb4002e4aa81fd8bdb9f Mon Sep 17 00:00:00 2001 From: Yaroslav Onischenko Date: Mon, 13 Jun 2016 12:01:14 +0300 Subject: [PATCH 3/8] MAGETWO-53139: Price of last customizable options add to price on product page --- app/code/Magento/Catalog/view/base/web/js/price-options.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Catalog/view/base/web/js/price-options.js b/app/code/Magento/Catalog/view/base/web/js/price-options.js index 66db2b1e515b0..04a34288e4c1a 100644 --- a/app/code/Magento/Catalog/view/base/web/js/price-options.js +++ b/app/code/Magento/Catalog/view/base/web/js/price-options.js @@ -76,7 +76,6 @@ define([ $(this.options.priceHolderSelector).trigger('updatePrice', changes); }, - /** * Helper to fix issue with option nodes: * - you can't place any html in option -> @@ -174,7 +173,10 @@ define([ break; case 'radio': - + if (element.is(':checked')) { + changes[optionHash] = optionConfig[optionValue] && optionConfig[optionValue].prices || {}; + } + break; case 'select-one': changes[optionHash] = optionConfig[optionValue] && optionConfig[optionValue].prices || {}; break; From 895efff8fa701eb2313d5302605b5c3c7fb0c9ac Mon Sep 17 00:00:00 2001 From: Stanislav Lopukhov Date: Mon, 13 Jun 2016 12:15:24 +0300 Subject: [PATCH 4/8] MAGETWO-54242: [Github] Magento2: Issue in pagination #3861 --- app/code/Magento/Catalog/Helper/Product/ProductList.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Catalog/Helper/Product/ProductList.php b/app/code/Magento/Catalog/Helper/Product/ProductList.php index 4a220a1051b0f..9c818969e73a8 100644 --- a/app/code/Magento/Catalog/Helper/Product/ProductList.php +++ b/app/code/Magento/Catalog/Helper/Product/ProductList.php @@ -18,7 +18,7 @@ class ProductList */ const XML_PATH_LIST_MODE = 'catalog/frontend/list_mode'; - const VIEW_MODE_LIST = 'view'; + const VIEW_MODE_LIST = 'list'; const VIEW_MODE_GRID = 'grid'; const DEFAULT_SORT_DIRECTION = 'asc'; From f509b9cb4f0aff029f6e5cb73a8d75b106925847 Mon Sep 17 00:00:00 2001 From: Volodymyr Zaets Date: Mon, 13 Jun 2016 13:04:14 +0300 Subject: [PATCH 5/8] MAGETWO-54186: Problem with js validation when adding product to shopping cart --- .../view/frontend/templates/product/view/addtocart.phtml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/view/addtocart.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/view/addtocart.phtml index 3f15701216005..c9680034e1e21 100644 --- a/app/code/Magento/Catalog/view/frontend/templates/product/view/addtocart.phtml +++ b/app/code/Magento/Catalog/view/frontend/templates/product/view/addtocart.phtml @@ -53,7 +53,9 @@ From dac45a7ffbd2f973750a968b6a7f5128b5ad092e Mon Sep 17 00:00:00 2001 From: Roman Ganin Date: Tue, 14 Jun 2016 16:43:33 +0300 Subject: [PATCH 6/8] MAGETWO-54211: Downloadable product has direct link in category after update applied --- ...ProductProcessUrlRewriteSavingObserver.php | 5 +- ...uctProcessUrlRewriteSavingObserverTest.php | 214 ++++++++++++++++++ 2 files changed, 216 insertions(+), 3 deletions(-) create mode 100644 app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php diff --git a/app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php b/app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php index 13dffac83d7ce..3929a4498ffa9 100644 --- a/app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php +++ b/app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php @@ -46,10 +46,9 @@ public function execute(\Magento\Framework\Event\Observer $observer) /** @var \Magento\Catalog\Model\Product $product */ $product = $observer->getEvent()->getProduct(); - $isChangedWebsites = $product->getIsChangedWebsites(); if ($product->dataHasChangedFor('url_key') || $product->getIsChangedCategories() - || $isChangedWebsites + || $product->getIsChangedWebsites() || $product->dataHasChangedFor('visibility') ) { $this->urlPersist->deleteByData([ @@ -57,7 +56,7 @@ public function execute(\Magento\Framework\Event\Observer $observer) UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE, UrlRewrite::REDIRECT_TYPE => 0, ]); - if (in_array($product->getVisibility(), $product->getVisibleInSiteVisibilities())) { + if ($product->isVisibleInSiteVisibility()) { $this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product)); } } diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php new file mode 100644 index 0000000000000..3c2748c52a28c --- /dev/null +++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php @@ -0,0 +1,214 @@ +urlPersist = $this->getMock(\Magento\UrlRewrite\Model\UrlPersistInterface::class, [], [], '', false); + $this->product = $this->getMock( + \Magento\Catalog\Model\Product::class, + [ + 'getId', + 'dataHasChangedFor', + 'isVisibleInSiteVisibility', + 'getIsChangedWebsites', + 'getIsChangedCategories' + ], + [], + '', + false + ); + $this->product->expects($this->any())->method('getId')->will($this->returnValue(3)); + $this->event = $this->getMock(\Magento\Framework\Event::class, ['getProduct'], [], '', false); + $this->event->expects($this->any())->method('getProduct')->willReturn($this->product); + $this->observer = $this->getMock(\Magento\Framework\Event\Observer::class, ['getEvent'], [], '', false); + $this->observer->expects($this->any())->method('getEvent')->willReturn($this->event); + $this->productUrlRewriteGenerator = $this->getMock( + \Magento\CatalogUrlRewrite\Model\ProductUrlRewriteGenerator::class, + ['generate'], + [], + '', + false + ); + $this->productUrlRewriteGenerator->expects($this->any()) + ->method('generate') + ->will($this->returnValue([3 => 'rewrite'])); + $this->objectManager = new ObjectManager($this); + $this->model = $this->objectManager->getObject( + \Magento\CatalogUrlRewrite\Observer\ProductProcessUrlRewriteSavingObserver::class, + [ + 'productUrlRewriteGenerator' => $this->productUrlRewriteGenerator, + 'urlPersist' => $this->urlPersist + ] + ); + } + + /** + * Data provider + * + * @return array + */ + public function testUrlKeyDataProvider() + { + return [ + 'url changed' => [ + 'isChangedUrlKey' => true, + 'isChangedVisibility' => false, + 'isChangedWebsites' => false, + 'isChangedCategories' => false, + 'visibilityResult' => true, + 'expectedDeleteCount' => 1, + 'expectedReplaceCount' => 1 + ], + 'no chnages' => [ + 'isChangedUrlKey' => false, + 'isChangedVisibility' => false, + 'isChangedWebsites' => false, + 'isChangedCategories' => false, + 'visibilityResult' => true, + 'expectedDeleteCount' => 0, + 'expectedReplaceCount' => 0 + ], + 'visibility changed' => [ + 'isChangedUrlKey' => false, + 'isChangedVisibility' => true, + 'isChangedWebsites' => false, + 'isChangedCategories' => false, + 'visibilityResult' => true, + 'expectedDeleteCount' => 1, + 'expectedReplaceCount' => 1 + ], + 'websites changed' => [ + 'isChangedUrlKey' => false, + 'isChangedVisibility' => false, + 'isChangedWebsites' => true, + 'isChangedCategories' => false, + 'visibilityResult' => true, + 'expectedDeleteCount' => 1, + 'expectedReplaceCount' => 1 + ], + 'categories changed' => [ + 'isChangedUrlKey' => false, + 'isChangedVisibility' => false, + 'isChangedWebsites' => false, + 'isChangedCategories' => true, + 'visibilityResult' => true, + 'expectedDeleteCount' => 1, + 'expectedReplaceCount' => 1 + ], + 'url changed invisible' => [ + 'isChangedUrlKey' => true, + 'isChangedVisibility' => false, + 'isChangedWebsites' => false, + 'isChangedCategories' => false, + 'visibilityResult' => false, + 'expectedDeleteCount' => 1, + 'expectedReplaceCount' => 0 + ], + ]; + } + + /** + * @param bool $isChangedUrlKey + * @param bool $isChangedVisibility + * @param bool $isChangedWebsites + * @param bool $isChangedCategories + * @param bool $visibilityResult + * @param int $expectedDeleteCount + * @param int $expectedReplaceCount + * + * @dataProvider testUrlKeyDataProvider + */ + public function testExecuteUrlKey( + $isChangedUrlKey, + $isChangedVisibility, + $isChangedWebsites, + $isChangedCategories, + $visibilityResult, + $expectedDeleteCount, + $expectedReplaceCount + ) { + + $this->product->expects($this->any()) + ->method('dataHasChangedFor') + ->will($this->returnValueMap([ + ['visibility', $isChangedVisibility], + ['url_key', $isChangedUrlKey] + ]) + ); + + $this->product->expects($this->any()) + ->method('getIsChangedWebsites') + ->will($this->returnValue($isChangedWebsites)); + + $this->product->expects($this->any()) + ->method('getIsChangedCategories') + ->will($this->returnValue($isChangedCategories)); + + $this->urlPersist->expects($this->exactly($expectedDeleteCount))->method('deleteByData')->with([ + UrlRewrite::ENTITY_ID => $this->product->getId(), + UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE, + UrlRewrite::REDIRECT_TYPE => 0, + ]); + $this->product->expects($this->any())->method('isVisibleInSiteVisibility')->will($this->returnValue($visibilityResult)); + $this->urlPersist->expects($this->exactly($expectedReplaceCount))->method('replace')->with([3 => 'rewrite']); + $this->model->execute($this->observer); + } +} From e0578673f14d4010061b9fc632d2d4916514ea26 Mon Sep 17 00:00:00 2001 From: Roman Ganin Date: Tue, 14 Jun 2016 16:55:57 +0300 Subject: [PATCH 7/8] MAGETWO-54211: Downloadable product has direct link in category after update applied --- ...uctProcessUrlRewriteSavingObserverTest.php | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php index 3c2748c52a28c..26d1674ec59a0 100644 --- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php +++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php @@ -1,5 +1,4 @@ product->expects($this->any()) ->method('dataHasChangedFor') - ->will($this->returnValueMap([ - ['visibility', $isChangedVisibility], - ['url_key', $isChangedUrlKey] - ]) - ); + ->will($this->returnValueMap( + [ + ['visibility', $isChangedVisibility], + ['url_key', $isChangedUrlKey] + ] + )); $this->product->expects($this->any()) ->method('getIsChangedWebsites') @@ -207,8 +207,15 @@ public function testExecuteUrlKey( UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE, UrlRewrite::REDIRECT_TYPE => 0, ]); - $this->product->expects($this->any())->method('isVisibleInSiteVisibility')->will($this->returnValue($visibilityResult)); - $this->urlPersist->expects($this->exactly($expectedReplaceCount))->method('replace')->with([3 => 'rewrite']); + + $this->product->expects($this->any()) + ->method('isVisibleInSiteVisibility') + ->will($this->returnValue($visibilityResult)); + + $this->urlPersist->expects($this->exactly($expectedReplaceCount)) + ->method('replace') + ->with([3 => 'rewrite']); + $this->model->execute($this->observer); } } From c92df5c29ad8917758866a195dc245941cebff93 Mon Sep 17 00:00:00 2001 From: Stanislav Lopukhov Date: Tue, 14 Jun 2016 17:41:55 +0300 Subject: [PATCH 8/8] MAGETWO-54211: Downloadable product has direct link in category after update applied --- ...ProductProcessUrlRewriteSavingObserverTest.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php index 26d1674ec59a0..823bbcc90bbdc 100644 --- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php +++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php @@ -13,12 +13,12 @@ use Magento\UrlRewrite\Service\V1\Data\UrlRewrite; /** - * Class AfterImportDataObserverTest + * Class ProductProcessUrlRewriteSavingObserverTest * * @SuppressWarnings(PHPMD.TooManyFields) * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ -class AfterImportDataObserverTest extends \PHPUnit_Framework_TestCase +class ProductProcessUrlRewriteSavingObserverTest extends \PHPUnit_Framework_TestCase { /** * @var \Magento\UrlRewrite\Model\UrlPersistInterface|\PHPUnit_Framework_MockObject_MockObject @@ -184,15 +184,14 @@ public function testExecuteUrlKey( $expectedDeleteCount, $expectedReplaceCount ) { - $this->product->expects($this->any()) ->method('dataHasChangedFor') ->will($this->returnValueMap( - [ - ['visibility', $isChangedVisibility], - ['url_key', $isChangedUrlKey] - ] - )); + [ + ['visibility', $isChangedVisibility], + ['url_key', $isChangedUrlKey] + ] + )); $this->product->expects($this->any()) ->method('getIsChangedWebsites')