123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Customer\Test\Unit\Model\ResourceModel;
- use Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite;
- use Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot;
- use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
- /**
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class AddressTest extends \PHPUnit\Framework\TestCase
- {
- /** @var \Magento\Customer\Test\Unit\Model\ResourceModel\SubResourceModelAddress */
- protected $addressResource;
- /** @var \Magento\Customer\Model\CustomerFactory|\PHPUnit_Framework_MockObject_MockObject */
- protected $customerFactory;
- /** @var \Magento\Eav\Model\Entity\Type */
- protected $eavConfigType;
- /** @var Snapshot|\PHPUnit_Framework_MockObject_MockObject */
- protected $entitySnapshotMock;
- /** @var RelationComposite|\PHPUnit_Framework_MockObject_MockObject */
- protected $entityRelationCompositeMock;
- protected function setUp()
- {
- $this->entitySnapshotMock = $this->createMock(
- \Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot::class
- );
- $this->entityRelationCompositeMock = $this->createMock(
- \Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite::class
- );
- $this->addressResource = (new ObjectManagerHelper($this))->getObject(
- \Magento\Customer\Test\Unit\Model\ResourceModel\SubResourceModelAddress::class,
- [
- 'resource' => $this->prepareResource(),
- 'entitySnapshot' => $this->entitySnapshotMock,
- 'entityRelationComposite' => $this->entityRelationCompositeMock,
- 'eavConfig' => $this->prepareEavConfig(),
- 'validatorFactory' => $this->prepareValidatorFactory(),
- 'customerFactory' => $this->prepareCustomerFactory()
- ]
- );
- }
- /**
- * @param $addressId
- * @param $isDefaultBilling
- * @param $isDefaultShipping
- *
- * @dataProvider getSaveDataProvider
- */
- public function testSave($addressId, $isDefaultBilling, $isDefaultShipping)
- {
- /** @var $address \Magento\Customer\Model\Address|\PHPUnit_Framework_MockObject_MockObject */
- $address = $this->createPartialMock(
- \Magento\Customer\Model\Address::class,
- [
- '__wakeup',
- 'getId',
- 'getEntityTypeId',
- 'getIsDefaultBilling',
- 'getIsDefaultShipping',
- 'hasDataChanges',
- 'validateBeforeSave',
- 'beforeSave',
- 'afterSave',
- 'isSaveAllowed'
- ]
- );
- $this->entitySnapshotMock->expects($this->once())->method('isModified')->willReturn(true);
- $this->entityRelationCompositeMock->expects($this->once())->method('processRelations');
- $address->expects($this->once())->method('isSaveAllowed')->willReturn(true);
- $address->expects($this->once())->method('validateBeforeSave');
- $address->expects($this->once())->method('beforeSave');
- $address->expects($this->once())->method('afterSave');
- $address->expects($this->any())->method('getEntityTypeId')->willReturn('3');
- $address->expects($this->any())->method('getId')->willReturn($addressId);
- $address->expects($this->any())->method('getIsDefaultShipping')->willReturn($isDefaultShipping);
- $address->expects($this->any())->method('getIsDefaultBilling')->willReturn($isDefaultBilling);
- $this->addressResource->setType('customer_address');
- $attributeLoaderMock = $this->getMockBuilder(\Magento\Eav\Model\Entity\AttributeLoaderInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->addressResource->setAttributeLoader($attributeLoaderMock);
- $this->addressResource->save($address);
- }
- /**
- * Data provider for testSave method
- *
- * @return array
- */
- public function getSaveDataProvider()
- {
- return [
- [null, true, true],
- [1, true, true],
- [1, true, false],
- [1, false, true],
- [1, false, false],
- ];
- }
- /**
- * Prepare resource mock object
- *
- * @return \Magento\Framework\App\ResourceConnection|\PHPUnit_Framework_MockObject_MockObject
- */
- protected function prepareResource()
- {
- $dbSelect = $this->createMock(\Magento\Framework\DB\Select::class);
- $dbSelect->expects($this->any())->method('from')->willReturnSelf();
- $dbSelect->expects($this->any())->method('where')->willReturnSelf();
- $dbAdapter = $this->getMockBuilder(\Magento\Framework\DB\Adapter\Pdo\Mysql::class)
- ->disableOriginalConstructor()
- ->getMock();
- $dbAdapter->expects($this->any())
- ->method('describeTable')
- ->with('customer_address_entity')
- ->willReturn(
- [
- 'entity_type_id',
- 'attribute_set_id',
- 'created_at',
- 'updated_at',
- 'parent_id',
- 'increment_id',
- 'entity_id',
- ]
- );
- $dbAdapter->expects($this->any())->method('lastInsertId');
- $dbAdapter->expects($this->any())->method('select')->willReturn($dbSelect);
- $resource = $this->getMockBuilder(\Magento\Framework\App\ResourceConnection::class)
- ->disableOriginalConstructor()
- ->getMock();
- $resource->expects($this->any())->method('getConnection')->will($this->returnValue($dbAdapter));
- $resource->expects($this->any())->method('getTableName')->will($this->returnValue('customer_address_entity'));
- return $resource;
- }
- /**
- * Prepare Eav config mock object
- *
- * @return \Magento\Eav\Model\Config|\PHPUnit_Framework_MockObject_MockObject
- */
- protected function prepareEavConfig()
- {
- $attributeMock = $this->createPartialMock(
- \Magento\Eav\Model\Entity\Attribute\AbstractAttribute::class,
- ['getAttributeCode', 'getBackend', '__wakeup']
- );
- $attributeMock->expects($this->any())
- ->method('getAttributeCode')
- ->willReturn('entity_id');
- $attributeMock->expects($this->any())
- ->method('getBackend')
- ->willReturn(
- $this->createMock(\Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend::class)
- );
- $this->eavConfigType = $this->createPartialMock(
- \Magento\Eav\Model\Entity\Type::class,
- ['getEntityIdField', 'getId', 'getEntityTable', '__wakeup']
- );
- $this->eavConfigType->expects($this->any())->method('getEntityIdField')->willReturn(false);
- $this->eavConfigType->expects($this->any())->method('getId')->willReturn(false);
- $this->eavConfigType->expects($this->any())->method('getEntityTable')->willReturn('customer_address_entity');
- $eavConfig = $this->createPartialMock(
- \Magento\Eav\Model\Config::class,
- ['getEntityType', 'getEntityAttributeCodes', 'getAttribute']
- );
- $eavConfig->expects($this->any())
- ->method('getEntityType')
- ->with('customer_address')
- ->willReturn($this->eavConfigType);
- $eavConfig->expects($this->any())
- ->method('getEntityAttributeCodes')
- ->with($this->eavConfigType)
- ->willReturn(
- [
- 'entity_type_id',
- 'attribute_set_id',
- 'created_at',
- 'updated_at',
- 'parent_id',
- 'increment_id',
- 'entity_id',
- ]
- );
- $eavConfig->expects($this->any())
- ->method('getAttribute')
- ->willReturnMap([
- [$this->eavConfigType, 'entity_type_id', $attributeMock],
- [$this->eavConfigType, 'attribute_set_id', $attributeMock],
- [$this->eavConfigType, 'created_at', $attributeMock],
- [$this->eavConfigType, 'updated_at', $attributeMock],
- [$this->eavConfigType, 'parent_id', $attributeMock],
- [$this->eavConfigType, 'increment_id', $attributeMock],
- [$this->eavConfigType, 'entity_id', $attributeMock],
- ]);
- return $eavConfig;
- }
- /**
- * Prepare validator mock object
- *
- * @return \Magento\Framework\Validator\Factory|\PHPUnit_Framework_MockObject_MockObject
- */
- protected function prepareValidatorFactory()
- {
- $validatorMock = $this->createPartialMock(\Magento\Framework\Validator::class, ['isValid']);
- $validatorMock->expects($this->any())
- ->method('isValid')
- ->willReturn(true);
- $validatorFactory = $this->createPartialMock(\Magento\Framework\Validator\Factory::class, ['createValidator']);
- $validatorFactory->expects($this->any())
- ->method('createValidator')
- ->with('customer_address', 'save')
- ->willReturn($validatorMock);
- return $validatorFactory;
- }
- /**
- * @return \Magento\Customer\Model\CustomerFactory|\PHPUnit_Framework_MockObject_MockObject
- */
- protected function prepareCustomerFactory()
- {
- $this->customerFactory = $this->createPartialMock(\Magento\Customer\Model\CustomerFactory::class, ['create']);
- return $this->customerFactory;
- }
- public function testGetType()
- {
- $this->assertSame($this->eavConfigType, $this->addressResource->getEntityType());
- }
- }
- /**
- * Class SubResourceModelAddress
- * Mock method getAttributeLoader
- * @package Magento\Customer\Test\Unit\Model\ResourceModel
- * @codingStandardsIgnoreStart
- */
- class SubResourceModelAddress extends \Magento\Customer\Model\ResourceModel\Address
- {
- protected $attributeLoader;
- /**
- * @param null $object
- * @return \Magento\Customer\Model\ResourceModel\Address|\Magento\Eav\Model\Entity\AbstractEntity
- */
- public function loadAllAttributes($object = null)
- {
- return $this->getAttributeLoader()->loadAllAttributes($this, $object);
- }
- /**
- * @param $attributeLoader
- */
- public function setAttributeLoader($attributeLoader)
- {
- $this->attributeLoader = $attributeLoader;
- }
- /**
- * @return \Magento\Eav\Model\Entity\AttributeLoaderInterface
- */
- protected function getAttributeLoader()
- {
- return $this->attributeLoader;
- }
- }
- // @codingStandardsIgnoreEnd
|