Example #1
0
 /**
  * Get product media by fallback:
  * 1stly by default attribute values
  * 2ndly by getting base image from configurable product
  *
  * @return string
  */
 public function execute()
 {
     $productMedia = [];
     if ($productId = (int) $this->getRequest()->getParam('product_id')) {
         $currentConfigurable = $this->productModelFactory->create()->load($productId);
         $attributes = (array) $this->getRequest()->getParam('attributes');
         if (!empty($attributes)) {
             $product = $this->getProductVariationWithMedia($currentConfigurable, $attributes);
         }
         if ((empty($product) || (!$product->getImage() || $product->getImage() == 'no_selection')) && isset($currentConfigurable)) {
             $product = $currentConfigurable;
         }
         $productMedia = $this->swatchHelper->getProductMediaGallery($product);
     }
     /** @var \Magento\Framework\Controller\Result\Json $resultJson */
     $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON);
     $resultJson->setData($productMedia);
     return $resultJson;
 }
Example #2
0
 /**
  * @dataProvider dataForMediaGallery
  */
 public function testGetProductMediaGallery($mediaGallery, $image)
 {
     $this->productMock->expects($this->once())->method('getMediaAttributeValues')->willReturn($mediaGallery);
     $this->imageHelperMock->expects($this->any())->method('init')->willReturnMap([[$this->productMock, 'product_page_image_large', [], $this->imageHelperMock], [$this->productMock, 'product_page_image_medium', [], $this->imageHelperMock], [$this->productMock, 'product_page_image_small', [], $this->imageHelperMock]]);
     $this->imageHelperMock->expects($this->any())->method('setImageFile')->with($image)->willReturnSelf();
     $this->imageHelperMock->expects($this->any())->method('constrainOnly')->willReturnSelf();
     $this->imageHelperMock->expects($this->any())->method('keepAspectRatio')->willReturnSelf();
     $this->imageHelperMock->expects($this->any())->method('keepFrame')->willReturnSelf();
     $this->imageHelperMock->expects($this->any())->method('getUrl')->willReturn('http://full_path_to_image/magento1.png');
     $mediaObject = $this->getMock('\\Magento\\Framework\\DataObject', [], [], '', false);
     $iterator = new \ArrayIterator([$mediaObject]);
     $mediaCollectionMock = $this->getMock('\\Magento\\Framework\\Data\\Collection', [], [], '', false);
     $mediaCollectionMock->expects($this->any())->method('getIterator')->willReturn($iterator);
     $mediaObject->method('getData')->withConsecutive(['value_id'], ['file'])->willReturnOnConsecutiveCalls(0, $image);
     $this->productMock->method('getMediaGalleryImages')->willReturn($mediaCollectionMock);
     $this->swatchHelperObject->getProductMediaGallery($this->productMock);
 }