Skip to content

Commit 8b327d7

Browse files
committed
MC-39744: Expose group_id through storeConfig query
- fixing query - fixing tests
1 parent d4061e5 commit 8b327d7

File tree

6 files changed

+114
-22
lines changed

6 files changed

+114
-22
lines changed

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

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -60,48 +60,46 @@ public function getWebsiteStores(
6060
int $storeId = null
6161
): array {
6262
$connection = $this->resource->getConnection();
63-
$storeTable = $this->resource->getTableName('store_website');
63+
$storeTable = $this->resource->getTableName('store');
6464
$storeSelect = $connection->select()
6565
->from(['main_table' => $storeTable])
66-
->columns(
67-
[
68-
'website_code' => 'code',
69-
'website_name' => 'name',
70-
'website_sort_order' => 'sort_order',
71-
'default_group_id'
72-
]
73-
)
7466
->join(
7567
['group_table' => $this->resource->getTableName('store_group')],
76-
'main_table.website_id = group_table.website_id',
68+
'main_table.group_id = group_table.group_id',
7769
[
7870
'store_group_code' => 'code',
7971
'store_group_name' => 'name',
8072
'default_store_id'
8173
]
8274
)
8375
->join(
84-
['store_table' => $this->resource->getTableName('store')],
85-
'group_table.group_id = store_table.group_id'
76+
['website' => $this->resource->getTableName('store_website')],
77+
'main_table.website_id = website.website_id',
78+
[
79+
'website_code' => 'code',
80+
'website_name' => 'name',
81+
'website_sort_order' => 'sort_order',
82+
'default_group_id'
83+
]
8684
);
8785

8886
if ($storeGroupId) {
8987
$storeSelect = $storeSelect->where(
90-
'store_table.group_id = ?',
88+
'main_table.group_id = ?',
9189
$storeGroupId
9290
);
9391
}
9492

9593
if ($storeId) {
9694
$storeSelect = $storeSelect->where(
97-
'store_table.store_id = ?',
95+
'main_table.store_id = ?',
9896
$storeId
9997
);
10098
}
10199

102100
if ($available) {
103101
$storeSelect = $storeSelect->where(
104-
'store_table.is_active = 1'
102+
'main_table.is_active = 1'
105103
);
106104
}
107105

app/code/Magento/StoreGraphQl/Controller/HttpRequestValidator/StoreValidator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public function validate(HttpRequestInterface $request): void
4545
$storeCode = trim($headerValue);
4646
if (!$this->isStoreActive($storeCode)) {
4747
$this->storeManager->setCurrentStore(null);
48-
throw new GraphQlInputException(__('Requested store is not found ({$storeCode})'));
48+
throw new GraphQlInputException(__('Requested store is not found (%1)', [$storeCode]));
4949
}
5050
}
5151
}

app/code/Magento/StoreGraphQl/Test/Unit/StoreValidatorTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public function testValidate(array $config): void
9595
->method('setCurrentStore')
9696
->with(null)
9797
->willReturnSelf();
98-
$this->expectExceptionMessage('Requested store is not found ({$storeCode})');
98+
$this->expectExceptionMessage('Requested store is not found (sv1)');
9999
$this->storeValidator->validate($this->requestMock);
100100
}
101101

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

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,16 @@ public function testDefaultWebsiteAvailableStoreConfigs(): void
7272
availableStores {
7373
id,
7474
code,
75+
store_code,
76+
store_name,
77+
store_sort_order,
78+
is_default_store,
79+
store_group_code,
80+
store_group_name,
81+
is_default_store_group,
7582
website_id,
83+
website_code,
84+
website_name,
7685
locale,
7786
base_currency_code,
7887
default_display_currency_code,
@@ -112,7 +121,16 @@ public function testNonDefaultWebsiteAvailableStoreConfigs(): void
112121
availableStores {
113122
id,
114123
code,
124+
store_code,
125+
store_name,
126+
store_sort_order,
127+
is_default_store,
128+
store_group_code,
129+
store_group_name,
130+
is_default_store_group,
115131
website_id,
132+
website_code,
133+
website_name,
116134
locale,
117135
base_currency_code,
118136
default_display_currency_code,
@@ -148,10 +166,26 @@ public function testNonDefaultWebsiteAvailableStoreConfigs(): void
148166
*/
149167
private function validateStoreConfig(StoreConfigInterface $storeConfig, array $responseConfig): void
150168
{
169+
/** @var Store $store */
151170
$store = $this->objectManager->get(Store::class);
152171
$this->storeResource->load($store, $storeConfig->getCode(), 'code');
153172
$this->assertEquals($storeConfig->getId(), $responseConfig['id']);
154173
$this->assertEquals($storeConfig->getCode(), $responseConfig['code']);
174+
$this->assertEquals($store->getName(), $responseConfig['store_name']);
175+
$this->assertEquals($store->getSortOrder(), $responseConfig['store_sort_order']);
176+
$this->assertEquals(
177+
$store->getGroup()->getDefaultStoreId() == $store->getId(),
178+
$responseConfig['is_default_store']
179+
);
180+
$this->assertEquals($store->getGroup()->getCode(), $responseConfig['store_group_code']);
181+
$this->assertEquals($store->getGroup()->getName(), $responseConfig['store_group_name']);
182+
$this->assertEquals(
183+
$store->getWebsite()->getDefaultGroupId() === $store->getGroupId(),
184+
$responseConfig['is_default_store_group']
185+
);
186+
$this->assertEquals($store->getWebsite()->getCode(), $responseConfig['website_code']);
187+
$this->assertEquals($store->getWebsite()->getName(), $responseConfig['website_name']);
188+
$this->assertEquals($storeConfig->getCode(), $responseConfig['store_code']);
155189
$this->assertEquals($storeConfig->getLocale(), $responseConfig['locale']);
156190
$this->assertEquals($storeConfig->getBaseCurrencyCode(), $responseConfig['base_currency_code']);
157191
$this->assertEquals(
@@ -168,7 +202,6 @@ private function validateStoreConfig(StoreConfigInterface $storeConfig, array $r
168202
$this->assertEquals($storeConfig->getSecureBaseLinkUrl(), $responseConfig['secure_base_link_url']);
169203
$this->assertEquals($storeConfig->getSecureBaseStaticUrl(), $responseConfig['secure_base_static_url']);
170204
$this->assertEquals($storeConfig->getSecureBaseMediaUrl(), $responseConfig['secure_base_media_url']);
171-
$this->assertEquals($store->getName(), $responseConfig['store_name']);
172205
$this->assertEquals($store->isUseStoreInUrl(), $responseConfig['use_store_in_url']);
173206
}
174207

@@ -193,7 +226,16 @@ public function testAllStoreConfigsWithCodeInUrlEnabled(): void
193226
availableStores(useCurrentGroup:false) {
194227
id,
195228
code,
229+
store_code,
230+
store_name,
231+
store_sort_order,
232+
is_default_store,
233+
store_group_code,
234+
store_group_name,
235+
is_default_store_group,
196236
website_id,
237+
website_code,
238+
website_name,
197239
locale,
198240
base_currency_code,
199241
default_display_currency_code,
@@ -236,7 +278,16 @@ public function testCurrentGroupStoreConfigs(): void
236278
availableStores(useCurrentGroup:true) {
237279
id,
238280
code,
281+
store_code,
282+
store_name,
283+
store_sort_order,
284+
is_default_store,
285+
store_group_code,
286+
store_group_name,
287+
is_default_store_group,
239288
website_id,
289+
website_code,
290+
website_name,,
240291
locale,
241292
base_currency_code,
242293
default_display_currency_code,

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

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Magento\Store\Api\StoreConfigManagerInterface;
1313
use Magento\Store\Api\StoreRepositoryInterface;
1414
use Magento\Store\Api\StoreResolverInterface;
15+
use Magento\Store\Model\Store;
1516
use Magento\TestFramework\Helper\Bootstrap;
1617
use Magento\TestFramework\ObjectManager;
1718
use Magento\TestFramework\TestCase\GraphQlAbstract;
@@ -55,7 +56,16 @@ public function testGetStoreConfig(): void
5556
storeConfig {
5657
id,
5758
code,
59+
store_code,
60+
store_name,
61+
store_sort_order,
62+
is_default_store,
63+
store_group_code,
64+
store_group_name,
65+
is_default_store_group,
5866
website_id,
67+
website_code,
68+
website_name,
5969
locale,
6070
base_currency_code,
6171
default_display_currency_code,
@@ -75,23 +85,40 @@ public function testGetStoreConfig(): void
7585
QUERY;
7686
$response = $this->graphQlQuery($query);
7787
$this->assertArrayHasKey('storeConfig', $response);
78-
$this->validateStoreConfig($defaultStoreConfig, $response['storeConfig'], $store->getName());
88+
$this->validateStoreConfig($defaultStoreConfig, $response['storeConfig'], $store);
7989
}
8090

8191
/**
8292
* Validate Store Config Data
8393
*
8494
* @param StoreConfigInterface $storeConfig
8595
* @param array $responseConfig
86-
* @param string $storeName
96+
* @param Store $store
8797
*/
8898
private function validateStoreConfig(
8999
StoreConfigInterface $storeConfig,
90100
array $responseConfig,
91-
string $storeName
101+
Store $store
92102
): void {
93103
$this->assertEquals($storeConfig->getId(), $responseConfig['id']);
94104
$this->assertEquals($storeConfig->getCode(), $responseConfig['code']);
105+
106+
$this->assertEquals($store->getName(), $responseConfig['store_name']);
107+
$this->assertEquals($store->getSortOrder(), $responseConfig['store_sort_order']);
108+
$this->assertEquals(
109+
$store->getGroup()->getDefaultStoreId() == $store->getId(),
110+
$responseConfig['is_default_store']
111+
);
112+
$this->assertEquals($store->getGroup()->getCode(), $responseConfig['store_group_code']);
113+
$this->assertEquals($store->getGroup()->getName(), $responseConfig['store_group_name']);
114+
$this->assertEquals(
115+
$store->getWebsite()->getDefaultGroupId() === $store->getGroupId(),
116+
$responseConfig['is_default_store_group']
117+
);
118+
$this->assertEquals($store->getWebsite()->getCode(), $responseConfig['website_code']);
119+
$this->assertEquals($store->getWebsite()->getName(), $responseConfig['website_name']);
120+
$this->assertEquals($storeConfig->getCode(), $responseConfig['store_code']);
121+
95122
$this->assertEquals($storeConfig->getLocale(), $responseConfig['locale']);
96123
$this->assertEquals($storeConfig->getBaseCurrencyCode(), $responseConfig['base_currency_code']);
97124
$this->assertEquals(
@@ -108,6 +135,6 @@ private function validateStoreConfig(
108135
$this->assertEquals($storeConfig->getSecureBaseLinkUrl(), $responseConfig['secure_base_link_url']);
109136
$this->assertEquals($storeConfig->getSecureBaseStaticUrl(), $responseConfig['secure_base_static_url']);
110137
$this->assertEquals($storeConfig->getSecureBaseMediaUrl(), $responseConfig['secure_base_media_url']);
111-
$this->assertEquals($storeName, $responseConfig['store_name']);
138+
$this->assertEquals($store->getName(), $responseConfig['store_name']);
112139
}
113140
}

dev/tests/integration/testsuite/Magento/Store/_files/second_website_with_four_stores_divided_in_groups.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,22 @@
3737
/* Refresh stores memory cache */
3838
$storeManager->reinitStores();
3939

40+
$store = $objectManager->create(Store::class);
41+
if (!$store->load('fixture_second_store', 'code')->getId()) {
42+
$store->setGroupId(
43+
$storeGroup->getId()
44+
);
45+
$store->save();
46+
}
47+
48+
$store = $objectManager->create(Store::class);
49+
if (!$store->load('fixture_third_store', 'code')->getId()) {
50+
$store->setGroupId(
51+
$storeGroup->getId()
52+
);
53+
$store->save();
54+
}
55+
4056
$store = $objectManager->create(Store::class);
4157
if (!$store->load('fixture_fourth_store', 'code')->getId()) {
4258
$store->setCode(

0 commit comments

Comments
 (0)