/vendor/magento/module-catalog/Test/Unit/Model/Product/Gallery/GalleryManagementTest.php
https://gitlab.com/yousafsyed/easternglamor · PHP · 290 lines · 208 code · 30 blank · 52 comment · 0 complexity · 989a24d05e681c653de36f5572b3c4ee MD5 · raw file
- <?php
- /**
- *
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
- // @codingStandardsIgnoreFile
- namespace Magento\Catalog\Test\Unit\Model\Product\Gallery;
- class GalleryManagementTest extends \PHPUnit_Framework_TestCase
- {
- /**
- * @var \Magento\Catalog\Model\Product\Gallery\GalleryManagement
- */
- protected $model;
- /**
- * @var \PHPUnit_Framework_MockObject_MockObject
- */
- protected $productRepositoryMock;
- /**
- * @var \PHPUnit_Framework_MockObject_MockObject
- */
- protected $contentValidatorMock;
- /**
- * @var \PHPUnit_Framework_MockObject_MockObject
- */
- protected $productMock;
- /**
- * @var \PHPUnit_Framework_MockObject_MockObject
- */
- protected $mediaGalleryEntryMock;
- /**
- * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Api\AttributeValue
- */
- protected $attributeValueMock;
- protected function setUp()
- {
- $this->productRepositoryMock = $this->getMock('\Magento\Catalog\Api\ProductRepositoryInterface');
- $this->contentValidatorMock = $this->getMock('\Magento\Framework\Api\ImageContentValidatorInterface');
- $this->productMock = $this->getMock(
- '\Magento\Catalog\Model\Product',
- [
- 'setStoreId',
- 'getData',
- 'getStoreId',
- 'getSku',
- 'getCustomAttribute',
- 'getMediaGalleryEntries',
- 'setMediaGalleryEntries',
- ],
- [],
- '',
- false
- );
- $this->mediaGalleryEntryMock =
- $this->getMock('Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface');
- $this->model = new \Magento\Catalog\Model\Product\Gallery\GalleryManagement(
- $this->productRepositoryMock,
- $this->contentValidatorMock
- );
- $this->attributeValueMock = $this->getMockBuilder('\Magento\Framework\Api\AttributeValue')
- ->disableOriginalConstructor()
- ->getMock();
- }
- /**
- * @expectedException \Magento\Framework\Exception\InputException
- * @expectedExceptionMessage The image content is not valid.
- */
- public function testCreateWithInvalidImageException()
- {
- $entryContentMock = $this->getMockBuilder('\Magento\Framework\Api\Data\ImageContentInterface')
- ->disableOriginalConstructor()
- ->getMock();
- $this->mediaGalleryEntryMock->expects($this->any())->method('getContent')->willReturn($entryContentMock);
- $this->contentValidatorMock->expects($this->once())->method('isValid')->with($entryContentMock)
- ->willReturn(false);
- $this->model->create("sku", $this->mediaGalleryEntryMock);
- }
- /**
- * @expectedException \Magento\Framework\Exception\StateException
- * @expectedExceptionMessage Cannot save product.
- */
- public function testCreateWithCannotSaveException()
- {
- $productSku = 'mediaProduct';
- $entryContentMock = $this->getMockBuilder('\Magento\Framework\Api\Data\ImageContentInterface')
- ->disableOriginalConstructor()
- ->getMock();;
- $this->mediaGalleryEntryMock->expects($this->any())->method('getContent')->willReturn($entryContentMock);
- $this->productRepositoryMock->expects($this->once())
- ->method('get')
- ->with($productSku)
- ->willReturn($this->productMock);
- $this->contentValidatorMock->expects($this->once())->method('isValid')->with($entryContentMock)
- ->willReturn(true);
- $this->productRepositoryMock->expects($this->once())->method('save')->with($this->productMock)
- ->willThrowException(new \Exception());
- $this->model->create($productSku, $this->mediaGalleryEntryMock);
- }
- public function testCreate()
- {
- $productSku = 'mediaProduct';
- $entryContentMock = $this->getMock(
- 'Magento\Framework\Api\Data\ImageContentInterface'
- );
- $this->mediaGalleryEntryMock->expects($this->any())->method('getContent')->willReturn($entryContentMock);
- $this->productRepositoryMock->expects($this->once())
- ->method('get')
- ->with($productSku)
- ->willReturn($this->productMock);
- $this->productRepositoryMock->expects($this->once())
- ->method('save')
- ->with($this->productMock)
- ->willReturn($this->productMock);
- $this->contentValidatorMock->expects($this->once())->method('isValid')->with($entryContentMock)
- ->willReturn(true);
- $newEntryMock = $this->getMock('\Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface');
- $newEntryMock->expects($this->exactly(2))->method('getId')->willReturn(42);
- $this->productMock->expects($this->at(2))->method('getMediaGalleryEntries')
- ->willReturn([$newEntryMock]);
- $this->productMock->expects($this->once())->method('setMediaGalleryEntries')
- ->with([$this->mediaGalleryEntryMock]);
- $this->assertEquals(42, $this->model->create($productSku, $this->mediaGalleryEntryMock));
- }
- /**
- * @expectedException \Magento\Framework\Exception\NoSuchEntityException
- * @expectedExceptionMessage There is no image with provided ID.
- */
- public function testUpdateWithNonExistingImage()
- {
- $productSku = 'testProduct';
- $entryMock = $this->getMock('\Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface');
- $entryId = 42;
- $this->productRepositoryMock->expects($this->once())->method('get')->with($productSku)
- ->willReturn($this->productMock);
- $existingEntryMock = $this->getMock('\Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface');
- $existingEntryMock->expects($this->once())->method('getId')->willReturn(43);
- $this->productMock->expects($this->once())->method('getMediaGalleryEntries')
- ->willReturn([$existingEntryMock]);
- $entryMock->expects($this->once())->method('getId')->willReturn($entryId);
- $this->model->update($productSku, $entryMock);
- }
- /**
- * @expectedException \Magento\Framework\Exception\StateException
- * @expectedExceptionMessage Cannot save product.
- */
- public function testUpdateWithCannotSaveException()
- {
- $productSku = 'testProduct';
- $entryMock = $this->getMock('\Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface');
- $entryId = 42;
- $this->productRepositoryMock->expects($this->once())->method('get')->with($productSku)
- ->willReturn($this->productMock);
- $existingEntryMock = $this->getMock('\Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface');
- $existingEntryMock->expects($this->once())->method('getId')->willReturn($entryId);
- $this->productMock->expects($this->once())->method('getMediaGalleryEntries')
- ->willReturn([$existingEntryMock]);
- $entryMock->expects($this->once())->method('getId')->willReturn($entryId);
- $this->productRepositoryMock->expects($this->once())->method('save')->with($this->productMock)
- ->willThrowException(new \Exception());
- $this->model->update($productSku, $entryMock);
- }
- public function testUpdate()
- {
- $productSku = 'testProduct';
- $entryMock = $this->getMock('\Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface');
- $entryId = 42;
- $this->productRepositoryMock->expects($this->once())->method('get')->with($productSku)
- ->willReturn($this->productMock);
- $existingEntryMock = $this->getMock('\Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface');
- $existingEntryMock->expects($this->once())->method('getId')->willReturn($entryId);
- $this->productMock->expects($this->once())->method('getMediaGalleryEntries')
- ->willReturn([$existingEntryMock]);
- $entryMock->expects($this->once())->method('getId')->willReturn($entryId);
- $this->productMock->expects($this->once())->method('setMediaGalleryEntries')
- ->willReturn([$entryMock]);
- $this->productRepositoryMock->expects($this->once())->method('save')->with($this->productMock);
- $this->assertTrue($this->model->update($productSku, $entryMock));
- }
- /**
- * @expectedException \Magento\Framework\Exception\NoSuchEntityException
- * @expectedExceptionMessage There is no image with provided ID.
- */
- public function testRemoveWithNonExistingImage()
- {
- $productSku = 'testProduct';
- $entryId = 42;
- $this->productRepositoryMock->expects($this->once())->method('get')->with($productSku)
- ->willReturn($this->productMock);
- $existingEntryMock = $this->getMock('\Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface');
- $existingEntryMock->expects($this->once())->method('getId')->willReturn(43);
- $this->productMock->expects($this->once())->method('getMediaGalleryEntries')
- ->willReturn([$existingEntryMock]);
- $this->model->remove($productSku, $entryId);
- }
- public function testRemove()
- {
- $productSku = 'testProduct';
- $entryId = 42;
- $this->productRepositoryMock->expects($this->once())->method('get')->with($productSku)
- ->willReturn($this->productMock);
- $existingEntryMock = $this->getMock('\Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface');
- $existingEntryMock->expects($this->once())->method('getId')->willReturn(42);
- $this->productMock->expects($this->once())->method('getMediaGalleryEntries')
- ->willReturn([$existingEntryMock]);
- $this->productMock->expects($this->once())->method('setMediaGalleryEntries')
- ->with([]);
- $this->productRepositoryMock->expects($this->once())->method('save')->with($this->productMock);
- $this->assertTrue($this->model->remove($productSku, $entryId));
- }
- /**
- * @expectedException \Magento\Framework\Exception\NoSuchEntityException
- * @expectedExceptionMessage Such product doesn't exist
- */
- public function testGetWithNonExistingProduct()
- {
- $productSku = 'testProduct';
- $imageId = 42;
- $this->productRepositoryMock->expects($this->once())->method('get')->with($productSku)
- ->willThrowException(new \Exception());
- $this->model->get($productSku, $imageId);
- }
- /**
- * @expectedException \Magento\Framework\Exception\NoSuchEntityException
- * @expectedExceptionText Such image doesn't exist
- */
- public function testGetWithNonExistingImage()
- {
- $productSku = 'testProduct';
- $imageId = 43;
- $this->productRepositoryMock->expects($this->once())->method('get')->with($productSku)
- ->willReturn($this->productMock);
- $existingEntryMock = $this->getMock('\Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface');
- $existingEntryMock->expects($this->once())->method('getId')->willReturn(44);
- $this->productMock->expects($this->once())->method('getMediaGalleryEntries')
- ->willReturn([$existingEntryMock]);
- $this->model->get($productSku, $imageId);
- }
- public function testGet()
- {
- $productSku = 'testProduct';
- $imageId = 42;
- $this->productRepositoryMock->expects($this->once())->method('get')->with($productSku)
- ->willReturn($this->productMock);
- $existingEntryMock = $this->getMock('\Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface');
- $existingEntryMock->expects($this->once())->method('getId')->willReturn(42);
- $this->productMock->expects($this->once())->method('getMediaGalleryEntries')
- ->willReturn([$existingEntryMock]);
- $this->assertEquals($existingEntryMock, $this->model->get($productSku, $imageId));
- }
- public function testGetList()
- {
- $productSku = 'testProductSku';
- $this->productRepositoryMock->expects($this->once())->method('get')->with($productSku)
- ->willReturn($this->productMock);
- $entryMock = $this->getMock('\Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface');
- $this->productMock->expects($this->once())->method('getMediaGalleryEntries')
- ->willReturn([$entryMock]);
- $this->assertEquals([$entryMock], $this->model->getList($productSku));
- }
- }