Skip to content

Commit 01a3904

Browse files
committed
Added Test for Translation
1 parent 77e8af4 commit 01a3904

File tree

4 files changed

+95
-5
lines changed

4 files changed

+95
-5
lines changed

app/code/Magento/StoreGraphQl/Controller/HttpHeaderProcessor/StoreProcessor.php

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
<?php
2+
23
/**
34
* Copyright © Magento, Inc. All rights reserved.
45
* See COPYING.txt for license details.
56
*/
7+
68
declare(strict_types=1);
79

810
namespace Magento\StoreGraphQl\Controller\HttpHeaderProcessor;
@@ -11,6 +13,8 @@
1113
use Magento\Store\Model\StoreManagerInterface;
1214
use Magento\Framework\App\Http\Context as HttpContext;
1315
use Magento\Store\Api\StoreCookieManagerInterface;
16+
use Magento\Framework\App\ObjectManager;
17+
use Magento\Framework\Locale\ResolverInterface;
1418

1519
/**
1620
* Process the "Store" header entry
@@ -32,19 +36,27 @@ class StoreProcessor implements HttpHeaderProcessorInterface
3236
*/
3337
private $storeCookieManager;
3438

39+
/**
40+
* @var ResolverInterface
41+
*/
42+
private $localeResolver;
43+
3544
/**
3645
* @param StoreManagerInterface $storeManager
3746
* @param HttpContext $httpContext
3847
* @param StoreCookieManagerInterface $storeCookieManager
48+
* @param ResolverInterface $localeResolver
3949
*/
4050
public function __construct(
4151
StoreManagerInterface $storeManager,
4252
HttpContext $httpContext,
43-
StoreCookieManagerInterface $storeCookieManager
53+
StoreCookieManagerInterface $storeCookieManager,
54+
ResolverInterface $localeResolver = null
4455
) {
4556
$this->storeManager = $storeManager;
4657
$this->httpContext = $httpContext;
4758
$this->storeCookieManager = $storeCookieManager;
59+
$this->localeResolver = $localeResolver ?: ObjectManager::getInstance()->get(ResolverInterface::class);
4860
}
4961

5062
/**
@@ -60,9 +72,10 @@ public function processHeaderValue(string $headerValue): void
6072
if (!empty($headerValue)) {
6173
$storeCode = ltrim(rtrim($headerValue));
6274
if ($this->isStoreValid($storeCode)) {
75+
$this->localeResolver->emulate($this->storeManager->getStore($storeCode)->getId());
6376
$this->storeManager->setCurrentStore($storeCode);
6477
$this->updateContext($storeCode);
65-
}
78+
}
6679
} elseif (!$this->isAlreadySet()) {
6780
$storeCode = $this->storeCookieManager->getStoreCodeFromCookie()
6881
?: $this->storeManager->getDefaultStoreView()->getCode();
@@ -77,7 +90,7 @@ public function processHeaderValue(string $headerValue): void
7790
* @param string $storeCode
7891
* @return void
7992
*/
80-
private function updateContext(string $storeCode) : void
93+
private function updateContext(string $storeCode): void
8194
{
8295
$this->httpContext->setValue(
8396
StoreManagerInterface::CONTEXT_STORE,
@@ -97,7 +110,7 @@ private function isAlreadySet(): bool
97110

98111
return $this->httpContext->getValue($storeKey) !== null;
99112
}
100-
113+
101114
/**
102115
* Check if provided store code exist
103116
*
@@ -112,4 +125,4 @@ private function isStoreValid(string $storeCode): bool
112125
}
113126
return false;
114127
}
115-
}
128+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
8+
declare(strict_types=1);
9+
10+
namespace Magento\GraphQl\Catalog;
11+
12+
use Magento\TestFramework\TestCase\GraphQlAbstract;
13+
use Magento\TestFramework\Helper\CacheCleaner;
14+
15+
/**
16+
* The GraphQl test for product in non default store with different locale
17+
*/
18+
class ProductSearchWithTranslatedMessageTest extends GraphQlAbstract
19+
{
20+
/**
21+
* Test translated error message in non default store
22+
*
23+
* @magentoApiDataFixture Magento/Store/_files/second_store.php
24+
* @magentoApiDataFixture Magento/Translation/_files/catalog_message_translate.php
25+
* @magentoConfigFixture fixture_second_store_store general/locale/code nl_NL
26+
*/
27+
public function testErrorMessageTranslationInNonDefaultLocale()
28+
{
29+
CacheCleaner::clean(['translate', 'config']);
30+
$storeCode = "fixture_second_store";
31+
$header = ['Store' => $storeCode];
32+
$this->expectException(\Exception::class);
33+
$this->expectExceptionMessage('currentPage-waarde moet groter zijn dan 0.');
34+
$this->graphQlQuery($this->getQuery(), [], '', $header);
35+
}
36+
37+
38+
private function getQuery()
39+
{
40+
return <<<QUERY
41+
{
42+
products( currentPage: 0) {
43+
items {
44+
id
45+
name
46+
}
47+
}
48+
}
49+
QUERY;
50+
}
51+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
declare(strict_types=1);
8+
9+
/** @var \Magento\Translation\Model\ResourceModel\StringUtils $translateString */
10+
$translateString = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
11+
\Magento\Translation\Model\ResourceModel\StringUtils::class
12+
);
13+
$translateString->saveTranslate('currentPage value must be greater than 0.', 'currentPage-waarde moet groter zijn dan 0.', "nl_NL", 0);
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
declare(strict_types=1);
8+
9+
/** @var \Magento\Translation\Model\ResourceModel\StringUtils $translateString */
10+
$translateString = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
11+
\Magento\Translation\Model\ResourceModel\StringUtils::class
12+
);
13+
$translateString->deleteTranslate('currentPage value must be greater than 0.', "nl_NL", 0);

0 commit comments

Comments
 (0)