114 lines
4.0 KiB
PHP
Executable File
114 lines
4.0 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Tax\Model\ResourceModel;
|
|
|
|
use Magento\Framework\DataObject;
|
|
use Magento\Framework\Registry;
|
|
use Magento\Tax\Api\TaxRateRepositoryInterface;
|
|
use Magento\Tax\Api\TaxRuleRepositoryInterface;
|
|
use Magento\Tax\Test\Fixture\CustomerTaxClass as CustomerTaxClassFixture;
|
|
use Magento\Tax\Test\Fixture\ProductTaxClass as ProductTaxClassFixture;
|
|
use Magento\Tax\Test\Fixture\TaxRate as TaxRateFixture;
|
|
use Magento\Tax\Test\Fixture\TaxRule as TaxRuleFixture;
|
|
use Magento\TestFramework\Fixture\AppIsolation;
|
|
use Magento\TestFramework\Fixture\DataFixture;
|
|
use Magento\TestFramework\Fixture\DataFixtureStorage;
|
|
use Magento\TestFramework\Fixture\DataFixtureStorageManager;
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
use Magento\TestFramework\ObjectManager;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class CalculationTest extends TestCase
|
|
{
|
|
/** @var $objectManager ObjectManager */
|
|
private $objectManager;
|
|
|
|
/**
|
|
* @var DataFixtureStorage
|
|
*/
|
|
private $fixtures;
|
|
|
|
/**
|
|
* @inheirtDoc
|
|
*/
|
|
protected function setUp(): void
|
|
{
|
|
$this->objectManager = Bootstrap::getObjectManager();
|
|
$this->fixtures = Bootstrap::getObjectManager()->get(DataFixtureStorageManager::class)->getStorage();
|
|
}
|
|
|
|
/**
|
|
* Test that Tax Rate applied only once
|
|
*
|
|
* @magentoAppIsolation enabled
|
|
* @magentoDataFixture Magento/Tax/_files/tax_classes.php
|
|
*/
|
|
public function testGetRate()
|
|
{
|
|
$taxRule = $this->objectManager->get(Registry::class)
|
|
->registry('_fixture/Magento_Tax_Model_Calculation_Rule');
|
|
$customerTaxClasses = $taxRule->getCustomerTaxClassIds();
|
|
$productTaxClasses = $taxRule->getProductTaxClassIds();
|
|
$taxRate = $this->objectManager->get(Registry::class)
|
|
->registry('_fixture/Magento_Tax_Model_Calculation_Rate');
|
|
$data = new DataObject();
|
|
$data->setData(
|
|
[
|
|
'tax_country_id' => 'US',
|
|
'taxregion_id' => '12',
|
|
'tax_postcode' => '5555',
|
|
'customer_class_id' => $customerTaxClasses[0],
|
|
'product_class_id' => $productTaxClasses[0],
|
|
]
|
|
);
|
|
$taxCalculation = $this->objectManager->get(Calculation::class);
|
|
$this->assertEquals($taxRate->getRateIds(), $taxCalculation->getRate($data));
|
|
}
|
|
|
|
#[
|
|
AppIsolation(true),
|
|
DataFixture(CustomerTaxClassFixture::class, as: 'c1'),
|
|
DataFixture(ProductTaxClassFixture::class, as: 'p1'),
|
|
DataFixture(
|
|
TaxRateFixture::class,
|
|
['tax_country_id' => 'PT', 'tax_postcode' => '96*', 'tax_region_id' => 12],
|
|
'rate'
|
|
),
|
|
DataFixture(
|
|
TaxRuleFixture::class,
|
|
[
|
|
'customer_tax_class_ids' => ['$c1.id$'],
|
|
'product_tax_class_ids' => ['$p1.id$'],
|
|
'tax_rate_ids' => ['$rate.id$']
|
|
],
|
|
'rule'
|
|
)
|
|
]
|
|
public function testGetRateForPortugal()
|
|
{
|
|
/** @var TaxRuleRepositoryInterface $taxRule */
|
|
$taxRule = $this->objectManager->get(TaxRuleRepositoryInterface::class);
|
|
$customerTaxClasses = $taxRule->get($this->fixtures->get('rule')->getId())->getCustomerTaxClassIds();
|
|
$productTaxClasses = $taxRule->get($this->fixtures->get('rule')->getId())->getProductTaxClassIds();
|
|
|
|
/** @var $taxRate TaxRateRepositoryInterface $taxRule */
|
|
$taxRate = $this->objectManager->get(TaxRateRepositoryInterface::class);
|
|
$data = new DataObject([
|
|
'country_id' => 'PT',
|
|
'region_id' => '12',
|
|
'postcode' => '9600-111',
|
|
'customer_class_id' => $customerTaxClasses[0],
|
|
'product_class_id' => $productTaxClasses[0],
|
|
]);
|
|
$taxCalculation = $this->objectManager->get(Calculation::class);
|
|
|
|
$this->assertEquals(
|
|
$taxRate->get($this->fixtures->get('rate')->getId())->getRate(),
|
|
$taxCalculation->getRate($data)
|
|
);
|
|
}
|
|
}
|