19 private $taxCalculationService;
24 private $taxDetailsItemDataObjectFactory;
29 private $taxDetailsDataObjectFactory;
34 private $storeManager;
39 private $calculatorFactory;
44 private $calculationTool;
54 private $taxClassManagementMock;
59 private $dataObjectHelperMock;
63 $this->calculationTool = $this->createMock(\
Magento\Tax\Model\Calculation::class);
64 $this->calculatorFactory = $this->createMock(\
Magento\Tax\Model\Calculation\CalculatorFactory::class);
65 $this->configMock = $this->createMock(\
Magento\Tax\Model\Config::class);
66 $this->taxDetailsDataObjectFactory = $this->createPartialMock(
67 \
Magento\Tax\Api\Data\TaxDetailsInterfaceFactory::class,
70 $this->taxDetailsItemDataObjectFactory = $this->createMock(
71 \
Magento\Tax\Api\Data\TaxDetailsItemInterfaceFactory::class
73 $this->storeManager = $this->createMock(\
Magento\Store\Model\StoreManagerInterface::class);
74 $this->dataObjectHelperMock = $this->getMockBuilder(\
Magento\Framework\Api\DataObjectHelper::class)
75 ->disableOriginalConstructor()
77 $this->taxClassManagementMock = $this->createMock(\
Magento\Tax\Api\TaxClassManagementInterface::class);
81 \
Magento\Tax\Model\TaxCalculation::class,
83 'calculation' => $this->calculationTool,
84 'calculatorFactory' => $this->calculatorFactory,
85 'config' => $this->configMock,
86 'taxDetailsDataObjectFactory' => $this->taxDetailsDataObjectFactory,
87 'taxDetailsItemDataObjectFactory' => $this->taxDetailsItemDataObjectFactory,
88 'storeManager' => $this->storeManager,
89 'taxClassManagement' => $this->taxClassManagementMock,
90 'dataObjectHelper' => $this->dataObjectHelperMock,
97 $productTaxClassId = 1;
102 $storeMock = $this->createPartialMock(\
Magento\Store\Model\Store::class, [
'getStoreId']);
103 $this->storeManager->expects($this->once())->method(
'getStore')->willReturn($storeMock);
104 $storeMock->expects($this->once())->method(
'getStoreId')->willReturn(
$storeId);
106 $rateRequestMock = $this->createPartialMock(\
Magento\Framework\DataObject::class, [
'setProductClassId']);
107 $this->calculationTool->expects($this->once())
108 ->method(
'getRateRequest')
110 ->willReturn($rateRequestMock);
112 $rateRequestMock->expects($this->once())
113 ->method(
'setProductClassId')
114 ->with($productTaxClassId)
117 $this->calculationTool->expects($this->once())->method(
'getRate')->with($rateRequestMock)->willReturn(
$rate);
120 $this->taxCalculationService->getCalculatedRate($productTaxClassId,
$customerId,
null)
126 $productTaxClassId = 1;
131 $storeMock = $this->createPartialMock(\
Magento\Store\Model\Store::class, [
'getStoreId']);
132 $this->storeManager->expects($this->once())->method(
'getStore')->willReturn($storeMock);
133 $storeMock->expects($this->once())->method(
'getStoreId')->willReturn(
$storeId);
135 $rateRequestMock = $this->createPartialMock(\
Magento\Framework\DataObject::class, [
'setProductClassId']);
136 $this->calculationTool->expects($this->once())
137 ->method(
'getDefaultRateRequest')
139 ->willReturn($rateRequestMock);
141 $rateRequestMock->expects($this->once())
142 ->method(
'setProductClassId')
143 ->with($productTaxClassId)
146 $this->calculationTool->expects($this->once())->method(
'getRate')->with($rateRequestMock)->willReturn(
$rate);
149 $this->taxCalculationService->getDefaultCalculatedRate($productTaxClassId,
$customerId,
null)
156 $quoteDetailsMock = $this->createMock(\
Magento\Tax\Api\Data\QuoteDetailsInterface::class);
158 $storeMock = $this->createPartialMock(\
Magento\Store\Model\Store::class, [
'getStoreId']);
159 $this->storeManager->expects($this->once())->method(
'getStore')->willReturn($storeMock);
160 $storeMock->expects($this->once())->method(
'getStoreId')->willReturn(
$storeId);
162 $quoteDetailsMock->expects($this->once())->method(
'getItems')->willReturn(
null);
164 $taxDetailsMock = $this->createMock(\
Magento\Tax\Api\Data\TaxDetailsInterface::class);
165 $taxDetailsMock->expects($this->once())
166 ->method(
'setSubtotal')
168 $taxDetailsMock->expects($this->once())
169 ->method(
'setTaxAmount')
171 $taxDetailsMock->expects($this->once())
172 ->method(
'setDiscountTaxCompensationAmount')
174 $taxDetailsMock->expects($this->once())
175 ->method(
'setAppliedTaxes')
177 $taxDetailsMock->expects($this->once())
180 $this->taxDetailsDataObjectFactory->expects($this->once())->method(
'create')->willReturn($taxDetailsMock);
182 $this->assertEquals($taxDetailsMock, $this->taxCalculationService->calculateTax($quoteDetailsMock));
188 $algorithm =
'algorithm';
199 $quoteDetailsMock = $this->createMock(\
Magento\Tax\Api\Data\QuoteDetailsInterface::class);
201 $storeMock = $this->createPartialMock(\
Magento\Store\Model\Store::class, [
'getStoreId']);
202 $this->storeManager->expects($this->once())->method(
'getStore')->willReturn($storeMock);
203 $storeMock->expects($this->once())->method(
'getStoreId')->willReturn(
$storeId);
205 $billAddressMock = $this->createMock(\
Magento\Customer\Api\Data\AddressInterface::class);
206 $shipAddressMock = $this->createMock(\
Magento\Customer\Api\Data\AddressInterface::class);
207 $taxClassKeyMock = $this->createMock(\
Magento\Tax\Api\Data\TaxClassKeyInterface::class);
209 $quoteDetailsItemMock = $this->createMock(\
Magento\Tax\Api\Data\QuoteDetailsItemInterface::class);
210 $quoteDetailsMock->expects($this->once())->method(
'getItems')->willReturn([$quoteDetailsItemMock]);
211 $quoteDetailsMock->expects($this->once())->method(
'getBillingAddress')->willReturn($billAddressMock);
212 $quoteDetailsMock->expects($this->once())->method(
'getShippingAddress')->willReturn($shipAddressMock);
213 $quoteDetailsMock->expects($this->once())->method(
'getCustomerId')->willReturn(
$customerId);
214 $quoteDetailsMock->expects($this->once())->method(
'getCustomerTaxClassKey')->willReturn($taxClassKeyMock);
216 $this->configMock->expects($this->once())->method(
'getAlgorithm')->with(
$storeId)->willReturn($algorithm);
217 $this->taxClassManagementMock->expects($this->once())
218 ->method(
'getTaxClassId')
219 ->with($taxClassKeyMock,
'customer')
220 ->willReturn($taxClassId);
222 $calculatorMock = $this->createMock(\
Magento\Tax\Model\Calculation\TotalBaseCalculator::class);
223 $this->calculatorFactory->expects($this->once())
226 ->willReturn($calculatorMock);
228 $taxDetailsMock = $this->createMock(\
Magento\Tax\Api\Data\TaxDetailsItemInterface::class);
229 $calculatorMock->expects($this->once())->method(
'calculate')->willReturn($taxDetailsMock);
231 $taxDetailsMock = $this->createMock(\
Magento\Tax\Api\Data\TaxDetailsInterface::class);
232 $this->taxDetailsDataObjectFactory->expects($this->once())->method(
'create')->willReturn($taxDetailsMock);
233 $this->dataObjectHelperMock->expects($this->once())
234 ->method(
'populateWithArray')
235 ->with($taxDetailsMock, $taxDetailsData)
238 $this->assertEquals($taxDetailsMock, $this->taxCalculationService->calculateTax($quoteDetailsMock));
const KEY_DISCOUNT_TAX_COMPENSATION_AMOUNT
testGetDefaultCalculatedRate()
testCalculateTaxIfNoItemsInQuote()