From 5cfc9bc9f360700534ac90ddb363dea0a69eb1dc Mon Sep 17 00:00:00 2001 From: Karyna Date: Wed, 2 Jun 2021 16:41:35 +0300 Subject: [PATCH 1/2] Issue 32793 Add has_options and required_options to grapql Product Interface --- .../CatalogGraphQl/etc/schema.graphqls | 2 ++ .../GraphQl/Catalog/ProductHasOptionsTest.php | 36 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductHasOptionsTest.php diff --git a/app/code/Magento/CatalogGraphQl/etc/schema.graphqls b/app/code/Magento/CatalogGraphQl/etc/schema.graphqls index b1790f4bc628b..81bd4d84b1059 100644 --- a/app/code/Magento/CatalogGraphQl/etc/schema.graphqls +++ b/app/code/Magento/CatalogGraphQl/etc/schema.graphqls @@ -123,6 +123,8 @@ interface ProductInterface @typeResolver(class: "Magento\\CatalogGraphQl\\Model\ categories: [CategoryInterface] @doc(description: "The categories assigned to a product.") @resolver(class: "Magento\\CatalogGraphQl\\Model\\Resolver\\Categories") @cache(cacheIdentity: "Magento\\CatalogGraphQl\\Model\\Resolver\\Category\\CategoriesIdentity") canonical_url: String @doc(description: "Relative canonical URL. This value is returned only if the system setting 'Use Canonical Link Meta Tag For Products' is enabled") @resolver(class: "Magento\\CatalogGraphQl\\Model\\Resolver\\Product\\CanonicalUrl") media_gallery: [MediaGalleryInterface] @doc(description: "An array of Media Gallery objects.") @resolver(class: "Magento\\CatalogGraphQl\\Model\\Resolver\\Product\\MediaGallery") + has_options: Boolean @doc(description: "Indicates whether additional options have been created for the product.") + required_options: Boolean @doc(description: "Indicates whether the product has required options.") } interface PhysicalProductInterface @typeResolver(class: "Magento\\CatalogGraphQl\\Model\\ProductInterfaceTypeResolverComposite") @doc(description: "PhysicalProductInterface contains attributes specific to tangible products.") { diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductHasOptionsTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductHasOptionsTest.php new file mode 100644 index 0000000000000..fcecfc29eb2d6 --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductHasOptionsTest.php @@ -0,0 +1,36 @@ +graphQlQuery($query); + + self::assertArrayHasKey('has_options', $response['products']['items'][0]); + self::assertArrayHasKey('required_options', $response['products']['items'][0]); + } +} From 9576465e3de8227a27dd5a6a8700479cdd65b38a Mon Sep 17 00:00:00 2001 From: Karyna Date: Thu, 22 Jul 2021 18:35:35 +0300 Subject: [PATCH 2/2] Improve code style --- .../GraphQl/Catalog/ProductHasOptionsTest.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductHasOptionsTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductHasOptionsTest.php index fcecfc29eb2d6..a92a2d11bd72b 100644 --- a/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductHasOptionsTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductHasOptionsTest.php @@ -7,14 +7,21 @@ namespace Magento\GraphQl\Catalog; +use Exception; use Magento\TestFramework\TestCase\GraphQlAbstract; +/** + * Test for checking has_options & required_options attributes in Products query. + */ class ProductHasOptionsTest extends GraphQlAbstract { /** * @magentoApiDataFixture Magento/Catalog/_files/product_simple_with_custom_options.php + * + * @return void + * @throws Exception */ - public function testHasOptionsAndRequiredOptionsAttribute() + public function testHasOptionsAndRequiredOptionsAttribute(): void { $productSku = 'simple_with_custom_options'; $query = <<graphQlQuery($query); - self::assertArrayHasKey('has_options', $response['products']['items'][0]); - self::assertArrayHasKey('required_options', $response['products']['items'][0]); + $this->assertArrayHasKey('has_options', $response['products']['items'][0]); + $this->assertArrayHasKey('required_options', $response['products']['items'][0]); } }