magento2-docker/dev/tests/integration/testsuite/Magento/Swatches/Model/SwatchAttributeOptionAddTes...

83 lines
2.6 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Swatches\Model;
use Magento\Catalog\Api\ProductAttributeOptionManagementInterface;
use Magento\Eav\Api\Data\AttributeOptionInterface;
use Magento\Eav\Api\Data\AttributeOptionInterfaceFactory;
/**
* Test add option of swatch attribute
*
*/
class SwatchAttributeOptionAddTest extends \PHPUnit\Framework\TestCase
{
/**
* @var \Magento\Framework\ObjectManagerInterface
*/
private $objectManager;
protected function setUp(): void
{
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
}
/**
* @magentoAppArea adminhtml
* @magentoDbIsolation enabled
* @magentoDataFixture Magento/Swatches/_files/swatch_attribute.php
*/
public function testSwatchOptionAdd()
{
/** @var \Magento\Catalog\Api\Data\ProductAttributeInterface $attribute */
$attribute = $this->objectManager
->create(\Magento\Catalog\Model\ResourceModel\Eav\Attribute::class)
->load('color_swatch', 'attribute_code');
$optionsPerAttribute = 4;
$data['options']['option'] = array_reduce(
range(10, $optionsPerAttribute),
function ($values, $index) {
$values[] = [
'label' => 'option ' . $index,
'value' => 'option_' . $index
];
return $values;
},
[]
);
/** @var AttributeOptionInterface[] $options */
$options = [];
foreach ($data['options']['option'] as $optionData) {
$options[] = $this->objectManager
->get(AttributeOptionInterfaceFactory::class)
->create(['data' => $optionData]);
}
/** @var ProductAttributeOptionManagementInterface $optionManagement */
$optionManagement = $this->objectManager->get(ProductAttributeOptionManagementInterface::class);
foreach ($options as $option) {
$optionManagement->add(
$attribute->getAttributeCode(),
$option
);
}
$items = $optionManagement->getItems($attribute->getAttributeCode());
array_walk(
$items,
function (&$item) {
/** @var AttributeOptionInterface $item */
$item = $item->getLabel();
}
);
foreach ($options as $option) {
$this->assertTrue(in_array($option->getLabel(), $items));
}
}
}