/** * @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; }
/** * @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)); }
/** * @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); }