Skip to content

Commit 97f608f

Browse files
committed
#28573:wrong thumbnail - regardless of the storeConfig value configurable_thumbnail_source which points to the child or parent while rendering cart the configured_variant will always show the child
1 parent 619e173 commit 97f608f

File tree

3 files changed

+45
-3
lines changed

3 files changed

+45
-3
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\ConfigurableProductGraphQl\Plugin\Product\Configuration\Item;
9+
10+
use Magento\Catalog\Api\Data\ProductInterface;
11+
use Magento\Catalog\Model\Product\Configuration\Item\ItemInterface;
12+
use Magento\ConfigurableProduct\Model\Product\Configuration\Item\ItemProductResolver;
13+
use Magento\ConfigurableProduct\Model\Product\Type\Configurable;
14+
15+
/**
16+
* Plugin for item resolver
17+
*/
18+
class ItemResolver
19+
{
20+
/**
21+
* After plugin for final product
22+
*
23+
* @param ItemProductResolver $subject
24+
* @param $result
25+
* @param ItemInterface $item
26+
* @return ProductInterface
27+
*/
28+
public function afterGetFinalProduct(ItemProductResolver $subject, $result, ItemInterface $item): ProductInterface
29+
{
30+
if ($result->getTypeId() === Configurable::TYPE_CODE) {
31+
$option = $item->getOptionByCode('simple_product');
32+
$result = $option ? $option->getProduct() : $item->getProduct();
33+
}
34+
35+
return $result;
36+
}
37+
}

app/code/Magento/ConfigurableProductGraphQl/etc/graphql/di.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,8 @@
5959
</argument>
6060
</arguments>
6161
</type>
62+
63+
<type name="Magento\ConfigurableProduct\Model\Product\Configuration\Item\ItemProductResolver">
64+
<plugin name="configured_variant" type="Magento\ConfigurableProductGraphQl\Plugin\Product\Configuration\Item\ItemResolver"/>
65+
</type>
6266
</config>

dev/tests/api-functional/testsuite/Magento/GraphQl/ConfigurableProduct/AddConfigurableProductToCartTest.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,7 @@ public function testAddConfigurableProductWithImageToCartParentImage(): void
466466

467467
$quantity = 1;
468468
$parentSku = $product['sku'];
469+
$sku = 'simple_20';
469470

470471
$query = $this->graphQlQueryForVariant(
471472
$this->getMaskedQuoteIdByReservedOrderId->execute('test_order_1'),
@@ -482,13 +483,13 @@ public function testAddConfigurableProductWithImageToCartParentImage(): void
482483
self::assertArrayHasKey('configured_variant', $cartItem);
483484

484485
$variant = $cartItem['configured_variant'];
485-
$expectedThumbnailUrl = 'thumbnail.jpg';
486-
$expectedThumbnailLabel = 'Configurable Product';
486+
$expectedThumbnailUrl = 'magento_thumbnail.jpg';
487+
$expectedThumbnailLabel = 'Thumbnail Image';
487488
$variantImage = basename($variant['thumbnail']['url']);
488489

489490
self::assertEquals($expectedThumbnailUrl, $variantImage);
490491
self::assertEquals($expectedThumbnailLabel, $variant['thumbnail']['label']);
491-
self::assertEquals($parentSku, $variant['sku']);
492+
self::assertEquals($sku, $variant['sku']);
492493
}
493494

494495
/**

0 commit comments

Comments
 (0)