AbstractExtensibleObjectTest.php 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Api;
  7. use Magento\TestModuleExtensionAttributes\Model\Data\FakeRegionFactory;
  8. use Magento\TestModuleExtensionAttributes\Api\Data\FakeRegionExtension;
  9. /**
  10. * Test for \Magento\Framework\Api\AbstractExtensibleObject
  11. */
  12. class AbstractExtensibleObjectTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /** @var \Magento\Framework\ObjectManagerInterface */
  15. private $_objectManager;
  16. protected function setUp()
  17. {
  18. $this->_objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  19. $this->_objectManager->configure(
  20. [
  21. 'preferences' => [
  22. \Magento\TestModuleExtensionAttributes\Api\Data\FakeAddressInterface::class =>
  23. \Magento\TestModuleExtensionAttributes\Model\FakeAddress::class,
  24. \Magento\TestModuleExtensionAttributes\Api\Data\FakeRegionInterface::class =>
  25. \Magento\TestModuleExtensionAttributes\Model\FakeRegion::class,
  26. ],
  27. ]
  28. );
  29. }
  30. /**
  31. * Test setExtensionAttributes and getExtensionAttributes for \Magento\Framework\Api\AbstractExtensibleObject
  32. *
  33. * @param array $expectedDataBefore
  34. * @param array $expectedDataAfter
  35. * @dataProvider extensionAttributesDataProvider
  36. */
  37. public function testExtensionAttributes($expectedDataBefore, $expectedDataAfter)
  38. {
  39. /** @var \Magento\Framework\Api\ExtensionAttributesFactory $regionExtensionFactory */
  40. $regionExtensionFactory = $this->_objectManager->get(\Magento\Framework\Api\ExtensionAttributesFactory::class);
  41. /** @var FakeRegionFactory $regionFactory */
  42. $regionFactory = $this->_objectManager->get(FakeRegionFactory::class);
  43. /** @var \Magento\TestModuleExtensionAttributes\Model\Data\FakeRegion $region */
  44. $region = $regionFactory->create();
  45. $regionCode = 'test_code';
  46. /** @var \Magento\TestModuleExtensionAttributes\Model\Data\FakeRegionExtensionInterface $regionExtension */
  47. $regionExtension = $regionExtensionFactory->create(
  48. \Magento\TestModuleExtensionAttributes\Model\Data\FakeRegion::class,
  49. ['data' => $expectedDataBefore]
  50. );
  51. $region->setRegionCode($regionCode)->setExtensionAttributes($regionExtension);
  52. $this->assertInstanceOf(\Magento\TestModuleExtensionAttributes\Model\Data\FakeRegion::class, $region);
  53. $extensionAttributes = $region->getExtensionAttributes();
  54. $this->assertInstanceOf(FakeRegionExtension::class, $extensionAttributes);
  55. $this->assertEquals($expectedDataBefore, $extensionAttributes->__toArray());
  56. $this->assertEquals($regionCode, $region->getRegionCode());
  57. $regionCode = 'changed_test_code';
  58. $region->setExtensionAttributes(
  59. $regionExtensionFactory->create(
  60. \Magento\TestModuleExtensionAttributes\Model\Data\FakeRegion::class,
  61. ['data' => $expectedDataAfter]
  62. )
  63. )->setRegionCode($regionCode); // change $regionCode to test AbstractExtensibleObject::setData
  64. $extensionAttributes = $region->getExtensionAttributes();
  65. $this->assertEquals($expectedDataAfter, $extensionAttributes->__toArray());
  66. $this->assertEquals($regionCode, $region->getRegionCode());
  67. }
  68. public function extensionAttributesDataProvider()
  69. {
  70. return [
  71. 'boolean' => [
  72. [true],
  73. [false]
  74. ],
  75. 'integer' => [
  76. [1],
  77. [2]
  78. ],
  79. 'string' => [
  80. ['test'],
  81. ['test test']
  82. ],
  83. 'array' => [
  84. [[1]],
  85. [[1, 2]]
  86. ]
  87. ];
  88. }
  89. }