Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions app/code/Magento/CatalogGraphQl/etc/schema.graphqls
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,8 @@ interface ProductInterface @typeResolver(class: "Magento\\CatalogGraphQl\\Model\
canonical_url: String @doc(description: "The 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")
custom_attributesV2(filters: AttributeFilterInput): ProductCustomAttributes @doc(description: "Product custom attributes.") @resolver(class: "Magento\\CatalogGraphQl\\Model\\Resolver\\Product\\ProductCustomAttributes")
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: "Contains attributes specific to tangible products.") {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php
/**
* Copyright 2021 Adobe
* All Rights Reserved.
*/
declare(strict_types=1);

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_with_options.php
*
* @return void
* @throws Exception
*/
public function testHasOptionsAndRequiredOptionsAttribute(): void
{
$productSku = 'simple';
$query = <<<QUERY
{
products(filter: {sku: {eq: "{$productSku}"}}) {
items {
sku
has_options
required_options
}
}
}
QUERY;
$response = $this->graphQlQuery($query);

$item = $response['products']['items'][0];
$this->assertSame($productSku, $item['sku']);
$this->assertArrayHasKey('has_options', $item);
$this->assertArrayHasKey('required_options', $item);
$this->assertTrue($item['has_options']);
$this->assertTrue($item['required_options']);
}
}