public function testSetMediaGalleryEntries() { $expectedResult = ['images' => [['value_id' => 1, 'file' => 'file1.jpg', 'label' => 'label_text', 'position' => 4, 'disabled' => false, 'types' => ['image'], 'content' => ['data' => [ImageContentInterface::NAME => 'product_image', ImageContentInterface::TYPE => 'image/jpg', ImageContentInterface::BASE64_ENCODED_DATA => 'content_data']], 'media_type' => 'image']]]; $entryMock = $this->getMockBuilder('\\Magento\\Catalog\\Api\\Data\\ProductAttributeMediaGalleryEntryInterface')->setMethods(['getId', 'getFile', 'getLabel', 'getPosition', 'isDisabled', 'types', 'getContent', 'getMediaType'])->getMockForAbstractClass(); $result = ['value_id' => 1, 'file' => 'file1.jpg', 'label' => 'label_text', 'position' => 4, 'disabled' => false, 'types' => ['image'], 'content' => ['data' => [ImageContentInterface::NAME => 'product_image', ImageContentInterface::TYPE => 'image/jpg', ImageContentInterface::BASE64_ENCODED_DATA => 'content_data']], 'media_type' => 'image']; $this->converterMock->expects($this->once())->method('convertFrom')->with($entryMock)->willReturn($result); $this->model->setMediaGalleryEntries([$entryMock]); $this->assertEquals($expectedResult, $this->model->getMediaGallery()); }
public function testSetMediaGalleryEntries() { $expectedResult = ['images' => [["value_id" => 1, 'file' => 'file1.jpg', 'label' => 'label_text', 'position' => 4, 'disabled' => false, 'types' => ['image'], 'content' => ['entry_data' => 'content_data', 'mime_type' => 'image/jpg', 'name' => 'product_image']]]]; $contentMock = $this->getMockBuilder('\\Magento\\Catalog\\Api\\Data\\ProductAttributeMediaGalleryEntryContentInterface')->setMethods(['getEntryData', 'getMimeType', 'getName'])->getMockForAbstractClass(); $contentMock->expects($this->once())->method('getEntryData')->willReturn($expectedResult['images'][0]['content']['entry_data']); $contentMock->expects($this->once())->method('getMimeType')->willReturn($expectedResult['images'][0]['content']['mime_type']); $contentMock->expects($this->once())->method('getName')->willReturn($expectedResult['images'][0]['content']['name']); $entryMock = $this->getMockBuilder('\\Magento\\Catalog\\Api\\Data\\ProductAttributeMediaGalleryEntryInterface')->setMethods(['getId', 'getFile', 'getLabel', 'getPosition', 'isDisabled', 'types', 'getContent'])->getMockForAbstractClass(); $entryMock->expects($this->once())->method('getId')->willReturn($expectedResult['images'][0]['value_id']); $entryMock->expects($this->once())->method('getFile')->willReturn($expectedResult['images'][0]['file']); $entryMock->expects($this->once())->method('getLabel')->willReturn($expectedResult['images'][0]['label']); $entryMock->expects($this->once())->method('getPosition')->willReturn($expectedResult['images'][0]['position']); $entryMock->expects($this->once())->method('isDisabled')->willReturn($expectedResult['images'][0]['disabled']); $entryMock->expects($this->once())->method('getTypes')->willReturn($expectedResult['images'][0]['types']); $entryMock->expects($this->once())->method('getContent')->willReturn($contentMock); $this->model->setMediaGalleryEntries([$entryMock]); $this->assertEquals($expectedResult, $this->model->getMediaGallery()); }
public function testSetMediaGalleryEntries() { $expectedResult = ['images' => [["value_id" => 1, 'file' => 'file1.jpg', 'label' => 'label_text', 'position' => 4, 'disabled' => false, 'types' => ['image'], 'content' => ['data' => [ImageContentInterface::NAME => 'product_image', ImageContentInterface::TYPE => 'image/jpg', ImageContentInterface::BASE64_ENCODED_DATA => 'content_data']]]]]; $contentMock = $this->getMockBuilder('\\Magento\\Framework\\Api\\Data\\ImageContentInterface')->setMethods(['getBase64EncodedData', 'getType', 'getName'])->disableOriginalConstructor()->getMockForAbstractClass(); $contentMock->expects($this->once())->method('getBase64EncodedData')->willReturn($expectedResult['images'][0]['content']['data']['base64_encoded_data']); $contentMock->expects($this->once())->method('getType')->willReturn($expectedResult['images'][0]['content']['data']['type']); $contentMock->expects($this->once())->method('getName')->willReturn($expectedResult['images'][0]['content']['data']['name']); $entryMock = $this->getMockBuilder('\\Magento\\Catalog\\Api\\Data\\ProductAttributeMediaGalleryEntryInterface')->setMethods(['getId', 'getFile', 'getLabel', 'getPosition', 'isDisabled', 'types', 'getContent'])->getMockForAbstractClass(); $entryMock->expects($this->once())->method('getId')->willReturn($expectedResult['images'][0]['value_id']); $entryMock->expects($this->once())->method('getFile')->willReturn($expectedResult['images'][0]['file']); $entryMock->expects($this->once())->method('getLabel')->willReturn($expectedResult['images'][0]['label']); $entryMock->expects($this->once())->method('getPosition')->willReturn($expectedResult['images'][0]['position']); $entryMock->expects($this->once())->method('isDisabled')->willReturn($expectedResult['images'][0]['disabled']); $entryMock->expects($this->once())->method('getTypes')->willReturn($expectedResult['images'][0]['types']); $entryMock->expects($this->once())->method('getContent')->willReturn($contentMock); $this->model->setMediaGalleryEntries([$entryMock]); $this->assertEquals($expectedResult, $this->model->getMediaGallery()); }
/** * @param \Magento\Catalog\Model\Product $product * @param array $productData * * @return array */ public function processMediaGallery($product, $productData) { if (!empty($productData['image'])) { $image = $productData['image']; if (!isset($productData['media_gallery']['images'])) { $productData['media_gallery']['images'] = []; } if (false === array_search($image, array_column($productData['media_gallery']['images'], 'file'))) { $productData['small_image'] = $productData['thumbnail'] = $image; $productData['media_gallery']['images'][] = ['position' => 1, 'file' => $image, 'disabled' => 0, 'label' => '']; } } if ($product->getMediaGallery('images') && !empty($productData['media_gallery']['images'])) { $gallery = array_map(function ($image) { $image['removed'] = 1; return $image; }, $product->getMediaGallery('images')); $gallery = array_merge($productData['media_gallery']['images'], $gallery); $productData['media_gallery']['images'] = $gallery; } return $productData; }