Skip to content

Commit ee03140

Browse files
author
Oleksandr Dubovyk
committed
MAGETWO-66065: Remove usages of unserialize in module Magento/CatalogWidget
- Removed serialize - Fixed tests
1 parent 378ac7a commit ee03140

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

app/code/Magento/CatalogWidget/Block/Product/ProductsList.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
use Magento\Framework\DataObject\IdentityInterface;
1010
use Magento\Widget\Block\BlockInterface;
1111
use Magento\Framework\Pricing\PriceCurrencyInterface;
12+
use Magento\Framework\App\ObjectManager;
13+
use Magento\Framework\Serialize\Serializer\Json;
1214

1315
/**
1416
* Catalog Products List widget block
@@ -85,6 +87,14 @@ class ProductsList extends \Magento\Catalog\Block\Product\AbstractProduct implem
8587
*/
8688
private $priceCurrency;
8789

90+
91+
/**
92+
* Json Serializer Instance
93+
*
94+
* @var Json
95+
*/
96+
private $json;
97+
8898
/**
8999
* @param \Magento\Catalog\Block\Product\Context $context
90100
* @param \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory
@@ -94,6 +104,7 @@ class ProductsList extends \Magento\Catalog\Block\Product\AbstractProduct implem
94104
* @param \Magento\CatalogWidget\Model\Rule $rule
95105
* @param \Magento\Widget\Helper\Conditions $conditionsHelper
96106
* @param array $data
107+
* @param Json|null $json
97108
*/
98109
public function __construct(
99110
\Magento\Catalog\Block\Product\Context $context,
@@ -103,14 +114,16 @@ public function __construct(
103114
\Magento\Rule\Model\Condition\Sql\Builder $sqlBuilder,
104115
\Magento\CatalogWidget\Model\Rule $rule,
105116
\Magento\Widget\Helper\Conditions $conditionsHelper,
106-
array $data = []
117+
array $data = [],
118+
Json $json = null
107119
) {
108120
$this->productCollectionFactory = $productCollectionFactory;
109121
$this->catalogProductVisibility = $catalogProductVisibility;
110122
$this->httpContext = $httpContext;
111123
$this->sqlBuilder = $sqlBuilder;
112124
$this->rule = $rule;
113125
$this->conditionsHelper = $conditionsHelper;
126+
$this->json = $json ?: ObjectManager::getInstance()->get(Json::class);
114127
parent::__construct(
115128
$context,
116129
$data
@@ -155,7 +168,7 @@ public function getCacheKeyInfo()
155168
intval($this->getRequest()->getParam($this->getData('page_var_name'), 1)),
156169
$this->getProductsPerPage(),
157170
$conditions,
158-
serialize($this->getRequest()->getParams())
171+
$this->json->serialize($this->getRequest()->getParams())
159172
];
160173
}
161174

app/code/Magento/CatalogWidget/Test/Unit/Block/Product/ProductsListTest.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ protected function setUp()
116116
'rule' => $this->rule,
117117
'conditionsHelper' => $this->widgetConditionsHelper,
118118
'storeManager' => $this->storeManager,
119-
'design' => $this->design
119+
'design' => $this->design,
120+
'json' => $this->serializer
120121
]
121122
);
122123
$this->request = $arguments['context']->getRequest();
@@ -150,6 +151,12 @@ public function testGetCacheKeyInfo()
150151
$this->request->expects($this->once())->method('getParams')->willReturn('request_params');
151152
$this->priceCurrency->expects($this->once())->method('getCurrencySymbol')->willReturn('$');
152153

154+
$this->serializer->expects($this->any())
155+
->method('serialize')
156+
->willReturnCallback(function ($value) {
157+
return json_encode($value);
158+
});
159+
153160
$cacheKey = [
154161
'CATALOG_PRODUCTS_LIST_WIDGET',
155162
'$',
@@ -159,7 +166,7 @@ public function testGetCacheKeyInfo()
159166
1,
160167
5,
161168
'some_serialized_conditions',
162-
serialize('request_params')
169+
json_encode('request_params')
163170
];
164171
$this->assertEquals($cacheKey, $this->productsList->getCacheKeyInfo());
165172
}

0 commit comments

Comments
 (0)