Skip to content

Commit ada0912

Browse files
authored
ENGCOM-3408: #18956 Fixes for set root_category_id #18958
2 parents 76d8d00 + f252566 commit ada0912

File tree

2 files changed

+47
-31
lines changed

2 files changed

+47
-31
lines changed

app/code/Magento/Store/Model/Config/Importer/Processor/Create.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717

1818
/**
1919
* The processor for creating of new entities.
20-
*
21-
* {@inheritdoc}
2220
*/
2321
class Create implements ProcessorInterface
2422
{
@@ -85,7 +83,9 @@ public function __construct(
8583
/**
8684
* Creates entities in application according to the data set.
8785
*
88-
* {@inheritdoc}
86+
* @param array $data The data to be processed
87+
* @return void
88+
* @throws RuntimeException If processor was unable to finish execution
8989
*/
9090
public function run(array $data)
9191
{
@@ -177,8 +177,11 @@ private function createGroups(array $items, array $data)
177177
);
178178

179179
$group = $this->groupFactory->create();
180+
if (!isset($groupData['root_category_id'])) {
181+
$groupData['root_category_id'] = 0;
182+
}
183+
180184
$group->setData($groupData);
181-
$group->setRootCategoryId(0);
182185

183186
$group->getResource()->save($group);
184187
$group->getResource()->addCommitCallback(function () use ($data, $group, $website) {
@@ -227,8 +230,7 @@ private function createStores(array $items, array $data)
227230
}
228231

229232
/**
230-
* Searches through given websites and compares with current websites.
231-
* Returns found website.
233+
* Searches through given websites and compares with current websites and returns found website.
232234
*
233235
* @param array $data The data to be searched in
234236
* @param string $websiteId The website id
@@ -250,8 +252,7 @@ private function detectWebsiteById(array $data, $websiteId)
250252
}
251253

252254
/**
253-
* Searches through given groups and compares with current websites.
254-
* Returns found group.
255+
* Searches through given groups and compares with current websites and returns found group.
255256
*
256257
* @param array $data The data to be searched in
257258
* @param string $groupId The group id
@@ -273,8 +274,7 @@ private function detectGroupById(array $data, $groupId)
273274
}
274275

275276
/**
276-
* Searches through given stores and compares with current stores.
277-
* Returns found store.
277+
* Searches through given stores and compares with current stores and returns found store.
278278
*
279279
* @param array $data The data to be searched in
280280
* @param string $storeId The store id

app/code/Magento/Store/Test/Unit/Model/Config/Importer/Processor/CreateTest.php

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -196,14 +196,30 @@ private function initTestData()
196196
'root_category_id' => '1',
197197
'default_store_id' => '1',
198198
'code' => 'default',
199+
],
200+
2 => [
201+
'group_id' => '1',
202+
'website_id' => '1',
203+
'name' => 'Default1',
204+
'default_store_id' => '1',
205+
'code' => 'default1',
199206
]
200207
];
201-
$this->trimmedGroup = [
202-
'name' => 'Default',
203-
'root_category_id' => '1',
204-
'code' => 'default',
205-
'default_store_id' => '1',
206-
];
208+
$this->trimmedGroup =
209+
[
210+
0 => [
211+
'name' => 'Default',
212+
'root_category_id' => '1',
213+
'code' => 'default',
214+
'default_store_id' => '1',
215+
],
216+
1 => [
217+
'name' => 'Default1',
218+
'root_category_id' => '0',
219+
'code' => 'default1',
220+
'default_store_id' => '1'
221+
]
222+
];
207223
$this->stores = [
208224
'default' => [
209225
'store_id' => '1',
@@ -280,46 +296,46 @@ public function testRunGroup()
280296
[ScopeInterface::SCOPE_GROUPS, $this->groups, $this->groups],
281297
]);
282298

283-
$this->websiteMock->expects($this->once())
299+
$this->websiteMock->expects($this->exactly(2))
284300
->method('getResource')
285301
->willReturn($this->abstractDbMock);
286302

287-
$this->groupMock->expects($this->once())
303+
$this->groupMock->expects($this->exactly(2))
288304
->method('setData')
289-
->with($this->trimmedGroup)
290-
->willReturnSelf();
291-
$this->groupMock->expects($this->exactly(3))
305+
->withConsecutive(
306+
[$this->equalTo($this->trimmedGroup[0])],
307+
[$this->equalTo($this->trimmedGroup[1])]
308+
)->willReturnSelf();
309+
310+
$this->groupMock->expects($this->exactly(6))
292311
->method('getResource')
293312
->willReturn($this->abstractDbMock);
294-
$this->groupMock->expects($this->once())
295-
->method('setRootCategoryId')
296-
->with(0);
297-
$this->groupMock->expects($this->once())
313+
$this->groupMock->expects($this->exactly(2))
298314
->method('getDefaultStoreId')
299315
->willReturn($defaultStoreId);
300-
$this->groupMock->expects($this->once())
316+
$this->groupMock->expects($this->exactly(2))
301317
->method('setDefaultStoreId')
302318
->with($storeId);
303-
$this->groupMock->expects($this->once())
319+
$this->groupMock->expects($this->exactly(2))
304320
->method('setWebsite')
305321
->with($this->websiteMock);
306322

307-
$this->storeMock->expects($this->once())
323+
$this->storeMock->expects($this->exactly(2))
308324
->method('getResource')
309325
->willReturn($this->abstractDbMock);
310-
$this->storeMock->expects($this->once())
326+
$this->storeMock->expects($this->exactly(2))
311327
->method('getStoreId')
312328
->willReturn($storeId);
313329

314330
$this->abstractDbMock->expects($this->any())
315331
->method('load')
316332
->withConsecutive([$this->websiteMock, 'base', 'code'], [$this->storeMock, 'default', 'code'])
317333
->willReturnSelf();
318-
$this->abstractDbMock->expects($this->exactly(2))
334+
$this->abstractDbMock->expects($this->exactly(4))
319335
->method('save')
320336
->with($this->groupMock)
321337
->willReturnSelf();
322-
$this->abstractDbMock->expects($this->once())
338+
$this->abstractDbMock->expects($this->exactly(2))
323339
->method('addCommitCallback')
324340
->willReturnCallback(function ($function) {
325341
return $function();

0 commit comments

Comments
 (0)