magento2-docker/dev/tests/integration/testsuite/Magento/Eav/Setup/EavSetupTest.php

166 lines
4.7 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Eav\Setup;
/**
* Test class for Magento\Eav\Setup\EavSetup.
* @magentoDbIsolation enabled
*/
class EavSetupTest extends \PHPUnit\Framework\TestCase
{
/**
* Eav setup.
*
* @var \Magento\Eav\Setup\EavSetup
*/
private $eavSetup;
/**
* {@inheritdoc}
*/
protected function setUp(): void
{
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
$this->eavSetup = $objectManager->create(\Magento\Eav\Setup\EavSetup::class);
}
/**
* Verify that add attribute work correct attribute_code.
*
* @param string $attributeCode
*
* @dataProvider addAttributeDataProvider
*/
public function testAddAttribute($attributeCode)
{
$attributeData = $this->getAttributeData();
$this->eavSetup->addAttribute(\Magento\Catalog\Model\Product::ENTITY, $attributeCode, $attributeData);
$attribute = $this->eavSetup->getAttribute(\Magento\Catalog\Model\Product::ENTITY, $attributeCode);
$this->assertEmpty(array_diff($attributeData, $attribute));
}
/**
* Data provider for testAddAttributeThrowException().
*
* @return array
*/
public function addAttributeDataProvider()
{
return [
['eav_setup_test'],
['characters_59_characters_59_characters_59_characters_59_59_'],
];
}
/**
* Verify that add attribute throw exception if attribute_code is not valid.
*
* @param string|null $attributeCode
*
* @dataProvider addAttributeThrowExceptionDataProvider
*/
public function testAddAttributeThrowException($attributeCode)
{
$this->expectException(\Magento\Framework\Exception\LocalizedException::class);
$this->expectExceptionMessage('An attribute code must not be less than 1 and more than 60 characters.');
$attributeData = $this->getAttributeData();
$this->eavSetup->addAttribute(\Magento\Catalog\Model\Product::ENTITY, $attributeCode, $attributeData);
}
/**
* Data provider for testAddAttributeThrowException().
*
* @return array
*/
public function addAttributeThrowExceptionDataProvider()
{
return [
[null],
[''],
[' '],
['more_than_60_characters_more_than_more_than_60_characters_more'],
];
}
/**
* Verify that add attribute throw exception if attribute_code is not valid.
*
* @param string|null $attributeCode
*
* @dataProvider addInvalidAttributeThrowExceptionDataProvider
*/
public function testAddInvalidAttributeThrowException($attributeCode)
{
$this->expectException(\Magento\Framework\Exception\LocalizedException::class);
$this->expectExceptionMessage('Please use only letters (a-z or A-Z), numbers (0-9) or underscore (_) in this field,');
$attributeData = $this->getAttributeData();
$this->eavSetup->addAttribute(\Magento\Catalog\Model\Product::ENTITY, $attributeCode, $attributeData);
}
/**
* Data provider for testAddInvalidAttributeThrowException().
*
* @return array
*/
public function addInvalidAttributeThrowExceptionDataProvider()
{
return [
['1first_character_is_not_letter'],
['attribute.with.dots'],
];
}
/**
* Get simple attribute data.
*/
private function getAttributeData()
{
$attributeData = [
'type' => 'varchar',
'backend' => '',
'frontend' => '',
'label' => 'Eav Setup Test',
'input' => 'text',
'class' => '',
'source' => '',
'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
'visible' => 0,
'required' => 0,
'user_defined' => 1,
'default' => 'none',
'searchable' => 0,
'filterable' => 0,
'comparable' => 0,
'visible_on_front' => 0,
'unique' => 0,
'apply_to' => 'category',
];
return $attributeData;
}
/**
* @inheritDoc
*/
protected function tearDown(): void
{
parent::tearDown();
$reflection = new \ReflectionObject($this);
foreach ($reflection->getProperties() as $property) {
if (!$property->isStatic() && 0 !== strpos($property->getDeclaringClass()->getName(), 'PHPUnit')) {
$property->setAccessible(true);
$property->setValue($this, null);
}
}
}
}