40 $this->objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
41 $this->quoteMock = $this->createMock(\
Magento\Quote\Model\Quote::class);
52 $taxHelper = $this->createMock(\
Magento\Tax\Helper\Data::class);
55 $taxHelper->expects($this->any())->method(
$method)->will($this->returnValue(
$value));
69 $weeeHelper = $this->createMock(\
Magento\Weee\Helper\Data::class);
72 $weeeHelper->expects($this->any())->method(
$method)->will($this->returnValue(
$value));
86 $itemMock = $this->createPartialMock(\
Magento\Quote\Model\Quote\Item::class, [
94 $productMock = $this->createMock(\
Magento\Catalog\Model\Product::class);
95 $itemMock->expects($this->any())->method(
'getProduct')->will($this->returnValue($productMock));
96 $itemMock->expects($this->any())->method(
'getTotalQty')->will($this->returnValue($itemQty));
112 $totalMock = $this->createPartialMock(\
Magento\Quote\Model\Quote\Address\Total::class, [
114 'getWeeeCodeToItemMap',
115 'getExtraTaxableDetails',
116 'getWeeeTotalExclTax',
117 'getWeeeBaseTotalExclTax',
125 if ($isWeeeTaxable) {
127 $weeeTaxDetails = [];
128 foreach ($itemWeeeTaxDetails as $itemData) {
129 $code =
'weee' .
$i++ .
'-myWeeeCode';
131 $weeeTaxDetails[] = [
132 CTC::KEY_TAX_DETAILS_TYPE =>
'weee',
133 CTC::KEY_TAX_DETAILS_CODE =>
$code,
134 CTC::KEY_TAX_DETAILS_PRICE_EXCL_TAX => $itemData[
'weee_tax_applied_amount'],
135 CTC::KEY_TAX_DETAILS_BASE_PRICE_EXCL_TAX => $itemData[
'base_weee_tax_applied_amount'],
136 CTC::KEY_TAX_DETAILS_PRICE_INCL_TAX => $itemData[
'weee_tax_applied_amount_incl_tax'],
137 CTC::KEY_TAX_DETAILS_BASE_PRICE_INCL_TAX =>
138 $itemData[
'base_weee_tax_applied_amount_incl_tax'],
139 CTC::KEY_TAX_DETAILS_ROW_TOTAL => $itemData[
'weee_tax_applied_row_amount'],
140 CTC::KEY_TAX_DETAILS_BASE_ROW_TOTAL => $itemData[
'base_weee_tax_applied_row_amnt'],
141 CTC::KEY_TAX_DETAILS_ROW_TOTAL_INCL_TAX =>
142 $itemData[
'weee_tax_applied_row_amount_incl_tax'],
143 CTC::KEY_TAX_DETAILS_BASE_ROW_TOTAL_INCL_TAX =>
144 $itemData[
'base_weee_tax_applied_row_amnt_incl_tax'],
149 'sequence-1' => $weeeTaxDetails
161 $totalMock->expects($this->any())->method(
'getWeeeCodeToItemMap')->will($this->returnValue(
$map));
162 $totalMock->expects($this->any())->method(
'getExtraTaxableDetails')->will($this->returnValue($extraDetails));
164 ->expects($this->any())
165 ->method(
'getWeeeTotalExclTax')
166 ->will($this->returnValue($weeeTotals));
168 ->expects($this->any())
169 ->method(
'getWeeeBaseTotalExclTax')
170 ->will($this->returnValue($weeeBaseTotals));
183 $shippingMock = $this->createMock(\
Magento\Quote\Api\Data\ShippingInterface::class);
184 $shippingMock->expects($this->any())->method(
'getAddress')->willReturn($addressMock);
185 $shippingAssignmentMock = $this->createMock(\
Magento\Quote\Api\Data\ShippingAssignmentInterface::class);
186 $itemMock = $itemMock ? [$itemMock] : [];
187 $shippingAssignmentMock->expects($this->any())->method(
'getItems')->willReturn($itemMock);
188 $shippingAssignmentMock->expects($this->any())->method(
'getShipping')->willReturn($shippingMock);
190 return $shippingAssignmentMock;
204 foreach ($itemData as $key =>
$value) {
205 $this->assertEquals(
$value,
$item->getData($key),
'item ' . $key .
' is incorrect');
218 if ($key != self::KEY_WEEE_TOTALS && $key != self::KEY_WEEE_BASE_TOTALS) {
220 $this->assertEquals(
$value,
$address->getData($key),
'address ' . $key .
' is incorrect');
227 $serializerMock = $this->getMockBuilder(\
Magento\Framework\
Serialize\Serializer\Json::class)->getMock();
229 $totalMock = new \Magento\Quote\Model\Quote\Address\Total(
234 $weeeHelper = $this->
setupWeeeHelper([
'getTotalAmounts' => $weeeTotal]);
235 $this->weeeCollector = $this->objectManagerHelper->getObject(
236 \
Magento\Weee\Model\Total\Quote\WeeeTax::class,
237 [
'taxData' => $taxHelper,
'weeeData' => $weeeHelper]
241 'title' =>
__(
'FPT'),
242 'value' => $weeeTotal,
246 $this->assertEquals($expectedResult, $this->weeeCollector->fetch($this->quoteMock, $totalMock));
251 $serializerMock = $this->getMockBuilder(\
Magento\Framework\
Serialize\Serializer\Json::class)->getMock();
252 $totalMock = new \Magento\Quote\Model\Quote\Address\Total(
258 $this->weeeCollector = $this->objectManagerHelper->getObject(
259 \
Magento\Weee\Model\Total\Quote\WeeeTax::class,
260 [
'taxData' => $taxHelper,
'weeeData' => $weeeHelper]
263 $this->assertNull($this->weeeCollector->fetch($this->quoteMock, $totalMock));
285 $addressMock = $this->createMock(\
Magento\Quote\Model\Quote\Address::class);
292 'taxData' => $taxHelper,
293 'weeeData' => $weeeHelper,
296 $this->weeeCollector = $this->objectManagerHelper->getObject(
297 \
Magento\Weee\Model\Total\Quote\WeeeTax::class,
302 $this->weeeCollector->collect($this->quoteMock, $shippingAssignmentMock, $totalMock);
306 foreach ($itemWeeeTaxDetails as $itemWeeeTaxDetail) {
307 foreach ($itemWeeeTaxDetail as $key =>
$value) {
308 $summed[$key] = (array_key_exists($key, $summed) ?
$value + $summed[$key] :
$value);
332 $data[
'price_incl_tax_weee_taxable_unit_included_in_subtotal'] = [
334 'priceIncludesTax' =>
true,
339 'includeInSubtotal' =>
true,
343 'item_weee_tax_details' => [
345 'weee_tax_applied_amount' => 9.24,
346 'base_weee_tax_applied_amount' => 9.24,
347 'weee_tax_applied_row_amount' => 18.48,
348 'base_weee_tax_applied_row_amnt' => 18.48,
349 'weee_tax_applied_amount_incl_tax' => 10,
350 'base_weee_tax_applied_amount_incl_tax' => 10,
351 'weee_tax_applied_row_amount_incl_tax' => 20,
352 'base_weee_tax_applied_row_amnt_incl_tax' => 20,
358 'base_subtotal' => 18.48,
359 'subtotal_incl_tax' => 20,
360 'base_subtotal_incl_tax' => 20,
362 'base_weee_amount' => 0,
366 $data[
'price_incl_tax_weee_taxable_unit_not_included_in_subtotal'] = [
368 'priceIncludesTax' =>
true,
373 'includeInSubtotal' =>
false,
377 'item_weee_tax_details' => [
379 'weee_tax_applied_amount' => 9.24,
380 'base_weee_tax_applied_amount' => 9.24,
381 'weee_tax_applied_row_amount' => 18.48,
382 'base_weee_tax_applied_row_amnt' => 18.48,
383 'weee_tax_applied_amount_incl_tax' => 10,
384 'base_weee_tax_applied_amount_incl_tax' => 10,
385 'weee_tax_applied_row_amount_incl_tax' => 20,
386 'base_weee_tax_applied_row_amnt_incl_tax' => 20,
392 'base_subtotal' => 0,
393 'subtotal_incl_tax' => 20,
394 'base_subtotal_incl_tax' => 20,
395 'weee_amount' => 18.48,
396 'base_weee_amount' => 18.48,
400 $data[
'price_excl_tax_weee_taxable_unit_included_in_subtotal'] = [
402 'priceIncludesTax' =>
false,
407 'includeInSubtotal' =>
true,
411 'item_weee_tax_details' => [
413 'weee_tax_applied_amount' => 10,
414 'base_weee_tax_applied_amount' => 10,
415 'weee_tax_applied_row_amount' => 20,
416 'base_weee_tax_applied_row_amnt' => 20,
417 'weee_tax_applied_amount_incl_tax' => 10.83,
418 'base_weee_tax_applied_amount_incl_tax' => 10.83,
419 'weee_tax_applied_row_amount_incl_tax' => 21.66,
420 'base_weee_tax_applied_row_amnt_incl_tax' => 21.66,
426 'base_subtotal' => 20,
427 'subtotal_incl_tax' => 21.66,
428 'base_subtotal_incl_tax' => 21.66,
430 'base_weee_amount' => 0,
434 $data[
'price_incl_tax_weee_non_taxable_unit_included_in_subtotal'] = [
436 'priceIncludesTax' =>
true,
441 'includeInSubtotal' =>
true,
442 'isTaxable' =>
false,
445 'item_weee_tax_details' => [
449 self::KEY_WEEE_TOTALS => 20,
450 self::KEY_WEEE_BASE_TOTALS => 20,
452 'base_subtotal' => 20,
453 'subtotal_incl_tax' => 20,
454 'base_subtotal_incl_tax' => 20,
456 'base_weee_amount' => 0,
460 $data[
'price_excl_tax_weee_non_taxable_unit_include_in_subtotal'] = [
462 'priceIncludesTax' =>
false,
467 'includeInSubtotal' =>
true,
468 'isTaxable' =>
false,
471 'item_weee_tax_details' => [
475 self::KEY_WEEE_TOTALS => 20,
476 self::KEY_WEEE_BASE_TOTALS => 20,
478 'base_subtotal' => 20,
479 'subtotal_incl_tax' => 20,
480 'base_subtotal_incl_tax' => 20,
482 'base_weee_amount' => 0,
486 $data[
'price_incl_tax_weee_taxable_row_include_in_subtotal'] = [
488 'priceIncludesTax' =>
true,
493 'includeInSubtotal' =>
true,
497 'item_weee_tax_details' => [
499 'weee_tax_applied_amount' => 9.24,
500 'base_weee_tax_applied_amount' => 9.24,
501 'weee_tax_applied_row_amount' => 18.48,
502 'base_weee_tax_applied_row_amnt' => 18.48,
503 'weee_tax_applied_amount_incl_tax' => 10,
504 'base_weee_tax_applied_amount_incl_tax' => 10,
505 'weee_tax_applied_row_amount_incl_tax' => 20,
506 'base_weee_tax_applied_row_amnt_incl_tax' => 20,
512 'base_subtotal' => 18.48,
513 'subtotal_incl_tax' => 20,
514 'base_subtotal_incl_tax' => 20,
516 'base_weee_amount' => 0,
520 $data[
'price_excl_tax_weee_taxable_row_include_in_subtotal'] = [
522 'priceIncludesTax' =>
false,
527 'includeInSubtotal' =>
true,
531 'item_weee_tax_details' => [
533 'weee_tax_applied_amount' => 10,
534 'base_weee_tax_applied_amount' => 10,
535 'weee_tax_applied_row_amount' => 20,
536 'base_weee_tax_applied_row_amnt' => 20,
537 'weee_tax_applied_amount_incl_tax' => 10.83,
538 'base_weee_tax_applied_amount_incl_tax' => 10.83,
539 'weee_tax_applied_row_amount_incl_tax' => 21.65,
540 'base_weee_tax_applied_row_amnt_incl_tax' => 21.65,
546 'base_subtotal' => 20,
547 'subtotal_incl_tax' => 21.65,
548 'base_subtotal_incl_tax' => 21.65,
550 'base_weee_amount' => 0,
554 $data[
'price_incl_tax_weee_non_taxable_row_include_in_subtotal'] = [
556 'priceIncludesTax' =>
true,
561 'includeInSubtotal' =>
true,
562 'isTaxable' =>
false,
565 'item_weee_tax_details' => [
569 self::KEY_WEEE_TOTALS => 20,
570 self::KEY_WEEE_BASE_TOTALS => 20,
572 'base_subtotal' => 20,
573 'subtotal_incl_tax' => 20,
574 'base_subtotal_incl_tax' => 20,
576 'base_weee_amount' => 0,
580 $data[
'price_excl_tax_weee_non_taxable_row_not_included_in_subtotal'] = [
582 'priceIncludesTax' =>
false,
587 'includeInSubtotal' =>
false,
588 'isTaxable' =>
false,
591 'item_weee_tax_details' => [
595 self::KEY_WEEE_TOTALS => 20,
596 self::KEY_WEEE_BASE_TOTALS => 20,
598 'base_subtotal' => 0,
599 'subtotal_incl_tax' => 20,
600 'base_subtotal_incl_tax' => 20,
602 'base_weee_amount' => 20,
606 $data[
'price_excl_tax_weee_taxable_unit_not_included_in_subtotal'] = [
608 'priceIncludesTax' =>
false,
613 'includeInSubtotal' =>
false,
617 'item_weee_tax_details' => [
619 'weee_tax_applied_amount' => 10,
620 'base_weee_tax_applied_amount' => 10,
621 'weee_tax_applied_row_amount' => 20,
622 'base_weee_tax_applied_row_amnt' => 20,
623 'weee_tax_applied_amount_incl_tax' => 11.00,
624 'base_weee_tax_applied_amount_incl_tax' => 11.00,
625 'weee_tax_applied_row_amount_incl_tax' => 22.00,
626 'base_weee_tax_applied_row_amnt_incl_tax' => 22.00,
629 'weee_tax_applied_amount' => 2,
630 'base_weee_tax_applied_amount' => 2,
631 'weee_tax_applied_row_amount' => 4,
632 'base_weee_tax_applied_row_amnt' => 4,
633 'weee_tax_applied_amount_incl_tax' => 2.20,
634 'base_weee_tax_applied_amount_incl_tax' => 2.20,
635 'weee_tax_applied_row_amount_incl_tax' => 4.40,
636 'base_weee_tax_applied_row_amnt_incl_tax' => 4.40,
642 'base_subtotal' => 0,
643 'subtotal_incl_tax' => 26.40,
644 'base_subtotal_incl_tax' => 26.40,
646 'base_weee_amount' => 24,
650 $data[
'weee_disabled'] = [
652 'priceIncludesTax' =>
false,
656 'isEnabled' =>
false,
657 'includeInSubtotal' =>
false,
661 'item_weee_tax_details' => [
663 'weee_tax_applied_amount' =>
null,
664 'base_weee_tax_applied_amount' =>
null,
665 'weee_tax_applied_row_amount' =>
null,
666 'base_weee_tax_applied_row_amnt' =>
null,
667 'weee_tax_applied_amount_incl_tax' =>
null,
668 'base_weee_tax_applied_amount_incl_tax' =>
null,
669 'weee_tax_applied_row_amount_incl_tax' =>
null,
670 'base_weee_tax_applied_row_amnt_incl_tax' =>
null,
673 'weee_tax_applied_amount' =>
null,
674 'base_weee_tax_applied_amount' =>
null,
675 'weee_tax_applied_row_amount' =>
null,
676 'base_weee_tax_applied_row_amnt' =>
null,
677 'weee_tax_applied_amount_incl_tax' =>
null,
678 'base_weee_tax_applied_amount_incl_tax' =>
null,
679 'weee_tax_applied_row_amount_incl_tax' =>
null,
680 'base_weee_tax_applied_row_amnt_incl_tax' =>
null,
686 'base_subtotal' =>
null,
687 'subtotal_incl_tax' =>
null,
688 'base_subtotal_incl_tax' =>
null,
689 'weee_amount' =>
null,
690 'base_weee_amount' =>
null,
694 $data[
'zero_items'] = [
696 'priceIncludesTax' =>
false,
701 'includeInSubtotal' =>
false,
705 'item_weee_tax_details' => [
707 'weee_tax_applied_amount' =>
null,
708 'base_weee_tax_applied_amount' =>
null,
709 'weee_tax_applied_row_amount' =>
null,
710 'base_weee_tax_applied_row_amnt' =>
null,
711 'weee_tax_applied_amount_incl_tax' =>
null,
712 'base_weee_tax_applied_amount_incl_tax' =>
null,
713 'weee_tax_applied_row_amount_incl_tax' =>
null,
714 'base_weee_tax_applied_row_amnt_incl_tax' =>
null,
717 'weee_tax_applied_amount' =>
null,
718 'base_weee_tax_applied_amount' =>
null,
719 'weee_tax_applied_row_amount' =>
null,
720 'base_weee_tax_applied_row_amnt' =>
null,
721 'weee_tax_applied_amount_incl_tax' =>
null,
722 'base_weee_tax_applied_amount_incl_tax' =>
null,
723 'weee_tax_applied_row_amount_incl_tax' =>
null,
724 'base_weee_tax_applied_row_amnt_incl_tax' =>
null,
730 'base_subtotal' =>
null,
731 'subtotal_incl_tax' =>
null,
732 'base_subtotal_incl_tax' =>
null,
733 'weee_amount' =>
null,
734 'base_weee_amount' =>
null,
testCollect($taxConfig, $weeeConfig, $itemWeeeTaxDetails, $itemQty, $addressData=[])
setupTaxHelper($taxConfig)
setupShippingAssignmentMock($addressMock, $itemMock)
verifyTotals($address, $addressData)
verifyItem($item, $itemData)
setupWeeeHelper($weeeConfig)
const KEY_WEEE_BASE_TOTALS
setupTotalMock($itemMock, $isWeeeTaxable, $itemWeeeTaxDetails, $addressData)
testFetchWithZeroAmounts()