Skip to content

Commit 454695c

Browse files
committed
#28569: Multi-store: Missing store codes in relation to a group and website
- Replaced interface updates
1 parent 4c994bf commit 454695c

File tree

7 files changed

+32
-54
lines changed

7 files changed

+32
-54
lines changed

app/code/Magento/Store/Api/Data/StoreConfigInterface.php

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,21 +43,6 @@ public function getCode();
4343
*/
4444
public function setCode($code);
4545

46-
/**
47-
* Get store name
48-
*
49-
* @return string
50-
*/
51-
public function getName();
52-
53-
/**
54-
* Set store code
55-
*
56-
* @param string $name
57-
* @return $this
58-
*/
59-
public function setName($name);
60-
6146
/**
6247
* Get website id of the store
6348
*

app/code/Magento/Store/Model/Data/StoreConfig.php

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ class StoreConfig extends \Magento\Framework\Api\AbstractExtensibleObject implem
1515
{
1616
const KEY_ID = 'id';
1717
const KEY_CODE = 'code';
18-
const KEY_NAME = 'name';
1918
const KEY_WEBSITE_ID = 'website_id';
2019
const KEY_LOCALE = 'locale';
2120
const KEY_BASE_CURRENCY_CODE = 'base_currency_code';
@@ -73,27 +72,6 @@ public function setCode($code)
7372
return $this->setData(self::KEY_CODE, $code);
7473
}
7574

76-
/**
77-
* Get store name
78-
*
79-
* @return string
80-
*/
81-
public function getName()
82-
{
83-
return $this->_get(self::KEY_NAME);
84-
}
85-
86-
/**
87-
* Get store name
88-
*
89-
* @param string $name
90-
* @return $this
91-
*/
92-
public function setName($name)
93-
{
94-
return $this->setData(self::KEY_NAME, $name);
95-
}
96-
9775
/**
9876
* Get website id of the store
9977
*

app/code/Magento/Store/Model/ResourceModel/StoreWebsiteRelation.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,17 @@ public function getStoreByWebsiteId($websiteId)
4545
}
4646

4747
/**
48-
* Get website store codes
48+
* Get website store data
4949
*
5050
* @param string $websiteId
5151
* @param bool $available
5252
* @return array
5353
*/
54-
public function getWebsiteStoreCodes(string $websiteId, bool $available = false): array
54+
public function getWebsiteStores(string $websiteId, bool $available = false): array
5555
{
5656
$connection = $this->resource->getConnection();
5757
$storeTable = $this->resource->getTableName('store');
58-
$storeSelect = $connection->select()->from($storeTable, ['code'])->where(
58+
$storeSelect = $connection->select()->from($storeTable)->where(
5959
'website_id = ?',
6060
$websiteId
6161
);
@@ -66,6 +66,6 @@ public function getWebsiteStoreCodes(string $websiteId, bool $available = false)
6666
);
6767
}
6868

69-
return $connection->fetchCol($storeSelect);
69+
return $connection->fetchAll($storeSelect);
7070
}
7171
}

app/code/Magento/Store/Model/Service/StoreConfigManager.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,7 @@ protected function getStoreConfig($store)
9494

9595
$storeConfig->setId($store->getId())
9696
->setCode($store->getCode())
97-
->setWebsiteId($store->getWebsiteId())
98-
->setName($store->getName());
97+
->setWebsiteId($store->getWebsiteId());
9998

10099
foreach ($this->configPaths as $methodName => $configPath) {
101100
$configValue = $this->scopeConfig->getValue(

app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public function __construct(
6666
public function getStoreConfigData(StoreInterface $store): array
6767
{
6868
$defaultStoreConfig = $this->storeConfigManager->getStoreConfigs([$store->getCode()]);
69-
return $this->prepareStoreConfigData(current($defaultStoreConfig));
69+
return $this->prepareStoreConfigData(current($defaultStoreConfig), $store->getName());
7070
}
7171

7272
/**
@@ -77,12 +77,15 @@ public function getStoreConfigData(StoreInterface $store): array
7777
*/
7878
public function getAvailableStoreConfig(string $websiteId): array
7979
{
80-
$websiteStores = $this->storeWebsiteRelation->getWebsiteStoreCodes($websiteId, true);
81-
$storeConfigs = $this->storeConfigManager->getStoreConfigs($websiteStores);
80+
$websiteStores = $this->storeWebsiteRelation->getWebsiteStores($websiteId, true);
81+
$storeCodes = array_column($websiteStores, 'code');
82+
83+
$storeConfigs = $this->storeConfigManager->getStoreConfigs($storeCodes);
8284
$storesConfigData = [];
8385

8486
foreach ($storeConfigs as $storeConfig) {
85-
$storesConfigData[] = $this->prepareStoreConfigData($storeConfig);
87+
$key = array_search($storeConfig->getCode(), array_column($websiteStores, 'code'), true);
88+
$storesConfigData[] = $this->prepareStoreConfigData($storeConfig, $websiteStores[$key]['name']);
8689
}
8790

8891
return $storesConfigData;
@@ -92,9 +95,10 @@ public function getAvailableStoreConfig(string $websiteId): array
9295
* Prepare store config data
9396
*
9497
* @param StoreConfigInterface $storeConfig
98+
* @param string $storeName
9599
* @return array
96100
*/
97-
private function prepareStoreConfigData(StoreConfigInterface $storeConfig): array
101+
private function prepareStoreConfigData(StoreConfigInterface $storeConfig, string $storeName): array
98102
{
99103
return array_merge([
100104
'id' => $storeConfig->getId(),
@@ -113,7 +117,7 @@ private function prepareStoreConfigData(StoreConfigInterface $storeConfig): arra
113117
'secure_base_link_url' => $storeConfig->getSecureBaseLinkUrl(),
114118
'secure_base_static_url' => $storeConfig->getSecureBaseStaticUrl(),
115119
'secure_base_media_url' => $storeConfig->getSecureBaseMediaUrl(),
116-
'store_name' => $storeConfig->getName(),
120+
'store_name' => $storeName,
117121
], $this->getExtendedConfigData((int)$storeConfig->getId()));
118122
}
119123

dev/tests/api-functional/testsuite/Magento/GraphQl/Store/AvailableStoreConfigTest.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77

88
namespace Magento\GraphQl\Store;
99

10-
use Magento\Framework\App\Config\ScopeConfigInterface;
1110
use Magento\Framework\ObjectManagerInterface;
1211
use Magento\Store\Api\Data\StoreConfigInterface;
1312
use Magento\Store\Api\StoreConfigManagerInterface;
14-
use Magento\Store\Model\ScopeInterface;
13+
use Magento\Store\Model\ResourceModel\Store as StoreResource;
14+
use Magento\Store\Model\Store;
1515
use Magento\TestFramework\Helper\Bootstrap;
1616
use Magento\TestFramework\TestCase\GraphQlAbstract;
1717

@@ -31,13 +31,19 @@ class AvailableStoreConfigTest extends GraphQlAbstract
3131
*/
3232
private $storeConfigManager;
3333

34+
/**
35+
* @var StoreResource
36+
*/
37+
private $storeResource;
38+
3439
/**
3540
* @inheritDoc
3641
*/
3742
protected function setUp(): void
3843
{
3944
$this->objectManager = Bootstrap::getObjectManager();
4045
$this->storeConfigManager = $this->objectManager->get(StoreConfigManagerInterface::class);
46+
$this->storeResource = $this->objectManager->get(StoreResource::class);
4147
}
4248

4349
/**
@@ -140,6 +146,8 @@ public function testNonDefaultWebsiteAvailableStoreConfigs(): void
140146
*/
141147
private function validateStoreConfig(StoreConfigInterface $storeConfig, array $responseConfig): void
142148
{
149+
$store = $this->objectManager->get(Store::class);
150+
$this->storeResource->load($store, $storeConfig->getCode(), 'code');
143151
$this->assertEquals($storeConfig->getId(), $responseConfig['id']);
144152
$this->assertEquals($storeConfig->getCode(), $responseConfig['code']);
145153
$this->assertEquals($storeConfig->getLocale(), $responseConfig['locale']);

dev/tests/api-functional/testsuite/Magento/GraphQl/Store/StoreConfigResolverTest.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,17 +75,21 @@ public function testGetStoreConfig(): void
7575
QUERY;
7676
$response = $this->graphQlQuery($query);
7777
$this->assertArrayHasKey('storeConfig', $response);
78-
$this->validateStoreConfig($defaultStoreConfig, $response['storeConfig']);
78+
$this->validateStoreConfig($defaultStoreConfig, $response['storeConfig'], $store->getName());
7979
}
8080

8181
/**
8282
* Validate Store Config Data
8383
*
8484
* @param StoreConfigInterface $storeConfig
8585
* @param array $responseConfig
86+
* @param string $storeName
8687
*/
87-
private function validateStoreConfig($storeConfig, $responseConfig): void
88-
{
88+
private function validateStoreConfig(
89+
StoreConfigInterface $storeConfig,
90+
array $responseConfig,
91+
string $storeName
92+
): void {
8993
$this->assertEquals($storeConfig->getId(), $responseConfig['id']);
9094
$this->assertEquals($storeConfig->getCode(), $responseConfig['code']);
9195
$this->assertEquals($storeConfig->getLocale(), $responseConfig['locale']);

0 commit comments

Comments
 (0)