Skip to content

Commit ff4070b

Browse files
committed
B2B-2677: [MediaGallery]Implement data caching for GraphQL results on resolver level
- Fix incorrect invalidation logic
1 parent 9b82e73 commit ff4070b

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

app/code/Magento/CatalogGraphQl/Plugin/Product/UpdateIdentities.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ private function isMediaGalleryChanged(Product $product): bool
6565
$mediaGalleryImageKeys = array_keys($mediaGalleryImages);
6666

6767
if ($origMediaGalleryImageKeys !== $mediaGalleryImageKeys) {
68-
return false;
68+
return true;
6969
}
7070

7171
// remove keys from original array that are not in new array; some keys are omitted from the new array on save

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
namespace Magento\GraphQl\Catalog\ResolverCache;
99

10+
use Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterfaceFactory;
1011
use Magento\Catalog\Api\Data\ProductInterface;
1112
use Magento\Catalog\Api\ProductManagementInterface;
1213
use Magento\Catalog\Api\ProductRepositoryInterface;
@@ -15,6 +16,7 @@
1516
use Magento\Catalog\Test\Fixture\Product as ProductFixture;
1617
use Magento\CatalogGraphQl\Model\Resolver\Cache\Product\MediaGallery\ResolverCacheIdentity;
1718
use Magento\CatalogGraphQl\Model\Resolver\Product\MediaGallery;
19+
use Magento\Framework\Api\Data\ImageContentInterfaceFactory;
1820
use Magento\Framework\App\Area as AppArea;
1921
use Magento\Framework\App\ObjectManager\ConfigLoader;
2022
use Magento\Framework\App\State as AppState;
@@ -215,6 +217,35 @@ public function actionMechanismProvider(): array
215217
$productRepository = $objectManager->get(ProductRepositoryInterface::class);
216218

217219
return [
220+
'add new media gallery entry' => [
221+
function (ProductInterface $product) use ($galleryManagement, $objectManager) {
222+
/** @var ProductAttributeMediaGalleryEntryInterfaceFactory $mediaGalleryEntryFactory */
223+
$mediaGalleryEntryFactory = $objectManager->get(
224+
ProductAttributeMediaGalleryEntryInterfaceFactory::class
225+
);
226+
227+
/** @var ImageContentInterfaceFactory $imageContentFactory */
228+
$imageContentFactory = $objectManager->get(ImageContentInterfaceFactory::class);
229+
$imageContent = $imageContentFactory->create();
230+
$imageContent->setBase64EncodedData(
231+
// black 1x1 image
232+
'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII='
233+
);
234+
$imageContent->setType("image/png");
235+
$imageContent->setName("new_image.png");
236+
237+
$newImage = $mediaGalleryEntryFactory->create();
238+
$newImage->setDisabled(false);
239+
$newImage->setFile('/n/e/new_image.png');
240+
$newImage->setLabel('New Image Alt Text');
241+
$newImage->setMediaType('image');
242+
$newImage->setPosition(2);
243+
$newImage->setContent($imageContent);
244+
245+
$galleryManagement->create($product->getSku(), $newImage);
246+
},
247+
true
248+
],
218249
'update media label' => [
219250
function (ProductInterface $product) use ($galleryManagement) {
220251
$mediaEntry = $product->getMediaGalleryEntries()[0];

0 commit comments

Comments
 (0)