/**
  * @param string $entityType
  * @param ProductInterface $entity
  * @return ProductInterface
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function execute($entityType, $entity)
 {
     if ($entity->getTypeId() !== Configurable::TYPE_CODE) {
         return $entity;
     }
     $extensionAttributes = $entity->getExtensionAttributes();
     $extensionAttributes->setConfigurableProductLinks($this->getLinkedProducts($entity));
     $extensionAttributes->setConfigurableProductOptions($this->optionLoader->load($entity));
     $entity->setExtensionAttributes($extensionAttributes);
     return $entity;
 }
Example #2
0
 /**
  * @covers \Magento\ConfigurableProduct\Helper\Product\Options\Loader::load
  */
 public function testLoad()
 {
     $option = ['value_index' => 23];
     $this->product->expects(static::once())->method('getTypeInstance')->willReturn($this->configurable);
     $attribute = $this->getMockBuilder(Attribute::class)->disableOriginalConstructor()->setMethods(['getOptions', 'setValues'])->getMock();
     $attributes = [$attribute];
     $iterator = $this->getMockBuilder(Collection::class)->disableOriginalConstructor()->getMock();
     $iterator->expects($this->once())->method('getIterator')->willReturn(new \ArrayIterator($attributes));
     $this->configurable->expects(static::once())->method('getConfigurableAttributeCollection')->with($this->product)->willReturn($iterator);
     $attribute->expects(static::once())->method('getOptions')->willReturn([$option]);
     $optionValue = $this->getMockForAbstractClass(OptionValueInterface::class);
     $this->optionValueFactory->expects(static::once())->method('create')->willReturn($optionValue);
     $optionValue->expects(static::once())->method('setValueIndex')->with($option['value_index']);
     $attribute->expects(static::once())->method('setValues')->with([$optionValue]);
     $options = $this->loader->load($this->product);
     static::assertSame([$attribute], $options);
 }
 public function testGetList()
 {
     $productSku = "configurable";
     $this->productMock->expects(self::once())->method('getTypeId')->willReturn(Configurable::TYPE_CODE);
     $this->productRepositoryMock->expects(self::once())->method('get')->with($productSku)->willReturn($this->productMock);
     $optionMock = $this->getMock(OptionInterface::class);
     $this->optionLoader->expects(self::once())->method('load')->with($this->productMock)->willReturn([$optionMock]);
     $this->assertEquals([$optionMock], $this->model->getList($productSku));
 }
Example #4
0
 /**
  * @covers \Magento\ConfigurableProduct\Model\Product\ReadHandler::execute
  */
 public function testExecute()
 {
     $options = [['value_index' => 12], ['value_index' => 13]];
     $entityId = 1;
     $ids = [1, 2, 3];
     $product = $this->getMockBuilder(Product::class)->disableOriginalConstructor()->setMethods(['getTypeId', 'getId', 'getExtensionAttributes', 'setExtensionAttributes', 'getTypeInstance'])->getMock();
     $product->expects(static::once())->method('getTypeId')->willReturn(Configurable::TYPE_CODE);
     $extensionAttributes = $this->getMockBuilder(ProductExtensionAttributes::class)->disableOriginalConstructor()->setMethods(['setConfigurableProductOptions', 'setConfigurableProductLinks'])->getMockForAbstractClass();
     $product->expects(static::once())->method('getExtensionAttributes')->willReturn($extensionAttributes);
     $this->optionLoader->expects(static::once())->method('load')->with($product)->willReturn($options);
     $typeInstance = $this->getMockBuilder(Configurable::class)->disableOriginalConstructor()->setMethods(['getChildrenIds'])->getMock();
     $product->expects(static::once())->method('getTypeInstance')->willReturn($typeInstance);
     $product->expects(static::once())->method('getId')->willReturn($entityId);
     $typeInstance->expects(static::once())->method('getChildrenIds')->willReturn($ids);
     $product->expects(static::once())->method('setExtensionAttributes')->with($extensionAttributes);
     $entity = $this->readHandler->execute('Entity', $product);
     static::assertSame($product, $entity);
 }
 /**
  * {@inheritdoc}
  */
 public function getList($sku)
 {
     $product = $this->getProduct($sku);
     return (array) $this->optionLoader->load($product);
 }