ConverterTest.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Tax\Test\Unit\Model\Calculation\Rate;
  7. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  8. class ConverterTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /**
  11. * @var \Magento\Tax\Model\Calculation\Rate\Converter
  12. */
  13. protected $converter;
  14. /**
  15. * @var \Magento\Tax\Api\Data\TaxRateInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
  16. */
  17. protected $taxRateDataObjectFactory;
  18. /**
  19. * @var \Magento\Tax\Api\Data\TaxRateTitleInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
  20. */
  21. protected $taxRateTitleDataObjectFactory;
  22. /**
  23. * @var \Magento\Framework\Locale\FormatInterface|\PHPUnit_Framework_MockObject_MockObject
  24. */
  25. private $format;
  26. /**
  27. * @var \Magento\Framework\TestFramework\Unit\Helper
  28. */
  29. protected $objectManager;
  30. protected function setUp()
  31. {
  32. $this->taxRateDataObjectFactory = $this->getMockBuilder(
  33. \Magento\Tax\Api\Data\TaxRateInterfaceFactory::class
  34. )
  35. ->disableOriginalConstructor()
  36. ->setMethods(['create'])
  37. ->getMock();
  38. $this->taxRateTitleDataObjectFactory = $this->getMockBuilder(
  39. \Magento\Tax\Api\Data\TaxRateTitleInterfaceFactory::class
  40. )
  41. ->disableOriginalConstructor()
  42. ->setMethods(['create'])
  43. ->getMock();
  44. $this->format = $this->getMockBuilder(\Magento\Framework\Locale\FormatInterface::class)
  45. ->getMock();
  46. $this->objectManager = new ObjectManager($this);
  47. $this->converter = $this->objectManager->getObject(
  48. \Magento\Tax\Model\Calculation\Rate\Converter::class,
  49. [
  50. 'taxRateDataObjectFactory' => $this->taxRateDataObjectFactory,
  51. 'taxRateTitleDataObjectFactory' => $this->taxRateTitleDataObjectFactory,
  52. 'format' => $this->format,
  53. ]
  54. );
  55. }
  56. public function testCreateTitlesFromServiceObject()
  57. {
  58. $taxRateMock = $this->createMock(\Magento\Tax\Api\Data\TaxRateInterface::class);
  59. $titlesMock = $this->createMock(\Magento\Tax\Api\Data\TaxRateTitleInterface::class);
  60. $taxRateMock->expects($this->once())->method('getTitles')->willReturn([$titlesMock]);
  61. $titlesMock->expects($this->once())->method('getStoreId')->willReturn(1);
  62. $titlesMock->expects($this->once())->method('getValue')->willReturn('Value');
  63. $this->assertEquals([1 => 'Value'], $this->converter->createTitleArrayFromServiceObject($taxRateMock));
  64. }
  65. public function testCreateTitlesFromServiceObjectWhenTitlesAreNotProvided()
  66. {
  67. $taxRateMock = $this->createMock(\Magento\Tax\Api\Data\TaxRateInterface::class);
  68. $taxRateMock->expects($this->once())->method('getTitles')->willReturn([]);
  69. $this->assertEquals([], $this->converter->createTitleArrayFromServiceObject($taxRateMock));
  70. }
  71. public function testCreateArrayFromServiceObject()
  72. {
  73. $taxRateMock = $this->createMock(\Magento\Tax\Api\Data\TaxRateInterface::class);
  74. $titlesMock = $this->createMock(\Magento\Tax\Api\Data\TaxRateTitleInterface::class);
  75. $taxRateMock->expects($this->atLeastOnce())->method('getTitles')->willReturn([$titlesMock]);
  76. $titlesMock->expects($this->atLeastOnce())->method('getStoreId')->willReturn(1);
  77. $titlesMock->expects($this->atLeastOnce())->method('getValue')->willReturn('Value');
  78. $this->assertArrayHasKey('title[1]', $this->converter->createArrayFromServiceObject($taxRateMock, true));
  79. $this->assertArrayHasKey('title', $this->converter->createArrayFromServiceObject($taxRateMock));
  80. $this->assertTrue(is_array($this->converter->createArrayFromServiceObject($taxRateMock)));
  81. }
  82. public function testPopulateTaxRateData()
  83. {
  84. $rateTitles = [$this->objectManager->getObject(
  85. \Magento\Tax\Model\Calculation\Rate\Title::class,
  86. ['data' => ['store_id' => 1, 'value' => 'texas']]
  87. )
  88. ];
  89. $dataArray=[
  90. 'tax_country_id' => 'US',
  91. 'tax_region_id' => 2,
  92. 'tax_postcode' => null,
  93. 'rate' => 7.5,
  94. 'code' => 'Tax Rate Code',
  95. 'titles' => $rateTitles,
  96. ];
  97. $taxRate = $this->objectManager->getObject(
  98. \Magento\Tax\Model\Calculation\Rate::class,
  99. [
  100. 'data' => $dataArray,
  101. ]
  102. );
  103. $this->taxRateDataObjectFactory->expects($this->once())->method('create')->willReturn($taxRate);
  104. $this->format->expects($this->once())->method('getNumber')->willReturnArgument(0);
  105. $this->assertSame($taxRate, $this->converter->populateTaxRateData($dataArray));
  106. $this->assertEquals($taxRate->getTitles(), $rateTitles);
  107. }
  108. }