Skip to content

Commit bd0c567

Browse files
committed
PWA-2137: [GraphQL] Need to bypass webonyx type validation
- revert test changes - prevent standard types from being overridden more than once
1 parent 59d8f94 commit bd0c567

File tree

2 files changed

+36
-35
lines changed

2 files changed

+36
-35
lines changed

dev/tests/integration/testsuite/Magento/Framework/GraphQl/GraphQlConfigTest.php

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,16 @@
2323
*/
2424
class GraphQlConfigTest extends \PHPUnit\Framework\TestCase
2525
{
26-
/** @var ObjectManagerInterface */
27-
private $objectManager;
28-
29-
/** @var \Magento\Framework\GraphQl\Config */
26+
/** @var \Magento\Framework\GraphQl\Config */
3027
private $model;
3128

32-
public function __construct() {
33-
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
29+
protected function setUp(): void
30+
{
31+
/** @var ObjectManagerInterface $objectManager */
32+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
33+
/** @var Cache $cache */
34+
$cache = $objectManager->get(Cache::class);
35+
$cache->clean();
3436
$fileResolverMock = $this->getMockBuilder(
3537
\Magento\Framework\Config\FileResolverInterface::class
3638
)->disableOriginalConstructor()->getMock();
@@ -41,31 +43,21 @@ public function __construct() {
4143
$filePath2 => file_get_contents($filePath2)
4244
];
4345
$fileResolverMock->expects($this->any())->method('get')->willReturn($fileList);
44-
$graphQlReader = $this->objectManager->create(
46+
$graphQlReader = $objectManager->create(
4547
\Magento\Framework\GraphQlSchemaStitching\GraphQlReader::class,
4648
['fileResolver' => $fileResolverMock]
4749
);
48-
$reader = $this->objectManager->create(
50+
$reader = $objectManager->create(
4951
// phpstan:ignore
5052
\Magento\Framework\GraphQlSchemaStitching\Reader::class,
5153
['readers' => ['graphql_reader' => $graphQlReader]]
5254
);
53-
$data = $this->objectManager->create(
55+
$data = $objectManager->create(
5456
// phpstan:ignore
5557
\Magento\Framework\GraphQl\Config\Data::class,
5658
['reader' => $reader]
5759
);
58-
$this->model = $this->objectManager->create(\Magento\Framework\GraphQl\Config::class, ['data' =>$data]);
59-
parent::__construct();
60-
}
61-
62-
protected function setUp(): void
63-
{
64-
/** @var ObjectManagerInterface $objectManager */
65-
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
66-
/** @var Cache $cache */
67-
$cache = $objectManager->get(Cache::class);
68-
$cache->clean();
60+
$this->model = $objectManager->create(\Magento\Framework\GraphQl\Config::class, ['data' =>$data]);
6961
}
7062

7163
/**
@@ -99,15 +91,15 @@ public function testGraphQlTypeAndFieldConfigStructure()
9991
$queryFieldArguments = $queryFields[$fieldKey]->getArguments();
10092
foreach (array_keys($queryFieldArguments) as $argumentKey) {
10193
$argumentAssertionMap = [
102-
['response_field' => 'name', 'expected_value' => $queryFieldArguments[$argumentKey]->getName()],
103-
['response_field' => 'type', 'expected_value' => $queryFieldArguments[$argumentKey]->getTypeName()],
104-
['response_field' => 'description', 'expected_value' => $queryFieldArguments[$argumentKey]
105-
->getDescription()],
106-
['response_field' => 'required', 'expected_value' => $queryFieldArguments[$argumentKey]
107-
->isRequired()],
108-
['response_field' => 'isList', 'expected_value' => $queryFieldArguments[$argumentKey]->isList()],
109-
['response_field' => 'itemsRequired', 'expected_value' => $queryFieldArguments[$argumentKey]
110-
->areItemsRequired()]
94+
['response_field' => 'name', 'expected_value' => $queryFieldArguments[$argumentKey]->getName()],
95+
['response_field' => 'type', 'expected_value' => $queryFieldArguments[$argumentKey]->getTypeName()],
96+
['response_field' => 'description', 'expected_value' => $queryFieldArguments[$argumentKey]
97+
->getDescription()],
98+
['response_field' => 'required', 'expected_value' => $queryFieldArguments[$argumentKey]
99+
->isRequired()],
100+
['response_field' => 'isList', 'expected_value' => $queryFieldArguments[$argumentKey]->isList()],
101+
['response_field' => 'itemsRequired', 'expected_value' => $queryFieldArguments[$argumentKey]
102+
->areItemsRequired()]
111103
];
112104
$this->assertResponseFields(
113105
$expectedOutputArray['Query']['fields'][$fieldKey]['arguments'][$argumentKey],

lib/internal/Magento/Framework/GraphQlSchemaStitching/GraphQlReader.php

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ class GraphQlReader implements ReaderInterface
5959
*/
6060
private static $componentRegistrar;
6161

62+
/**
63+
* @var boolean
64+
*/
65+
private static $typesOverridden = false;
66+
6267
/**
6368
* @param FileResolverInterface $fileResolver
6469
* @param TypeReaderComposite $typeReader
@@ -355,12 +360,16 @@ private function addModuleNameToTypes(array $source, string $filePath): array
355360
*/
356361
private function overrideStandardGraphQLTypes(): void
357362
{
358-
$standardTypes = GraphQLType::getStandardTypes();
363+
if (!self::$typesOverridden) {
364+
$standardTypes = GraphQLType::getStandardTypes();
359365

360-
GraphQL::overrideStandardTypes([
361-
GraphQLType::INT => new IntType($standardTypes[GraphQLType::INT]->config),
362-
GraphQLType::FLOAT => new FloatType($standardTypes[GraphQLType::FLOAT]->config),
363-
GraphQLType::STRING => new StringType($standardTypes[GraphQLType::STRING]->config)
364-
]);
366+
GraphQL::overrideStandardTypes([
367+
GraphQLType::INT => new IntType($standardTypes[GraphQLType::INT]->config),
368+
GraphQLType::FLOAT => new FloatType($standardTypes[GraphQLType::FLOAT]->config),
369+
GraphQLType::STRING => new StringType($standardTypes[GraphQLType::STRING]->config)
370+
]);
371+
372+
self::$typesOverridden = true;
373+
}
365374
}
366375
}

0 commit comments

Comments
 (0)