magento2-docker/dev/tests/integration/testsuite/Magento/Eav/Model/Entity/AttributeTest.php

141 lines
4.3 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Eav\Model\Entity;
use Magento\Framework\Locale\ResolverInterface;
use Magento\Framework\ObjectManagerInterface;
use Magento\TestFramework\Helper\Bootstrap;
use PHPUnit\Framework\TestCase;
/**
* Class to test EAV Entity attribute model
*/
class AttributeTest extends TestCase
{
/**
* @var Attribute
*/
private $attribute;
/**
* @var ObjectManagerInterface
*/
private $objectManager;
/**
* @var ResolverInterface
*/
private $localeResolver;
/**
* @inheritdoc
*/
protected function setUp(): void
{
$this->objectManager = Bootstrap::getObjectManager();
$this->attribute = $this->objectManager->get(Attribute::class);
$this->localeResolver = $this->objectManager->get(ResolverInterface::class);
}
/**
* @inheritdoc
*/
protected function tearDown(): void
{
$this->attribute = null;
$this->objectManager = null;
$this->localeResolver = null;
$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);
}
}
}
/**
* @param string $defaultValue
* @param string $backendType
* @param string $locale
* @param string $expected
* @dataProvider beforeSaveDataProvider
* @throws
*/
public function testBeforeSave(
string $defaultValue,
string $backendType,
string $frontendInput,
string $locale,
string $expected
) {
$this->attribute->setDefaultValue($defaultValue);
$this->attribute->setBackendType($backendType);
$this->attribute->setFrontendInput($frontendInput);
$this->localeResolver->setLocale($locale);
$this->attribute->beforeSave();
$this->assertEquals($expected, $this->attribute->getDefaultValue());
}
/**
* Data provider for beforeSaveData.
*
* @return array
*/
public function beforeSaveDataProvider()
{
return [
['21/07/18', 'datetime', 'date', 'en_AU', '2018-07-21 00:00:00'],
['07/21/18', 'datetime', 'date', 'en_US', '2018-07-21 00:00:00'],
['21/07/18', 'datetime', 'date', 'fr_FR', '2018-07-21 00:00:00'],
['21/07/18', 'datetime', 'date', 'de_DE', '2018-07-21 00:00:00'],
['21/07/18', 'datetime', 'date', 'uk_UA', '2018-07-21 00:00:00'],
['100.50', 'decimal', 'decimal', 'en_US', '100.50'],
['100,50', 'decimal', 'decimal', 'uk_UA', '100.5'],
['07/21/2019 2:30 PM', 'datetime', 'datetime', 'en_US', '2019-07-21 21:30:00'],
['21.07.2019 14:30', 'datetime', 'datetime', 'uk_UA', '2019-07-21 21:30:00'],
];
}
/**
* @param string $defaultValue
* @param string $backendType
* @param string $locale
* @param string $expected
* @dataProvider beforeSaveErrorDataDataProvider
*/
public function testBeforeSaveErrorData($defaultValue, $backendType, $locale, $expected)
{
$this->expectException(\Magento\Framework\Exception\LocalizedException::class);
$this->attribute->setDefaultValue($defaultValue);
$this->attribute->setBackendType($backendType);
$this->localeResolver->setLocale($locale);
$this->attribute->beforeSave();
$this->expectExceptionMessage($expected);
}
/**
* Data provider for beforeSaveData with error result.
*
* @return array
*/
public function beforeSaveErrorDataDataProvider()
{
return [
'wrong date for Australia' => ['32/38', 'datetime', 'en_AU', 'Invalid default date'],
'wrong date for States' => ['32/38', 'datetime', 'en_US', 'Invalid default date'],
'wrong decimal separator for US' => ['100,50', 'decimal', 'en_US', 'Invalid default decimal value'],
'wrong decimal separator for UA' => ['100.50', 'decimal', 'uk_UA', 'Invalid default decimal value'],
];
}
}