Skip to content

Commit

Permalink
Merge pull request #104 from magento-troll/pr_p1
Browse files Browse the repository at this point in the history
[Troll & Vanilla & NORD] Bugs P1
  • Loading branch information
Oleksii Korshenko authored Jun 15, 2016
2 parents 2ddfe0f + 68dc4f0 commit e7ab10a
Show file tree
Hide file tree
Showing 5 changed files with 239 additions and 14 deletions.
2 changes: 1 addition & 1 deletion app/code/Magento/Catalog/Helper/Product/ProductList.php
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down
6 changes: 4 additions & 2 deletions app/code/Magento/Catalog/view/base/web/js/price-options.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 ->
Expand Down Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,9 @@
<script type="text/x-magento-init">
{
"#product_addtocart_form": {
"catalogAddToCart": {}
"catalogAddToCart": {
"bindSubmit": false
}
}
}
</script>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,17 @@ 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->dataHasChangedFor('visibility')) {
if ($isChangedWebsites) {
$this->urlPersist->deleteByData([
UrlRewrite::ENTITY_ID => $product->getId(),
UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
]);
}
if (!in_array($product->getOrigData('visibility'), $product->getVisibleInSiteVisibilities())) {
if ($product->dataHasChangedFor('url_key')
|| $product->getIsChangedCategories()
|| $product->getIsChangedWebsites()
|| $product->dataHasChangedFor('visibility')
) {
$this->urlPersist->deleteByData([
UrlRewrite::ENTITY_ID => $product->getId(),
UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
UrlRewrite::REDIRECT_TYPE => 0,
]);
if ($product->isVisibleInSiteVisibility()) {
$this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product));
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
<?php
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/

namespace Magento\CatalogUrlRewrite\Test\Unit\Observer;

use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
use Magento\CatalogImportExport\Model\Import\Product as ImportProduct;
use Magento\Store\Model\Store;
use Magento\CatalogUrlRewrite\Model\ProductUrlRewriteGenerator;
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;

/**
* Class ProductProcessUrlRewriteSavingObserverTest
*
* @SuppressWarnings(PHPMD.TooManyFields)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class ProductProcessUrlRewriteSavingObserverTest extends \PHPUnit_Framework_TestCase
{
/**
* @var \Magento\UrlRewrite\Model\UrlPersistInterface|\PHPUnit_Framework_MockObject_MockObject
*/
protected $urlPersist;

/**
* @var \Magento\Framework\Event|\PHPUnit_Framework_MockObject_MockObject
*/
protected $event;

/**
* @var \Magento\Framework\Event\Observer|\PHPUnit_Framework_MockObject_MockObject
*/
protected $observer;

/**
* @var \Magento\Catalog\Model\Product|\PHPUnit_Framework_MockObject_MockObject
*/
protected $product;

/**
* @var \Magento\CatalogUrlRewrite\Model\ProductUrlRewriteGenerator|\PHPUnit_Framework_MockObject_MockObject
*/
protected $productUrlRewriteGenerator;

/**
* @var ObjectManager
*/
protected $objectManager;

/**
* @var \Magento\CatalogUrlRewrite\Observer\ProductProcessUrlRewriteSavingObserver
*/
protected $model;

/**
* Set up
*/
protected function setUp()
{
$this->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);
}
}

0 comments on commit e7ab10a

Please sign in to comment.