Skip to content

Commit f9706db

Browse files
committed
Merge remote-tracking branch 'sudheer/30349-product-filter-with-categoryids' into HB-PR-delivery-Oct
2 parents 6bc8dc4 + afe3cd9 commit f9706db

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/ProductSearch.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public function getList(
113113
$searchResults = $this->searchResultsFactory->create();
114114
$searchResults->setSearchCriteria($searchCriteriaForCollection);
115115
$searchResults->setItems($collection->getItems());
116-
$searchResults->setTotalCount($searchResult->getTotalCount());
116+
$searchResults->setTotalCount($collection->getSize());
117117
return $searchResults;
118118
}
119119

app/code/Magento/CatalogGraphQl/Model/Resolver/Products/SearchCriteria/CollectionProcessor/FilterProcessor/CategoryFilter.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ public function __construct(
5151
*/
5252
public function apply(Filter $filter, AbstractDb $collection)
5353
{
54+
$conditionType = $filter->getConditionType();
55+
if ($conditionType !== 'eq') {
56+
return true;
57+
}
58+
5459
$categoryIds = $filter->getValue();
5560
if (!is_array($categoryIds)) {
5661
$categoryIds = [$categoryIds];

dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductSearchTest.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1454,11 +1454,12 @@ public function testFilterProductsForExactMatchingName()
14541454
*/
14551455
public function testFilteringForProductsFromMultipleCategories()
14561456
{
1457+
$categoriesIds = ["4","5","12"];
14571458
$query
14581459
= <<<QUERY
14591460
{
14601461
products(filter:{
1461-
category_id :{in:["4","5","12"]}
1462+
category_id :{in:["{$categoriesIds[0]}","{$categoriesIds[1]}","{$categoriesIds[2]}"]}
14621463
})
14631464
{
14641465
items
@@ -1484,6 +1485,21 @@ public function testFilteringForProductsFromMultipleCategories()
14841485
$response = $this->graphQlQuery($query);
14851486
/** @var ProductRepositoryInterface $productRepository */
14861487
$this->assertEquals(3, $response['products']['total_count']);
1488+
$actualProducts = [];
1489+
foreach ($categoriesIds as $categoriesId) {
1490+
/** @var CategoryLinkManagement $productLinks */
1491+
$productLinks = ObjectManager::getInstance()->get(CategoryLinkManagement::class);
1492+
$links = $productLinks->getAssignedProducts($categoriesId);
1493+
$links = array_reverse($links);
1494+
foreach ($links as $linkProduct) {
1495+
$productRepository = ObjectManager::getInstance()->get(ProductRepositoryInterface::class);
1496+
/** @var ProductInterface $product */
1497+
$product = $productRepository->get($linkProduct->getSku());
1498+
$actualProducts[$linkProduct->getSku()] = $product->getName();
1499+
}
1500+
}
1501+
$expectedProducts = array_column($response['products']['items'], "name", "sku");
1502+
$this->assertEquals($expectedProducts, $actualProducts);
14871503
}
14881504

14891505
/**

0 commit comments

Comments
 (0)