magento / magento2

Prior to making any Submission(s), you must sign an Adobe Contributor License Agreement, available here at: https://opensource.adobe.com/cla.html. All Submissions you make to Adobe Inc. and its affiliates, assigns and subsidiaries (collectively “Adobe”) are subject to the terms of the Adobe Contributor License Agreement.
http://www.magento.com
Open Software License 3.0
11.35k stars 9.28k forks source link

GraphQL categories field under ProductInterface contains disabled categories #38857

Open edas11 opened 1 week ago

edas11 commented 1 week ago

Preconditions and environment

Steps to reproduce

  1. Assign a disabled category to a product.
  2. Call getProductDetailForProductPage PWA studio graphql query with $urlKey equal to the url key of product from step 1. Query is similar to this one:
        products(filter: { url_key: { eq: $urlKey } }) {
            items {
                id
                uid
                categories {
                    id
                    uid
                    name
                    breadcrumbs {
                        category_uid
                    }
                }
                // Other product fields
            }
        }
    }

Expected result

The categories field in the response contains only active categories.

Actual result

The categories field in the response contains both active and disabled categories.

Additional information

The following patch for magento/module-catalog-graph-ql seems to fix the issue.

--- a/Model/Resolver/Categories.php 2024-06-21 09:45:39.372791239 +0300
+++ b/Model/Resolver/Categories.php 2024-06-21 09:53:11.208634862 +0300
@@ -123,6 +123,7 @@
                 if (!$this->collection->isLoaded()) {
                     $that->attributesJoiner->join($info->fieldNodes[0], $this->collection, $info);
                     $this->collection->addIdFilter($this->categoryIds);
+                    $this->collection->addIsActiveFilter();
                 }
                 /** @var CategoryInterface | \Magento\Catalog\Model\Category $item */
                 foreach ($this->collection as $item) {

Release note

No response

Triage and priority

m2-assistant[bot] commented 1 week ago

Hi @edas11. Thank you for your report. To speed up processing of this issue, make sure that the issue is reproducible on the vanilla Magento instance following Steps to reproduce. To deploy vanilla Magento instance on our environment, Add a comment to the issue:

m2-assistant[bot] commented 1 week ago

Hi @engcom-Delta. Thank you for working on this issue. In order to make sure that issue has enough information and ready for development, please read and check the following instruction: :point_down:

engcom-Delta commented 1 day ago

Hi @edas11 ,

Verified the issue on 2.4-develop and we are not able to reproduce this issue.

Preconditions and environment

Steps to reproduce:-

1.Assign a disabled category to a product. 2.Graphql query with $urlKey equal to the url key of product from step 1.

Actual result: The categories field in the response contains only disabled category.

product details

Screenshot 2024-06-27 at 11 00 13 PM Screenshot 2024-06-27 at 11 00 23 PM

product assigned to disabled category

Screenshot 2024-06-27 at 11 01 02 PM

Graphql result

Screenshot 2024-06-27 at 11 01 30 PM

Please refer the attached screenshots and let us know if we missed anything.