123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Tax\Test\Unit\Model\Quote;
- use \Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
- /**
- * Class ToOrderConverterTest
- * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
- */
- class ToOrderConverterTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var \Magento\Sales\Api\Data\OrderExtensionFactory|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $orderExtensionFactoryMock;
- /**
- * @var \Magento\Quote\Model\Quote\Address|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $quoteAddressMock;
- /**
- * @var \Magento\Quote\Model\Quote\Address\ToOrder|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $subjectMock;
- /**
- * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
- */
- protected $objectManagerHelper;
- /**
- * @var \Magento\Tax\Model\Quote\ToOrderConverter
- */
- protected $model;
- protected function setUp()
- {
- $this->orderExtensionFactoryMock = $this->getMockBuilder(
- \Magento\Sales\Api\Data\OrderExtensionFactory::class
- )->disableOriginalConstructor()
- ->setMethods(['create'])
- ->getMock();
- $this->quoteAddressMock = $this->getMockBuilder(\Magento\Quote\Model\Quote\Address::class)
- ->disableOriginalConstructor()
- ->setMethods(['getAppliedTaxes', 'getItemsAppliedTaxes'])
- ->getMock();
- $this->subjectMock = $this->getMockBuilder(\Magento\Quote\Model\Quote\Address\ToOrder::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->objectManagerHelper = new ObjectManager($this);
- $this->model = $this->objectManagerHelper->getObject(
- \Magento\Tax\Model\Quote\ToOrderConverter::class,
- [
- 'orderExtensionFactory' => $this->orderExtensionFactoryMock,
- ]
- );
- }
- /**
- * @return \PHPUnit_Framework_MockObject_MockObject
- */
- protected function setupOrderExtensionAttributeMock()
- {
- $orderExtensionAttributeMock = $this->getMockBuilder(\Magento\Sales\Api\Data\OrderExtensionInterface::class)
- ->setMethods(
- [
- 'setAppliedTaxes',
- 'setConvertingFromQuote',
- 'setItemAppliedTaxes'
- ]
- )->getMockForAbstractClass();
- return $orderExtensionAttributeMock;
- }
- /**
- * @param array $appliedTaxes
- * @param array $expectedAppliedTaxes
- * @param array $itemsAppliedTaxes
- * @param array $itemAppliedTaxesExpected
- * @dataProvider afterConvertDataProvider
- */
- public function testAfterConvert(
- $appliedTaxes,
- $expectedAppliedTaxes,
- $itemsAppliedTaxes,
- $itemAppliedTaxesExpected
- ) {
- $this->model->beforeConvert($this->subjectMock, $this->quoteAddressMock);
- $this->quoteAddressMock->expects($this->once())
- ->method('getAppliedTaxes')
- ->willReturn($appliedTaxes);
- $this->quoteAddressMock->expects($this->once())
- ->method('getItemsAppliedTaxes')
- ->willReturn($itemsAppliedTaxes);
- $orderMock = $this->getMockBuilder(\Magento\Sales\Model\Order::class)
- ->disableOriginalConstructor()
- ->getMock();
- $orderExtensionAttributeMock = $this->setupOrderExtensionAttributeMock();
- $orderMock->expects($this->once())
- ->method('getExtensionAttributes')
- ->willReturn($orderExtensionAttributeMock);
- $orderExtensionAttributeMock->expects($this->once())
- ->method('setAppliedTaxes')
- ->with($expectedAppliedTaxes);
- $orderExtensionAttributeMock->expects($this->once())
- ->method('setConvertingFromQuote')
- ->with(true);
- $orderExtensionAttributeMock->expects($this->once())
- ->method('setItemAppliedTaxes')
- ->with($itemAppliedTaxesExpected);
- $orderMock->expects($this->once())
- ->method('setExtensionAttributes')
- ->with($orderExtensionAttributeMock);
- $this->assertEquals($orderMock, $this->model->afterConvert($this->subjectMock, $orderMock));
- }
- /**
- * @param array $appliedTaxes
- * @param array $expectedAppliedTaxes
- * @param array $itemsAppliedTaxes
- * @param array $itemAppliedTaxesExpected
- * @dataProvider afterConvertDataProvider
- */
- public function testAfterConvertNullExtensionAttribute(
- $appliedTaxes,
- $expectedAppliedTaxes,
- $itemsAppliedTaxes,
- $itemAppliedTaxesExpected
- ) {
- $this->model->beforeConvert($this->subjectMock, $this->quoteAddressMock);
- $this->quoteAddressMock->expects($this->once())
- ->method('getAppliedTaxes')
- ->willReturn($appliedTaxes);
- $this->quoteAddressMock->expects($this->once())
- ->method('getItemsAppliedTaxes')
- ->willReturn($itemsAppliedTaxes);
- $orderExtensionAttributeMock = $this->setupOrderExtensionAttributeMock();
-
- $orderMock = $this->getMockBuilder(\Magento\Sales\Model\Order::class)
- ->disableOriginalConstructor()
- ->getMock();
- $orderMock->expects($this->once())
- ->method('getExtensionAttributes')
- ->willReturn(null);
- $this->orderExtensionFactoryMock->expects($this->once())
- ->method('create')
- ->willReturn($orderExtensionAttributeMock);
- $orderExtensionAttributeMock->expects($this->once())
- ->method('setAppliedTaxes')
- ->with($expectedAppliedTaxes);
- $orderExtensionAttributeMock->expects($this->once())
- ->method('setConvertingFromQuote')
- ->with(true);
- $orderExtensionAttributeMock->expects($this->once())
- ->method('setItemAppliedTaxes')
- ->with($itemAppliedTaxesExpected);
- $orderMock->expects($this->once())
- ->method('setExtensionAttributes')
- ->with($orderExtensionAttributeMock);
- $this->assertEquals($orderMock, $this->model->afterConvert($this->subjectMock, $orderMock));
- }
- /**
- * Data provider for testAfterConvert and testAfterConvertNullExtensionAttribute
- *
- * @return array
- */
- public function afterConvertDataProvider()
- {
- return [
- 'afterConvert' => [
- 'applied_taxes' => [
- 'IL' => [
- 'amount' => 0.36,
- 'percent' => 6,
- 'rates' => [
- [
- 'percent' => 6,
- 'code' => 'IL',
- 'title' => 'IL',
- ]
- ],
- ],
- ],
- 'expected_applied_taxes' => [
- 'IL' => [
- 'amount' => 0.36,
- 'percent' => 6,
- 'extension_attributes' => [
- 'rates' => [
- [
- 'percent' => 6,
- 'code' => 'IL',
- 'title' => 'IL',
- ]
- ],
- ],
- ],
- ],
- 'item_applied_taxes' => [
- 'sequence-1' => [
- [
- 'amount' => 0.06,
- 'item_id' => 146,
- 'item_type' => 'product',
- 'associated_item_id' => null,
- 'rates' => [
- [
- 'percent' => 6,
- 'code' => 'IL',
- 'title' => 'IL',
- ],
- ],
- ],
- ],
- 'shipping' => [
- [
- 'amount' => 0.30,
- 'item_id' => 146,
- 'item_type' => 'shipping',
- 'associated_item_id' => null,
- 'rates' => [
- [
- 'percent' => 6,
- 'code' => 'IL',
- 'title' => 'IL',
- ],
- ],
- ]
- ],
- ],
- 'item_applied_taxes_expected' => [
- 'sequence-1' => [
- 'item_id' => 146,
- 'type' => 'product',
- 'associated_item_id' => null,
- 'applied_taxes' => [
- [
- 'amount' => 0.06,
- 'item_id' => 146,
- 'item_type' => 'product',
- 'associated_item_id' => null,
- 'extension_attributes' => [
- 'rates' => [
- [
- 'percent' => 6,
- 'code' => 'IL',
- 'title' => 'IL',
- ]
- ],
- ],
- ]
- ],
- ],
- 'shipping' => [
- 'item_id' => 146,
- 'type' => 'shipping',
- 'associated_item_id' => null,
- 'applied_taxes' => [
- [
- 'amount' => 0.30,
- 'item_id' => 146,
- 'item_type' => 'shipping',
- 'associated_item_id' => null,
- 'extension_attributes' => [
- 'rates' => [
- [
- 'percent' => 6,
- 'code' => 'IL',
- 'title' => 'IL',
- ]
- ],
- ],
- ]
- ],
- ],
- ],
- ],
- ];
- }
- }
|