magento2-docker/dev/tests/integration/testsuite/Magento/Tax/Model/ClassTest.php

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();
}
}