TaxTest.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Weee\Model;
  7. use Magento\Customer\Api\Data\CustomerInterfaceFactory;
  8. use Magento\TestFramework\Helper\Bootstrap;
  9. /**
  10. * @magentoDataFixture Magento/Customer/_files/customer_sample.php
  11. * @magentoDataFixture Magento/Catalog/_files/products.php
  12. * @magentoDataFixture Magento/Weee/_files/product_with_fpt.php
  13. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  14. */
  15. class TaxTest extends \PHPUnit\Framework\TestCase
  16. {
  17. /**
  18. * @var \Magento\Weee\Model\Tax
  19. */
  20. protected $_model;
  21. /**
  22. * @var \Magento\Framework\Api\ExtensibleDataObjectConverter
  23. */
  24. private $_extensibleDataObjectConverter;
  25. protected function setUp()
  26. {
  27. $objectManager = Bootstrap::getObjectManager();
  28. $weeeConfig = $this->createMock(\Magento\Weee\Model\Config::class);
  29. $weeeConfig->expects($this->any())->method('isEnabled')->will($this->returnValue(true));
  30. $weeeConfig->expects($this->any())->method('isTaxable')->will($this->returnValue(true));
  31. $attribute = $this->createMock(\Magento\Eav\Model\Entity\Attribute::class);
  32. $attribute->expects($this->any())->method('getAttributeCodesByFrontendType')->will(
  33. $this->returnValue(['weee'])
  34. );
  35. $attributeFactory = $this->createPartialMock(\Magento\Eav\Model\Entity\AttributeFactory::class, ['create']);
  36. $attributeFactory->expects($this->any())->method('create')->will($this->returnValue($attribute));
  37. $this->_model = $objectManager->create(
  38. \Magento\Weee\Model\Tax::class,
  39. ['weeeConfig' => $weeeConfig, 'attributeFactory' => $attributeFactory]
  40. );
  41. $this->_extensibleDataObjectConverter = $objectManager->get(
  42. \Magento\Framework\Api\ExtensibleDataObjectConverter::class
  43. );
  44. }
  45. public function testGetProductWeeeAttributes()
  46. {
  47. /** @var \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository */
  48. $customerRepository = Bootstrap::getObjectManager()->create(
  49. \Magento\Customer\Api\CustomerRepositoryInterface::class
  50. );
  51. $customerMetadataService = Bootstrap::getObjectManager()->create(
  52. \Magento\Customer\Api\CustomerMetadataInterface::class
  53. );
  54. $customerFactory = Bootstrap::getObjectManager()->create(
  55. \Magento\Customer\Api\Data\CustomerInterfaceFactory::class,
  56. ['metadataService' => $customerMetadataService]
  57. );
  58. $dataObjectHelper = Bootstrap::getObjectManager()->create(\Magento\Framework\Api\DataObjectHelper::class);
  59. $expected = $this->_extensibleDataObjectConverter->toFlatArray(
  60. $customerRepository->getById(1),
  61. [],
  62. \Magento\Customer\Api\Data\CustomerInterface::class
  63. );
  64. $customerDataSet = $customerFactory->create();
  65. $dataObjectHelper->populateWithArray(
  66. $customerDataSet,
  67. $expected,
  68. \Magento\Customer\Api\Data\CustomerInterface::class
  69. );
  70. $fixtureGroupCode = 'custom_group';
  71. $fixtureTaxClassId = 3;
  72. /** @var \Magento\Customer\Model\Group $group */
  73. $group = Bootstrap::getObjectManager()->create(\Magento\Customer\Model\Group::class);
  74. $fixtureGroupId = $group->load($fixtureGroupCode, 'customer_group_code')->getId();
  75. /** @var \Magento\Quote\Model\Quote $quote */
  76. $quote = Bootstrap::getObjectManager()->create(\Magento\Quote\Model\Quote::class);
  77. $quote->setCustomerGroupId($fixtureGroupId);
  78. $quote->setCustomerTaxClassId($fixtureTaxClassId);
  79. $quote->setCustomer($customerDataSet);
  80. $shipping = new \Magento\Framework\DataObject([
  81. 'quote' => $quote,
  82. ]);
  83. $productRepository = Bootstrap::getObjectManager()->create(
  84. \Magento\Catalog\Api\ProductRepositoryInterface::class
  85. );
  86. $product = $productRepository->get('simple-with-ftp');
  87. $amount = $this->_model->getProductWeeeAttributes($product, $shipping, null, null, true);
  88. $this->assertTrue(is_array($amount));
  89. $this->assertArrayHasKey(0, $amount);
  90. $this->assertEquals(12.70, $amount[0]->getAmount());
  91. }
  92. }