-
Notifications
You must be signed in to change notification settings - Fork 9.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 2.3-develop into ENGCOM-3850-magento-magento2-20222
- Loading branch information
Showing
57 changed files
with
1,928 additions
and
195 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
<?php | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
declare(strict_types=1); | ||
|
||
namespace Magento\Bundle\Model\Plugin\Frontend; | ||
|
||
use Magento\Bundle\Model\Product\Type; | ||
use Magento\Catalog\Model\Product as CatalogProduct; | ||
|
||
/** | ||
* Add child identities to product identities on storefront. | ||
*/ | ||
class Product | ||
{ | ||
/** | ||
* @var Type | ||
*/ | ||
private $type; | ||
|
||
/** | ||
* @param Type $type | ||
*/ | ||
public function __construct(Type $type) | ||
{ | ||
$this->type = $type; | ||
} | ||
|
||
/** | ||
* Add child identities to product identities | ||
* | ||
* @param CatalogProduct $product | ||
* @param array $identities | ||
* @return array | ||
*/ | ||
public function afterGetIdentities(CatalogProduct $product, array $identities): array | ||
{ | ||
foreach ($this->type->getChildrenIds($product->getEntityId()) as $childIds) { | ||
foreach ($childIds as $childId) { | ||
$identities[] = CatalogProduct::CACHE_TAG . '_' . $childId; | ||
} | ||
} | ||
|
||
return array_unique($identities); | ||
} | ||
} |
73 changes: 73 additions & 0 deletions
73
app/code/Magento/Bundle/Test/Unit/Model/Plugin/Frontend/ProductTest.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
<?php | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
|
||
namespace Magento\Bundle\Test\Unit\Model\Plugin\Frontend; | ||
|
||
use Magento\Bundle\Model\Plugin\Frontend\Product as ProductPlugin; | ||
use Magento\Bundle\Model\Product\Type; | ||
use Magento\Catalog\Model\Product; | ||
use PHPUnit_Framework_MockObject_MockObject as MockObject; | ||
|
||
class ProductTest extends \PHPUnit\Framework\TestCase | ||
{ | ||
/** @var \Magento\Bundle\Model\Plugin\Product */ | ||
private $plugin; | ||
|
||
/** @var MockObject|Type */ | ||
private $type; | ||
|
||
/** @var MockObject|\Magento\Catalog\Model\Product */ | ||
private $product; | ||
|
||
protected function setUp() | ||
{ | ||
$this->product = $this->getMockBuilder(Product::class) | ||
->disableOriginalConstructor() | ||
->setMethods(['getEntityId']) | ||
->getMock(); | ||
|
||
$this->type = $this->getMockBuilder(Type::class) | ||
->disableOriginalConstructor() | ||
->setMethods(['getChildrenIds']) | ||
->getMock(); | ||
|
||
$this->plugin = new ProductPlugin($this->type); | ||
} | ||
|
||
public function testAfterGetIdentities() | ||
{ | ||
$baseIdentities = [ | ||
'SomeCacheId', | ||
'AnotherCacheId', | ||
]; | ||
$id = 12345; | ||
$childIds = [ | ||
1 => [1, 2, 5, 100500], | ||
12 => [7, 22, 45, 24612] | ||
]; | ||
$expectedIdentities = [ | ||
'SomeCacheId', | ||
'AnotherCacheId', | ||
Product::CACHE_TAG . '_' . 1, | ||
Product::CACHE_TAG . '_' . 2, | ||
Product::CACHE_TAG . '_' . 5, | ||
Product::CACHE_TAG . '_' . 100500, | ||
Product::CACHE_TAG . '_' . 7, | ||
Product::CACHE_TAG . '_' . 22, | ||
Product::CACHE_TAG . '_' . 45, | ||
Product::CACHE_TAG . '_' . 24612, | ||
]; | ||
$this->product->expects($this->once()) | ||
->method('getEntityId') | ||
->will($this->returnValue($id)); | ||
$this->type->expects($this->once()) | ||
->method('getChildrenIds') | ||
->with($id) | ||
->will($this->returnValue($childIds)); | ||
$identities = $this->plugin->afterGetIdentities($this->product, $baseIdentities); | ||
$this->assertEquals($expectedIdentities, $identities); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
48 changes: 48 additions & 0 deletions
48
app/code/Magento/ConfigurableProduct/Model/Plugin/Frontend/ProductIdentitiesExtender.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
<?php | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
declare(strict_types=1); | ||
|
||
namespace Magento\ConfigurableProduct\Model\Plugin\Frontend; | ||
|
||
use Magento\ConfigurableProduct\Model\Product\Type\Configurable; | ||
use Magento\Catalog\Model\Product; | ||
|
||
/** | ||
* Extender of product identities for child of configurable products | ||
*/ | ||
class ProductIdentitiesExtender | ||
{ | ||
/** | ||
* @var Configurable | ||
*/ | ||
private $configurableType; | ||
|
||
/** | ||
* @param Configurable $configurableType | ||
*/ | ||
public function __construct(Configurable $configurableType) | ||
{ | ||
$this->configurableType = $configurableType; | ||
} | ||
|
||
/** | ||
* Add child identities to product identities | ||
* | ||
* @param Product $subject | ||
* @param array $identities | ||
* @return array | ||
*/ | ||
public function afterGetIdentities(Product $subject, array $identities): array | ||
{ | ||
foreach ($this->configurableType->getChildrenIds($subject->getId()) as $childIds) { | ||
foreach ($childIds as $childId) { | ||
$identities[] = Product::CACHE_TAG . '_' . $childId; | ||
} | ||
} | ||
|
||
return array_unique($identities); | ||
} | ||
} |
77 changes: 77 additions & 0 deletions
77
...nto/ConfigurableProduct/Test/Unit/Model/Plugin/Frontend/ProductIdentitiesExtenderTest.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
<?php | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
declare(strict_types=1); | ||
|
||
namespace Magento\ConfigurableProduct\Test\Unit\Model\Plugin\Frontend; | ||
|
||
use Magento\ConfigurableProduct\Model\Plugin\Frontend\ProductIdentitiesExtender; | ||
use Magento\ConfigurableProduct\Model\Product\Type\Configurable; | ||
use Magento\Catalog\Model\Product; | ||
|
||
/** | ||
* Class ProductIdentitiesExtenderTest | ||
*/ | ||
class ProductIdentitiesExtenderTest extends \PHPUnit\Framework\TestCase | ||
{ | ||
/** | ||
* @var \PHPUnit_Framework_MockObject_MockObject|Configurable | ||
*/ | ||
private $configurableTypeMock; | ||
|
||
/** | ||
* @var ProductIdentitiesExtender | ||
*/ | ||
private $plugin; | ||
|
||
/** @var MockObject|\Magento\Catalog\Model\Product */ | ||
private $product; | ||
|
||
protected function setUp() | ||
{ | ||
$this->product = $this->getMockBuilder(Product::class) | ||
->disableOriginalConstructor() | ||
->setMethods(['getId']) | ||
->getMock(); | ||
|
||
$this->configurableTypeMock = $this->getMockBuilder(Configurable::class) | ||
->disableOriginalConstructor() | ||
->getMock(); | ||
|
||
$this->plugin = new ProductIdentitiesExtender($this->configurableTypeMock); | ||
} | ||
|
||
public function testAfterGetIdentities() | ||
{ | ||
$identities = [ | ||
'SomeCacheId', | ||
'AnotherCacheId', | ||
]; | ||
$productId = 12345; | ||
$childIdentities = [ | ||
0 => [1, 2, 5, 100500] | ||
]; | ||
$expectedIdentities = [ | ||
'SomeCacheId', | ||
'AnotherCacheId', | ||
Product::CACHE_TAG . '_' . 1, | ||
Product::CACHE_TAG . '_' . 2, | ||
Product::CACHE_TAG . '_' . 5, | ||
Product::CACHE_TAG . '_' . 100500, | ||
]; | ||
|
||
$this->product->expects($this->once()) | ||
->method('getId') | ||
->willReturn($productId); | ||
|
||
$this->configurableTypeMock->expects($this->once()) | ||
->method('getChildrenIds') | ||
->with($productId) | ||
->willReturn($childIdentities); | ||
|
||
$productIdentities = $this->plugin->afterGetIdentities($this->product, $identities); | ||
$this->assertEquals($expectedIdentities, $productIdentities); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.