141 lines
5.0 KiB
PHP
Executable File
141 lines
5.0 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Tax\Model;
|
|
|
|
class ClassTest extends \PHPUnit\Framework\TestCase
|
|
{
|
|
/**
|
|
* @var \Magento\TestFramework\ObjectManager
|
|
*/
|
|
protected $_objectManager;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
/** @var $objectManager \Magento\TestFramework\ObjectManager */
|
|
$this->_objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
|
|
}
|
|
|
|
/**
|
|
* @magentoDbIsolation enabled
|
|
*/
|
|
public function testCheckClassCanBeDeletedCustomerClassAssertException()
|
|
{
|
|
/** @var $model \Magento\Tax\Model\ClassModel */
|
|
$model = $this->_objectManager->create(
|
|
\Magento\Tax\Model\ClassModel::class
|
|
)->getCollection()->setClassTypeFilter(
|
|
\Magento\Tax\Model\ClassModel::TAX_CLASS_TYPE_CUSTOMER
|
|
)->getFirstItem();
|
|
|
|
$this->expectException(\Magento\Framework\Exception\CouldNotDeleteException::class);
|
|
$model->delete();
|
|
}
|
|
|
|
/**
|
|
* @magentoDbIsolation enabled
|
|
*/
|
|
public function testCheckClassCanBeDeletedProductClassAssertException()
|
|
{
|
|
/** @var $model \Magento\Tax\Model\ClassModel */
|
|
$model = $this->_objectManager->create(
|
|
\Magento\Tax\Model\ClassModel::class
|
|
)->getCollection()->setClassTypeFilter(
|
|
\Magento\Tax\Model\ClassModel::TAX_CLASS_TYPE_PRODUCT
|
|
)->getFirstItem();
|
|
|
|
$this->_objectManager->create(
|
|
\Magento\Catalog\Model\Product::class
|
|
)->setTypeId(
|
|
'simple'
|
|
)->setAttributeSetId(
|
|
4
|
|
)->setName(
|
|
'Simple Product'
|
|
)->setSku(
|
|
uniqid()
|
|
)->setPrice(
|
|
10
|
|
)->setMetaTitle(
|
|
'meta title'
|
|
)->setMetaKeyword(
|
|
'meta keyword'
|
|
)->setMetaDescription(
|
|
'meta description'
|
|
)->setVisibility(
|
|
\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH
|
|
)->setStatus(
|
|
\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED
|
|
)->setTaxClassId(
|
|
$model->getId()
|
|
)->save();
|
|
|
|
$this->expectException(\Magento\Framework\Exception\CouldNotDeleteException::class);
|
|
$model->delete();
|
|
}
|
|
|
|
/**
|
|
* @magentoDbIsolation enabled
|
|
* @dataProvider classesDataProvider
|
|
*/
|
|
public function testCheckClassCanBeDeletedPositiveResult($classType)
|
|
{
|
|
/** @var $model \Magento\Tax\Model\ClassModel */
|
|
$model = $this->_objectManager->create(\Magento\Tax\Model\ClassModel::class);
|
|
$model->setClassName('TaxClass' . uniqid())->setClassType($classType)->isObjectNew(true);
|
|
$model->save();
|
|
|
|
$model->delete();
|
|
}
|
|
|
|
public function classesDataProvider()
|
|
{
|
|
return [
|
|
[\Magento\Tax\Model\ClassModel::TAX_CLASS_TYPE_CUSTOMER],
|
|
[\Magento\Tax\Model\ClassModel::TAX_CLASS_TYPE_PRODUCT]
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @magentoAppIsolation enabled
|
|
* @magentoDataFixture Magento/Tax/_files/tax_classes.php
|
|
*/
|
|
public function testCheckClassCanBeDeletedCustomerClassUsedInTaxRule()
|
|
{
|
|
/** @var $registry \Magento\Framework\Registry */
|
|
$registry = $this->_objectManager->get(\Magento\Framework\Registry::class);
|
|
/** @var $taxRule \Magento\Tax\Model\Calculation\Rule */
|
|
$taxRule = $registry->registry('_fixture/Magento_Tax_Model_Calculation_Rule');
|
|
$customerClasses = $taxRule->getCustomerTaxClasses();
|
|
|
|
/** @var $model \Magento\Tax\Model\ClassModel */
|
|
$model = $this->_objectManager->create(\Magento\Tax\Model\ClassModel::class)->load($customerClasses[0]);
|
|
$this->expectException(\Magento\Framework\Exception\CouldNotDeleteException::class);
|
|
$this->expectExceptionMessage('You cannot delete this tax class because it is used in' .
|
|
' Tax Rules. You have to delete the rules it is used in first.');
|
|
$model->delete();
|
|
}
|
|
|
|
/**
|
|
* @magentoAppIsolation enabled
|
|
* @magentoDataFixture Magento/Tax/_files/tax_classes.php
|
|
*/
|
|
public function testCheckClassCanBeDeletedProductClassUsedInTaxRule()
|
|
{
|
|
/** @var $registry \Magento\Framework\Registry */
|
|
$registry = $this->_objectManager->get(\Magento\Framework\Registry::class);
|
|
/** @var $taxRule \Magento\Tax\Model\Calculation\Rule */
|
|
$taxRule = $registry->registry('_fixture/Magento_Tax_Model_Calculation_Rule');
|
|
$productClasses = $taxRule->getProductTaxClasses();
|
|
|
|
/** @var $model \Magento\Tax\Model\ClassModel */
|
|
$model = $this->_objectManager->create(\Magento\Tax\Model\ClassModel::class)->load($productClasses[0]);
|
|
$this->expectException(\Magento\Framework\Exception\CouldNotDeleteException::class);
|
|
$this->expectExceptionMessage('You cannot delete this tax class because it is used in' .
|
|
' Tax Rules. You have to delete the rules it is used in first.');
|
|
$model->delete();
|
|
}
|
|
}
|