Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
TaxManagementTest.php
Go to the documentation of this file.
1 <?php
7 
8 use \Magento\Tax\Model\Sales\Order\TaxManagement;
9 
11 
15 class TaxManagementTest extends \PHPUnit\Framework\TestCase
16 {
20  private $taxManagement;
21 
25  private $orderMock;
26 
30  private $taxItemResourceMock;
31 
36 
41 
42  protected function setUp()
43  {
44  $this->orderMock = $this->createPartialMock(\Magento\Sales\Model\Order::class, ['load']);
45 
46  $methods = ['create'];
47  $orderFactoryMock = $this->createPartialMock(\Magento\Sales\Model\OrderFactory::class, $methods);
48  $orderFactoryMock->expects($this->atLeastOnce())
49  ->method('create')
50  ->will($this->returnValue($this->orderMock));
51 
52  $className = \Magento\Sales\Model\ResourceModel\Order\Tax\Item::class;
53  $this->taxItemResourceMock = $this->createPartialMock($className, ['getTaxItemsByOrderId']);
54 
55  $className = \Magento\Sales\Model\ResourceModel\Order\Tax\ItemFactory::class;
56  $taxItemFactoryMock = $this->createPartialMock($className, $methods, []);
57  $taxItemFactoryMock->expects($this->once())
58  ->method('create')
59  ->willReturn($this->taxItemResourceMock);
60 
61  $objectManager = new ObjectManager($this);
62  $this->appliedTaxDataObject = $objectManager->getObject(\Magento\Tax\Model\Sales\Order\Tax::class);
63 
64  $className = \Magento\Tax\Api\Data\OrderTaxDetailsAppliedTaxInterfaceFactory::class;
65  $appliedTaxDataObjectFactoryMock = $this->createPartialMock($className, $methods);
66  $appliedTaxDataObjectFactoryMock->expects($this->any())
67  ->method('create')
68  ->willReturn($this->appliedTaxDataObject);
69 
70  $itemDataObject = $objectManager->getObject(\Magento\Sales\Model\Order\Tax\Item::class);
71 
72  $className = \Magento\Tax\Api\Data\OrderTaxDetailsItemInterfaceFactory::class;
73  $itemDataObjectFactoryMock = $this->createPartialMock($className, $methods);
74  $itemDataObjectFactoryMock->expects($this->atLeastOnce())
75  ->method('create')
76  ->willReturn($itemDataObject);
77 
78  $this->orderTaxDetailsDataObject = $objectManager->getObject(\Magento\Tax\Model\Sales\Order\Details::class);
79 
80  $className = \Magento\Tax\Api\Data\OrderTaxDetailsInterfaceFactory::class;
81  $orderTaxDetailsDataObjectFactoryMock = $this->createPartialMock($className, $methods);
82  $orderTaxDetailsDataObjectFactoryMock->expects($this->any())
83  ->method('create')
84  ->willReturn($this->orderTaxDetailsDataObject);
85 
86  $this->taxManagement = $objectManager->getObject(
87  \Magento\Tax\Model\Sales\Order\TaxManagement::class,
88  [
89  'orderFactory' => $orderFactoryMock,
90  'orderItemTaxFactory' => $taxItemFactoryMock,
91  'orderTaxDetailsDataObjectFactory' => $orderTaxDetailsDataObjectFactoryMock,
92  'itemDataObjectFactory' => $itemDataObjectFactoryMock,
93  'appliedTaxDataObjectFactory' => $appliedTaxDataObjectFactoryMock
94  ]
95  );
96  }
97 
104  public function testGetOrderTaxDetails($orderItemAppliedTaxes, $expected)
105  {
106  $orderId = 1;
107  $this->orderMock->expects($this->once())
108  ->method('load')
109  ->with($orderId)
110  ->will($this->returnSelf());
111  $this->taxItemResourceMock->expects($this->once())
112  ->method('getTaxItemsByOrderId')
113  ->with($orderId)
114  ->will($this->returnValue($orderItemAppliedTaxes));
115 
116  $this->assertEquals($this->orderTaxDetailsDataObject, $this->taxManagement->getOrderTaxDetails($orderId));
117 
118  $this->assertEquals($expected['code'], $this->appliedTaxDataObject->getCode());
119  $this->assertEquals($expected['title'], $this->appliedTaxDataObject->getTitle());
120  $this->assertEquals($expected['tax_percent'], $this->appliedTaxDataObject->getPercent());
121  $this->assertEquals($expected['real_amount'], $this->appliedTaxDataObject->getAmount());
122  $this->assertEquals($expected['real_base_amount'], $this->appliedTaxDataObject->getBaseAmount());
123  }
124 
130  {
131  $data = [
132  'one_item' => [
133  'orderItemAppliedTaxes' => [
134  [
135  'item_id' => 53,
136  'taxable_item_type' => 'product',
137  'associated_item_id' => null,
138  'code' => 'US-CA-*-Rate 1',
139  'title' => 'US-CA-*-Rate 1',
140  'tax_percent' => '8.25',
141  'real_amount' => '6.1889',
142  'real_base_amount' => '12.3779',
143  ],
144  ],
145  'expected' => [
146  'code' => 'US-CA-*-Rate 1',
147  'title' => 'US-CA-*-Rate 1',
148  'tax_percent' => '8.25',
149  'real_amount' => '6.1889',
150  'real_base_amount' => '12.3779',
151  ],
152  ],
153 
154  'weee_item' => [
155  'orderItemAppliedTaxes' => [
156  [
157  'item_id' => null,
158  'taxable_item_type' => 'weee',
159  'associated_item_id' => 54,
160  'code' => 'SanJose City Tax',
161  'title' => 'SanJose City Tax',
162  'tax_percent' => '6',
163  'real_amount' => '0.9011',
164  'real_base_amount' => '1.7979',
165  ],
166  ],
167  'expected' => [
168  'code' => 'SanJose City Tax',
169  'title' => 'SanJose City Tax',
170  'tax_percent' => '6',
171  'real_amount' => '0.9011',
172  'real_base_amount' => '1.7979',
173  ],
174  ],
175 
176  'shipping' => [
177  'orderItemAppliedTaxes' => [
178  [
179  'item_id' => null,
180  'taxable_item_type' => 'shipping',
181  'associated_item_id' => null,
182  'code' => 'Shipping',
183  'title' => 'Shipping',
184  'tax_percent' => '21',
185  'real_amount' => '2.6',
186  'real_base_amount' => '5.21',
187  ],
188  ],
189  'expected' => [
190  'code' => 'Shipping',
191  'title' => 'Shipping',
192  'tax_percent' => '21',
193  'real_amount' => '2.6',
194  'real_base_amount' => '5.21',
195  ],
196  ],
197 
198  'canadian_weee' => [
199  'orderItemAppliedTaxes' => [
200  [
201  'item_id' => null,
202  'taxable_item_type' => 'weee',
203  'associated_item_id' => 69,
204  'code' => 'GST',
205  'title' => 'GST',
206  'tax_percent' => '5',
207  'real_amount' => '2.10',
208  'real_base_amount' => '4.10',
209  ],
210  [
211  'item_id' => null,
212  'taxable_item_type' => 'weee',
213  'associated_item_id' => 69,
214  'code' => 'GST',
215  'title' => 'GST',
216  'tax_percent' => '5',
217  'real_amount' => '1.15',
218  'real_base_amount' => '3.10',
219  ],
220  ],
221  'expected' => [
222  'code' => 'GST',
223  'title' => 'GST',
224  'tax_percent' => '5',
225  'real_amount' => '3.25',
226  'real_base_amount' => '7.20',
227  ],
228  ],
229  ];
230 
231  return $data;
232  }
233 }
$objectManager
Definition: bootstrap.php:17
$methods
Definition: billing.phtml:71
if($currentSelectedMethod==$_code) $className
Definition: form.phtml:31