114 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
namespace Magento\Tax\Model;
 | 
						|
 | 
						|
use Magento\TestFramework\Helper\Bootstrap;
 | 
						|
 | 
						|
class TaxRateManagementTest extends \PHPUnit\Framework\TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var \Magento\Tax\Api\TaxRuleRepositoryInterface
 | 
						|
     */
 | 
						|
    private $taxRuleRepository;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var TaxRuleFixtureFactory
 | 
						|
     */
 | 
						|
    private $taxRuleFixtureFactory;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Array of default tax classes ids
 | 
						|
     *
 | 
						|
     * Key is class name
 | 
						|
     *
 | 
						|
     * @var int[]
 | 
						|
     */
 | 
						|
    private $taxClasses;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Array of default tax rates ids.
 | 
						|
     *
 | 
						|
     * Key is rate percentage as string.
 | 
						|
     *
 | 
						|
     * @var int[]
 | 
						|
     */
 | 
						|
    private $taxRates;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Array of default tax rules ids.
 | 
						|
     *
 | 
						|
     * Key is rule code.
 | 
						|
     *
 | 
						|
     * @var int[]
 | 
						|
     */
 | 
						|
    private $taxRules;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var \Magento\Tax\Api\TaxRateRepositoryInterface
 | 
						|
     */
 | 
						|
    private $taxRateRepository;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var \Magento\Tax\Api\TaxRateManagementInterface
 | 
						|
     */
 | 
						|
    private $taxRateManagement;
 | 
						|
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $objectManager = Bootstrap::getObjectManager();
 | 
						|
        $this->taxRuleRepository = $objectManager->get(\Magento\Tax\Api\TaxRuleRepositoryInterface::class);
 | 
						|
        $this->taxRateManagement = $objectManager->get(\Magento\Tax\Api\TaxRateManagementInterface::class);
 | 
						|
        $this->taxRateRepository = $objectManager->get(\Magento\Tax\Api\TaxRateRepositoryInterface::class);
 | 
						|
        $this->taxRuleFixtureFactory = new TaxRuleFixtureFactory();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @magentoDbIsolation enabled
 | 
						|
     */
 | 
						|
    public function testGetRatesByCustomerAndProductTaxClassId()
 | 
						|
    {
 | 
						|
        $this->setUpDefaultRules();
 | 
						|
        $taxRateIds = $this->taxRuleRepository->get(current($this->taxRules))->getTaxRateIds();
 | 
						|
        $expectedRates = [];
 | 
						|
        foreach ($taxRateIds as $rateId) {
 | 
						|
            $expectedRates[] = $this->taxRateRepository->get($rateId);
 | 
						|
        }
 | 
						|
        $rates = $this->taxRateManagement->getRatesByCustomerAndProductTaxClassId(
 | 
						|
            $this->taxClasses['DefaultCustomerClass'],
 | 
						|
            $this->taxClasses['DefaultProductClass']
 | 
						|
        );
 | 
						|
 | 
						|
        $this->assertCount(2, $rates);
 | 
						|
        $this->assertEquals($expectedRates, $rates);
 | 
						|
    }
 | 
						|
 | 
						|
    private function setUpDefaultRules()
 | 
						|
    {
 | 
						|
        $this->taxRates = $this->taxRuleFixtureFactory->createTaxRates([
 | 
						|
            ['percentage' => 7.5, 'country' => 'US', 'region' => 42],
 | 
						|
            ['percentage' => 7.5, 'country' => 'US', 'region' => 12], // Default store rate
 | 
						|
        ]);
 | 
						|
 | 
						|
        $this->taxClasses = $this->taxRuleFixtureFactory->createTaxClasses([
 | 
						|
            ['name' => 'DefaultCustomerClass', 'type' => ClassModel::TAX_CLASS_TYPE_CUSTOMER],
 | 
						|
            ['name' => 'DefaultProductClass', 'type' => ClassModel::TAX_CLASS_TYPE_PRODUCT],
 | 
						|
            ['name' => 'HigherProductClass', 'type' => ClassModel::TAX_CLASS_TYPE_PRODUCT],
 | 
						|
        ]);
 | 
						|
 | 
						|
        $this->taxRules = $this->taxRuleFixtureFactory->createTaxRules([
 | 
						|
            [
 | 
						|
                'code' => 'Default Rule',
 | 
						|
                'customer_tax_class_ids' => [$this->taxClasses['DefaultCustomerClass'], 3],
 | 
						|
                'product_tax_class_ids' => [$this->taxClasses['DefaultProductClass']],
 | 
						|
                'tax_rate_ids' => array_values($this->taxRates),
 | 
						|
                'sort_order' => 0,
 | 
						|
                'priority' => 0,
 | 
						|
                'calculate_subtotal' => 1,
 | 
						|
            ],
 | 
						|
        ]);
 | 
						|
    }
 | 
						|
}
 |