Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ToOrderConverterTest.php
Go to the documentation of this file.
1 <?php
8 
9 use \Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
10 
15 class ToOrderConverterTest extends \PHPUnit\Framework\TestCase
16 {
21 
25  protected $quoteAddressMock;
26 
30  protected $subjectMock;
31 
36 
40  protected $model;
41 
42  protected function setUp()
43  {
44  $this->orderExtensionFactoryMock = $this->getMockBuilder(
45  \Magento\Sales\Api\Data\OrderExtensionFactory::class
46  )->disableOriginalConstructor()
47  ->setMethods(['create'])
48  ->getMock();
49 
50  $this->quoteAddressMock = $this->getMockBuilder(\Magento\Quote\Model\Quote\Address::class)
51  ->disableOriginalConstructor()
52  ->setMethods(['getAppliedTaxes', 'getItemsAppliedTaxes'])
53  ->getMock();
54  $this->subjectMock = $this->getMockBuilder(\Magento\Quote\Model\Quote\Address\ToOrder::class)
55  ->disableOriginalConstructor()
56  ->getMock();
57 
58  $this->objectManagerHelper = new ObjectManager($this);
59  $this->model = $this->objectManagerHelper->getObject(
60  \Magento\Tax\Model\Quote\ToOrderConverter::class,
61  [
62  'orderExtensionFactory' => $this->orderExtensionFactoryMock,
63  ]
64  );
65  }
66 
70  protected function setupOrderExtensionAttributeMock()
71  {
72  $orderExtensionAttributeMock = $this->getMockBuilder(\Magento\Sales\Api\Data\OrderExtensionInterface::class)
73  ->setMethods(
74  [
75  'setAppliedTaxes',
76  'setConvertingFromQuote',
77  'setItemAppliedTaxes'
78  ]
79  )->getMockForAbstractClass();
80 
81  return $orderExtensionAttributeMock;
82  }
83 
91  public function testAfterConvert(
92  $appliedTaxes,
93  $expectedAppliedTaxes,
94  $itemsAppliedTaxes,
95  $itemAppliedTaxesExpected
96  ) {
97  $this->model->beforeConvert($this->subjectMock, $this->quoteAddressMock);
98 
99  $this->quoteAddressMock->expects($this->once())
100  ->method('getAppliedTaxes')
101  ->willReturn($appliedTaxes);
102  $this->quoteAddressMock->expects($this->once())
103  ->method('getItemsAppliedTaxes')
104  ->willReturn($itemsAppliedTaxes);
105 
106  $orderMock = $this->getMockBuilder(\Magento\Sales\Model\Order::class)
107  ->disableOriginalConstructor()
108  ->getMock();
109 
110  $orderExtensionAttributeMock = $this->setupOrderExtensionAttributeMock();
111 
112  $orderMock->expects($this->once())
113  ->method('getExtensionAttributes')
114  ->willReturn($orderExtensionAttributeMock);
115 
116  $orderExtensionAttributeMock->expects($this->once())
117  ->method('setAppliedTaxes')
118  ->with($expectedAppliedTaxes);
119  $orderExtensionAttributeMock->expects($this->once())
120  ->method('setConvertingFromQuote')
121  ->with(true);
122  $orderExtensionAttributeMock->expects($this->once())
123  ->method('setItemAppliedTaxes')
124  ->with($itemAppliedTaxesExpected);
125  $orderMock->expects($this->once())
126  ->method('setExtensionAttributes')
127  ->with($orderExtensionAttributeMock);
128 
129  $this->assertEquals($orderMock, $this->model->afterConvert($this->subjectMock, $orderMock));
130  }
131 
140  $appliedTaxes,
141  $expectedAppliedTaxes,
142  $itemsAppliedTaxes,
143  $itemAppliedTaxesExpected
144  ) {
145  $this->model->beforeConvert($this->subjectMock, $this->quoteAddressMock);
146 
147  $this->quoteAddressMock->expects($this->once())
148  ->method('getAppliedTaxes')
149  ->willReturn($appliedTaxes);
150  $this->quoteAddressMock->expects($this->once())
151  ->method('getItemsAppliedTaxes')
152  ->willReturn($itemsAppliedTaxes);
153 
154  $orderExtensionAttributeMock = $this->setupOrderExtensionAttributeMock();
155 
156  $orderMock = $this->getMockBuilder(\Magento\Sales\Model\Order::class)
157  ->disableOriginalConstructor()
158  ->getMock();
159 
160  $orderMock->expects($this->once())
161  ->method('getExtensionAttributes')
162  ->willReturn(null);
163 
164  $this->orderExtensionFactoryMock->expects($this->once())
165  ->method('create')
166  ->willReturn($orderExtensionAttributeMock);
167 
168  $orderExtensionAttributeMock->expects($this->once())
169  ->method('setAppliedTaxes')
170  ->with($expectedAppliedTaxes);
171  $orderExtensionAttributeMock->expects($this->once())
172  ->method('setConvertingFromQuote')
173  ->with(true);
174  $orderExtensionAttributeMock->expects($this->once())
175  ->method('setItemAppliedTaxes')
176  ->with($itemAppliedTaxesExpected);
177  $orderMock->expects($this->once())
178  ->method('setExtensionAttributes')
179  ->with($orderExtensionAttributeMock);
180 
181  $this->assertEquals($orderMock, $this->model->afterConvert($this->subjectMock, $orderMock));
182  }
183 
189  public function afterConvertDataProvider()
190  {
191  return [
192  'afterConvert' => [
193  'applied_taxes' => [
194  'IL' => [
195  'amount' => 0.36,
196  'percent' => 6,
197  'rates' => [
198  [
199  'percent' => 6,
200  'code' => 'IL',
201  'title' => 'IL',
202  ]
203  ],
204  ],
205  ],
206  'expected_applied_taxes' => [
207  'IL' => [
208  'amount' => 0.36,
209  'percent' => 6,
210  'extension_attributes' => [
211  'rates' => [
212  [
213  'percent' => 6,
214  'code' => 'IL',
215  'title' => 'IL',
216  ]
217  ],
218  ],
219  ],
220  ],
221  'item_applied_taxes' => [
222  'sequence-1' => [
223  [
224  'amount' => 0.06,
225  'item_id' => 146,
226  'item_type' => 'product',
227  'associated_item_id' => null,
228  'rates' => [
229  [
230  'percent' => 6,
231  'code' => 'IL',
232  'title' => 'IL',
233  ],
234  ],
235  ],
236  ],
237  'shipping' => [
238  [
239  'amount' => 0.30,
240  'item_id' => 146,
241  'item_type' => 'shipping',
242  'associated_item_id' => null,
243  'rates' => [
244  [
245  'percent' => 6,
246  'code' => 'IL',
247  'title' => 'IL',
248  ],
249  ],
250  ]
251  ],
252  ],
253  'item_applied_taxes_expected' => [
254  'sequence-1' => [
255  'item_id' => 146,
256  'type' => 'product',
257  'associated_item_id' => null,
258  'applied_taxes' => [
259  [
260  'amount' => 0.06,
261  'item_id' => 146,
262  'item_type' => 'product',
263  'associated_item_id' => null,
264  'extension_attributes' => [
265  'rates' => [
266  [
267  'percent' => 6,
268  'code' => 'IL',
269  'title' => 'IL',
270  ]
271  ],
272  ],
273  ]
274  ],
275  ],
276  'shipping' => [
277  'item_id' => 146,
278  'type' => 'shipping',
279  'associated_item_id' => null,
280  'applied_taxes' => [
281  [
282  'amount' => 0.30,
283  'item_id' => 146,
284  'item_type' => 'shipping',
285  'associated_item_id' => null,
286  'extension_attributes' => [
287  'rates' => [
288  [
289  'percent' => 6,
290  'code' => 'IL',
291  'title' => 'IL',
292  ]
293  ],
294  ],
295  ]
296  ],
297  ],
298  ],
299  ],
300  ];
301  }
302 }
testAfterConvertNullExtensionAttribute( $appliedTaxes, $expectedAppliedTaxes, $itemsAppliedTaxes, $itemAppliedTaxesExpected)
testAfterConvert( $appliedTaxes, $expectedAppliedTaxes, $itemsAppliedTaxes, $itemAppliedTaxesExpected)