1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?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()
{
$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,
],
]);
}
}