Skip to content

Commit f363870

Browse files
author
Graham Wharton
committed
Updated to use collectionFactory to generate collections instead of DI
1 parent 7b2b5e3 commit f363870

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Magento\Catalog\Api\Data\ProductInterface;
99
use Magento\Catalog\Model\Product;
1010
use Magento\Catalog\Model\Product\Visibility;
11-
use Magento\Catalog\Model\ResourceModel\Product\Collection;
11+
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
1212
use Magento\CatalogUrlRewrite\Model\ProductScopeRewriteGenerator;
1313
use Magento\CatalogUrlRewrite\Model\ProductUrlPathGenerator;
1414
use Magento\CatalogUrlRewrite\Model\ProductUrlRewriteGenerator;
@@ -59,9 +59,9 @@ class ProductProcessUrlRewriteSavingObserver implements ObserverInterface
5959
private $deleteEntitiesFromStores;
6060

6161
/**
62-
* @var Collection
62+
* @var CollectionFactory
6363
*/
64-
private $productCollection;
64+
private $collectionFactory;
6565

6666
/**
6767
* @param ProductUrlRewriteGenerator $productUrlRewriteGenerator
@@ -70,7 +70,7 @@ class ProductProcessUrlRewriteSavingObserver implements ObserverInterface
7070
* @param StoreManagerInterface $storeManager
7171
* @param ProductScopeRewriteGenerator $productScopeRewriteGenerator
7272
* @param DeleteEntitiesFromStores $deleteEntitiesFromStores
73-
* @param Collection $productCollection
73+
* @param CollectionFactory $collectionFactory
7474
*/
7575
public function __construct(
7676
ProductUrlRewriteGenerator $productUrlRewriteGenerator,
@@ -79,15 +79,15 @@ public function __construct(
7979
StoreManagerInterface $storeManager,
8080
ProductScopeRewriteGenerator $productScopeRewriteGenerator,
8181
DeleteEntitiesFromStores $deleteEntitiesFromStores,
82-
Collection $productCollection
82+
CollectionFactory $collectionFactory
8383
) {
8484
$this->productUrlRewriteGenerator = $productUrlRewriteGenerator;
8585
$this->urlPersist = $urlPersist;
8686
$this->productUrlPathGenerator = $productUrlPathGenerator;
8787
$this->storeManager = $storeManager;
8888
$this->productScopeRewriteGenerator = $productScopeRewriteGenerator;
8989
$this->deleteEntitiesFromStores = $deleteEntitiesFromStores;
90-
$this->productCollection = $productCollection;
90+
$this->collectionFactory = $collectionFactory;
9191
}
9292

9393
/**
@@ -117,7 +117,8 @@ public function execute(Observer $observer)
117117

118118
$storeIdsToRemove = [];
119119
$productWebsiteMap = array_flip($product->getWebsiteIds());
120-
$storeVisibilities = $this->productCollection->getAllAttributeValues(ProductInterface::VISIBILITY);
120+
$storeVisibilities = $this->collectionFactory->create()
121+
->getAllAttributeValues(ProductInterface::VISIBILITY);
121122
if ($this->productScopeRewriteGenerator->isGlobalScope($product->getStoreId())) {
122123
//Remove any rewrite URLs for websites the product is not in, or is not visible in. Global Scope.
123124
foreach ($this->storeManager->getStores() as $store) {

app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
namespace Magento\CatalogUrlRewrite\Test\Unit\Observer;
88

99
use Magento\Catalog\Model\ResourceModel\Product\Collection;
10+
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
1011
use Magento\CatalogUrlRewrite\Model\ProductScopeRewriteGenerator;
1112
use Magento\CatalogUrlRewrite\Model\ProductUrlRewriteGenerator;
1213
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
@@ -106,6 +107,11 @@ class ProductProcessUrlRewriteSavingObserverTest extends TestCase
106107
*/
107108
private $productCollection;
108109

110+
/**
111+
* @var CollectionFactory|MockObject
112+
*/
113+
private $collectionFactory;
114+
109115
/**
110116
* Set up
111117
* Website_ID = 0 -> Store_ID = 0
@@ -129,10 +135,17 @@ protected function setUp()
129135

130136
$this->product = $this->initialiseProduct();
131137

138+
$this->collectionFactory = $this->createPartialMock(
139+
CollectionFactory::class,
140+
['create']
141+
);
132142
$this->productCollection = $this->createPartialMock(
133143
Collection::class,
134144
['getAllAttributeValues']
135145
);
146+
$this->collectionFactory->expects($this->any())
147+
->method('create')
148+
->willReturn($this->productCollection);
136149

137150
$this->deleteEntitiesFromStores = $this->createPartialMock(
138151
DeleteEntitiesFromStores::class,
@@ -192,7 +205,7 @@ protected function setUp()
192205
'storeWebsiteRelation' => $this->storeWebsiteRelation,
193206
'deleteEntitiesFromStores' => $this->deleteEntitiesFromStores,
194207
'productScopeRewriteGenerator' => $this->productScopeRewriteGenerator,
195-
'productCollection' => $this->productCollection
208+
'collectionFactory' => $this->collectionFactory
196209
]
197210
);
198211
}

0 commit comments

Comments
 (0)