99 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
namespace Magento\Framework\Api;
 | 
						|
 | 
						|
use Magento\TestModuleExtensionAttributes\Model\Data\FakeRegionFactory;
 | 
						|
use Magento\TestModuleExtensionAttributes\Api\Data\FakeRegionExtension;
 | 
						|
 | 
						|
/**
 | 
						|
 * Test for \Magento\Framework\Api\AbstractExtensibleObject
 | 
						|
 */
 | 
						|
class AbstractExtensibleObjectTest extends \PHPUnit\Framework\TestCase
 | 
						|
{
 | 
						|
    /** @var \Magento\Framework\ObjectManagerInterface */
 | 
						|
    private $_objectManager;
 | 
						|
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $this->_objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
 | 
						|
        $this->_objectManager->configure(
 | 
						|
            [
 | 
						|
                'preferences' => [
 | 
						|
                    \Magento\TestModuleExtensionAttributes\Api\Data\FakeAddressInterface::class =>
 | 
						|
                        \Magento\TestModuleExtensionAttributes\Model\FakeAddress::class,
 | 
						|
                    \Magento\TestModuleExtensionAttributes\Api\Data\FakeRegionInterface::class =>
 | 
						|
                        \Magento\TestModuleExtensionAttributes\Model\FakeRegion::class,
 | 
						|
                ],
 | 
						|
            ]
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Test setExtensionAttributes and getExtensionAttributes for \Magento\Framework\Api\AbstractExtensibleObject
 | 
						|
     *
 | 
						|
     * @param array $expectedDataBefore
 | 
						|
     * @param array $expectedDataAfter
 | 
						|
     * @dataProvider extensionAttributesDataProvider
 | 
						|
     */
 | 
						|
    public function testExtensionAttributes($expectedDataBefore, $expectedDataAfter)
 | 
						|
    {
 | 
						|
        /** @var \Magento\Framework\Api\ExtensionAttributesFactory $regionExtensionFactory */
 | 
						|
        $regionExtensionFactory = $this->_objectManager->get(\Magento\Framework\Api\ExtensionAttributesFactory::class);
 | 
						|
        /** @var FakeRegionFactory $regionFactory */
 | 
						|
        $regionFactory = $this->_objectManager->get(FakeRegionFactory::class);
 | 
						|
 | 
						|
        /** @var \Magento\TestModuleExtensionAttributes\Model\Data\FakeRegion $region */
 | 
						|
        $region = $regionFactory->create();
 | 
						|
 | 
						|
        $regionCode = 'test_code';
 | 
						|
        /** @var \Magento\TestModuleExtensionAttributes\Model\Data\FakeRegionExtensionInterface $regionExtension */
 | 
						|
        $regionExtension = $regionExtensionFactory->create(
 | 
						|
            \Magento\TestModuleExtensionAttributes\Model\Data\FakeRegion::class,
 | 
						|
            ['data' => $expectedDataBefore]
 | 
						|
        );
 | 
						|
        $region->setRegionCode($regionCode)->setExtensionAttributes($regionExtension);
 | 
						|
        $this->assertInstanceOf(\Magento\TestModuleExtensionAttributes\Model\Data\FakeRegion::class, $region);
 | 
						|
 | 
						|
        $extensionAttributes = $region->getExtensionAttributes();
 | 
						|
        $this->assertInstanceOf(FakeRegionExtension::class, $extensionAttributes);
 | 
						|
        $this->assertEquals($expectedDataBefore, $extensionAttributes->__toArray());
 | 
						|
        $this->assertEquals($regionCode, $region->getRegionCode());
 | 
						|
 | 
						|
        $regionCode = 'changed_test_code';
 | 
						|
        $region->setExtensionAttributes(
 | 
						|
            $regionExtensionFactory->create(
 | 
						|
                \Magento\TestModuleExtensionAttributes\Model\Data\FakeRegion::class,
 | 
						|
                ['data' => $expectedDataAfter]
 | 
						|
            )
 | 
						|
        )->setRegionCode($regionCode); // change $regionCode to test AbstractExtensibleObject::setData
 | 
						|
        $extensionAttributes = $region->getExtensionAttributes();
 | 
						|
        $this->assertEquals($expectedDataAfter, $extensionAttributes->__toArray());
 | 
						|
        $this->assertEquals($regionCode, $region->getRegionCode());
 | 
						|
    }
 | 
						|
 | 
						|
    public function extensionAttributesDataProvider()
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            'boolean' => [
 | 
						|
                [true],
 | 
						|
                [false]
 | 
						|
            ],
 | 
						|
            'integer' => [
 | 
						|
                [1],
 | 
						|
                [2]
 | 
						|
            ],
 | 
						|
            'string' => [
 | 
						|
                ['test'],
 | 
						|
                ['test test']
 | 
						|
            ],
 | 
						|
            'array' => [
 | 
						|
                [[1]],
 | 
						|
                [[1, 2]]
 | 
						|
            ]
 | 
						|
        ];
 | 
						|
    }
 | 
						|
}
 |