89 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.8 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\Data\ProductAttributeInterfaceFactory;
 | 
						|
use Magento\Catalog\Api\ProductAttributeRepositoryInterface;
 | 
						|
use Magento\Eav\Api\Data\AttributeOptionInterfaceFactory;
 | 
						|
 | 
						|
/**
 | 
						|
 * Test save of swatch attribute
 | 
						|
 *
 | 
						|
 */
 | 
						|
class AttributeCreateTest extends \PHPUnit\Framework\TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @magentoAppArea adminhtml
 | 
						|
     * @magentoDbIsolation enabled
 | 
						|
     */
 | 
						|
    public function testSetScopeDefault()
 | 
						|
    {
 | 
						|
        $om = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
 | 
						|
 | 
						|
        $data = [
 | 
						|
            'is_required' => 1,
 | 
						|
            'is_visible_on_front' => 1,
 | 
						|
            'is_visible_in_advanced_search' => 0,
 | 
						|
            'attribute_code' => 'color_swatch',
 | 
						|
            'backend_type' => '',
 | 
						|
            'is_searchable' => 0,
 | 
						|
            'is_filterable' => 0,
 | 
						|
            'is_filterable_in_search' => 0,
 | 
						|
            'frontend_label' => 'Attribute ',
 | 
						|
        ];
 | 
						|
        $optionsPerAttribute = 3;
 | 
						|
 | 
						|
        $data['frontend_input'] = 'swatch_visual';
 | 
						|
        $data['swatch_input_type'] = 'visual';
 | 
						|
        $data['swatchvisual']['value'] = array_reduce(
 | 
						|
            range(1, $optionsPerAttribute),
 | 
						|
            function ($values, $index) use ($optionsPerAttribute) {
 | 
						|
                $values['option_' . $index] = '#'
 | 
						|
                    . str_repeat(
 | 
						|
                        dechex(255 * $index / $optionsPerAttribute),
 | 
						|
                        3
 | 
						|
                    );
 | 
						|
                return $values;
 | 
						|
            },
 | 
						|
            []
 | 
						|
        );
 | 
						|
        $data['optionvisual']['value'] = array_reduce(
 | 
						|
            range(1, $optionsPerAttribute),
 | 
						|
            function ($values, $index) {
 | 
						|
                $values['option_' . $index] = ['option ' . $index];
 | 
						|
                return $values;
 | 
						|
            },
 | 
						|
            []
 | 
						|
        );
 | 
						|
 | 
						|
        $data['options']['option'] = array_reduce(
 | 
						|
            range(1, $optionsPerAttribute),
 | 
						|
            function ($values, $index) {
 | 
						|
                $values[] = [
 | 
						|
                    'label' => 'option ' . $index,
 | 
						|
                    'value' => 'option_' . $index
 | 
						|
                ];
 | 
						|
                return $values;
 | 
						|
            },
 | 
						|
            []
 | 
						|
        );
 | 
						|
 | 
						|
        $options = [];
 | 
						|
        foreach ($data['options']['option'] as $optionData) {
 | 
						|
            $options[] = $om->get(AttributeOptionInterfaceFactory::class)->create(['data' => $optionData]);
 | 
						|
        }
 | 
						|
 | 
						|
        $attribute = $om->get(ProductAttributeInterfaceFactory::class)
 | 
						|
            ->create(['data' => $data]);
 | 
						|
        $attribute->setOptions($options);
 | 
						|
        $attribute->setNote('auto');
 | 
						|
 | 
						|
        $attribute = $om->get(ProductAttributeRepositoryInterface::class)->save($attribute);
 | 
						|
        $this->assertNotEmpty($attribute->getId());
 | 
						|
        $this->assertEquals('swatch_visual', $attribute->getFrontendInput());
 | 
						|
    }
 | 
						|
}
 |