![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-customer/Test/Unit/Block/Address/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Customer\Test\Unit\Block\Address; use Magento\Customer\Api\AddressRepositoryInterface; use Magento\Customer\Api\Data\AddressInterface; use Magento\Customer\Api\Data\AddressInterfaceFactory; use Magento\Customer\Api\Data\CustomerInterface; use Magento\Customer\Block\Address\Edit; use Magento\Customer\Helper\Session\CurrentCustomer; use Magento\Customer\Model\Session; use Magento\Framework\Api\DataObjectHelper; use Magento\Framework\App\RequestInterface; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\Framework\View\LayoutInterface; use Magento\Framework\View\Page\Config; use Magento\Framework\View\Page\Title; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class EditTest extends TestCase { /** * @var ObjectManager */ protected $objectManager; /** * @var RequestInterface|MockObject */ protected $requestMock; /** * @var AddressRepositoryInterface|MockObject */ protected $addressRepositoryMock; /** * @var Session|MockObject */ protected $customerSessionMock; /** * @var Config|MockObject */ protected $pageConfigMock; /** * @var DataObjectHelper|MockObject */ protected $dataObjectHelperMock; /** * @var AddressInterfaceFactory|MockObject */ protected $addressDataFactoryMock; /** * @var CurrentCustomer|MockObject */ protected $currentCustomerMock; /** * @var Edit */ protected $model; /** * @inheritdoc */ protected function setUp(): void { $this->objectManager = new ObjectManager($this); $this->requestMock = $this->getMockBuilder(RequestInterface::class) ->getMock(); $this->addressRepositoryMock = $this->getMockBuilder(AddressRepositoryInterface::class) ->getMock(); $this->customerSessionMock = $this->getMockBuilder(Session::class) ->disableOriginalConstructor() ->onlyMethods(['getCustomerId']) ->addMethods(['getAddressFormData']) ->getMock(); $this->pageConfigMock = $this->getMockBuilder(Config::class) ->disableOriginalConstructor() ->getMock(); $this->dataObjectHelperMock = $this->getMockBuilder(DataObjectHelper::class) ->disableOriginalConstructor() ->getMock(); $this->addressDataFactoryMock = $this->getMockBuilder(AddressInterfaceFactory::class) ->onlyMethods(['create']) ->disableOriginalConstructor() ->getMock(); $this->currentCustomerMock = $this->getMockBuilder(CurrentCustomer::class) ->disableOriginalConstructor() ->getMock(); $this->model = $this->objectManager->getObject( Edit::class, [ 'request' => $this->requestMock, 'addressRepository' => $this->addressRepositoryMock, 'customerSession' => $this->customerSessionMock, 'pageConfig' => $this->pageConfigMock, 'dataObjectHelper' => $this->dataObjectHelperMock, 'addressDataFactory' => $this->addressDataFactoryMock, 'currentCustomer' => $this->currentCustomerMock ] ); } /** * @return void */ public function testSetLayoutWithOwnAddressAndPostedData(): void { $addressId = 1; $customerId = 1; $title = __('Edit Address'); $postedData = [ 'region_id' => 1, 'region' => 'region' ]; $newPostedData = $postedData; $newPostedData['region'] = $postedData; $layoutMock = $this->getMockBuilder(LayoutInterface::class) ->getMock(); $this->requestMock->expects($this->once()) ->method('getParam') ->with('id', null) ->willReturn($addressId); $addressMock = $this->getMockBuilder(AddressInterface::class) ->getMock(); $this->addressRepositoryMock->expects($this->once()) ->method('getById') ->with($addressId) ->willReturn($addressMock); $addressMock->expects($this->once()) ->method('getCustomerId') ->willReturn($customerId); $addressMock->expects($this->exactly(2)) ->method('getId') ->willReturn($addressId); $pageTitleMock = $this->getMockBuilder(Title::class) ->disableOriginalConstructor() ->getMock(); $this->pageConfigMock->expects($this->once()) ->method('getTitle') ->willReturn($pageTitleMock); $pageTitleMock->expects($this->once()) ->method('set') ->with($title) ->willReturnSelf(); $this->customerSessionMock ->method('getCustomerId') ->willReturn($customerId); $this->customerSessionMock ->method('getAddressFormData') ->with(true) ->willReturn($postedData); $this->dataObjectHelperMock->expects($this->once()) ->method('populateWithArray') ->with( $addressMock, $newPostedData, AddressInterface::class )->willReturnSelf(); $this->assertEquals($this->model, $this->model->setLayout($layoutMock)); $this->assertEquals($layoutMock, $this->model->getLayout()); } /** * @return void * @throws LocalizedException * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function testSetLayoutWithAlienAddress(): void { $addressId = 1; $customerId = 1; $customerPrefix = 'prefix'; $customerFirstName = 'firstname'; $customerMiddlename = 'middlename'; $customerLastname = 'lastname'; $customerSuffix = 'suffix'; $title = __('Add New Address'); $layoutMock = $this->getMockBuilder(LayoutInterface::class) ->getMock(); $this->requestMock->expects($this->once()) ->method('getParam') ->with('id', null) ->willReturn($addressId); $addressMock = $this->getMockBuilder(AddressInterface::class) ->getMock(); $this->addressRepositoryMock->expects($this->once()) ->method('getById') ->with($addressId) ->willReturn($addressMock); $addressMock->expects($this->once()) ->method('getCustomerId') ->willReturn($customerId); $this->customerSessionMock ->method('getCustomerId') ->willReturn($customerId + 1); $newAddressMock = $this->getMockBuilder(AddressInterface::class) ->getMock(); $this->addressDataFactoryMock->expects($this->once()) ->method('create') ->willReturn($newAddressMock); $customerMock = $this->getMockBuilder(CustomerInterface::class) ->getMock(); $this->currentCustomerMock->expects($this->once()) ->method('getCustomer') ->willReturn($customerMock); $customerMock->expects($this->once()) ->method('getPrefix') ->willReturn($customerPrefix); $customerMock->expects($this->once()) ->method('getFirstname') ->willReturn($customerFirstName); $customerMock->expects($this->once()) ->method('getMiddlename') ->willReturn($customerMiddlename); $customerMock->expects($this->once()) ->method('getLastname') ->willReturn($customerLastname); $customerMock->expects($this->once()) ->method('getSuffix') ->willReturn($customerSuffix); $newAddressMock->expects($this->once()) ->method('setPrefix') ->with($customerPrefix) ->willReturnSelf(); $newAddressMock->expects($this->once()) ->method('setFirstname') ->with($customerFirstName) ->willReturnSelf(); $newAddressMock->expects($this->once()) ->method('setMiddlename') ->with($customerMiddlename) ->willReturnSelf(); $newAddressMock->expects($this->once()) ->method('setLastname') ->with($customerLastname) ->willReturnSelf(); $newAddressMock->expects($this->once()) ->method('setSuffix') ->with($customerSuffix) ->willReturnSelf(); $newAddressMock->expects($this->once()) ->method('getId') ->willReturn(null); $pageTitleMock = $this->getMockBuilder(Title::class) ->disableOriginalConstructor() ->getMock(); $this->pageConfigMock->expects($this->once()) ->method('getTitle') ->willReturn($pageTitleMock); $pageTitleMock->expects($this->once()) ->method('set') ->with($title) ->willReturnSelf(); $this->assertEquals($this->model, $this->model->setLayout($layoutMock)); $this->assertEquals($layoutMock, $this->model->getLayout()); } /** * @return void */ public function testSetLayoutWithoutAddressId(): void { $customerPrefix = 'prefix'; $customerFirstName = 'firstname'; $customerMiddlename = 'middlename'; $customerLastname = 'lastname'; $customerSuffix = 'suffix'; $title = 'title'; $layoutMock = $this->getMockBuilder(LayoutInterface::class) ->getMock(); $this->requestMock->expects($this->once()) ->method('getParam') ->with('id', null) ->willReturn(''); $newAddressMock = $this->getMockBuilder(AddressInterface::class) ->getMock(); $this->addressDataFactoryMock->expects($this->once()) ->method('create') ->willReturn($newAddressMock); $customerMock = $this->getMockBuilder(CustomerInterface::class) ->getMock(); $this->currentCustomerMock->expects($this->once()) ->method('getCustomer') ->willReturn($customerMock); $customerMock->expects($this->once()) ->method('getPrefix') ->willReturn($customerPrefix); $customerMock->expects($this->once()) ->method('getFirstname') ->willReturn($customerFirstName); $customerMock->expects($this->once()) ->method('getMiddlename') ->willReturn($customerMiddlename); $customerMock->expects($this->once()) ->method('getLastname') ->willReturn($customerLastname); $customerMock->expects($this->once()) ->method('getSuffix') ->willReturn($customerSuffix); $newAddressMock->expects($this->once()) ->method('setPrefix') ->with($customerPrefix) ->willReturnSelf(); $newAddressMock->expects($this->once()) ->method('setFirstname') ->with($customerFirstName) ->willReturnSelf(); $newAddressMock->expects($this->once()) ->method('setMiddlename') ->with($customerMiddlename) ->willReturnSelf(); $newAddressMock->expects($this->once()) ->method('setLastname') ->with($customerLastname) ->willReturnSelf(); $newAddressMock->expects($this->once()) ->method('setSuffix') ->with($customerSuffix) ->willReturnSelf(); $pageTitleMock = $this->getMockBuilder(Title::class) ->disableOriginalConstructor() ->getMock(); $this->pageConfigMock->expects($this->once()) ->method('getTitle') ->willReturn($pageTitleMock); $this->model->setData('title', $title); $pageTitleMock->expects($this->once()) ->method('set') ->with($title) ->willReturnSelf(); $this->assertEquals($this->model, $this->model->setLayout($layoutMock)); $this->assertEquals($layoutMock, $this->model->getLayout()); } /** * @return void */ public function testSetLayoutWithoutAddress(): void { $addressId = 1; $customerPrefix = 'prefix'; $customerFirstName = 'firstname'; $customerMiddlename = 'middlename'; $customerLastname = 'lastname'; $customerSuffix = 'suffix'; $title = 'title'; $layoutMock = $this->getMockBuilder(LayoutInterface::class) ->getMock(); $this->requestMock->expects($this->once()) ->method('getParam') ->with('id', null) ->willReturn($addressId); $this->addressRepositoryMock->expects($this->once()) ->method('getById') ->with($addressId) ->willThrowException( NoSuchEntityException::singleField('addressId', $addressId) ); $newAddressMock = $this->getMockBuilder(AddressInterface::class) ->getMock(); $this->addressDataFactoryMock->expects($this->once()) ->method('create') ->willReturn($newAddressMock); $customerMock = $this->getMockBuilder(CustomerInterface::class) ->getMock(); $this->currentCustomerMock->expects($this->once()) ->method('getCustomer') ->willReturn($customerMock); $customerMock->expects($this->once()) ->method('getPrefix') ->willReturn($customerPrefix); $customerMock->expects($this->once()) ->method('getFirstname') ->willReturn($customerFirstName); $customerMock->expects($this->once()) ->method('getMiddlename') ->willReturn($customerMiddlename); $customerMock->expects($this->once()) ->method('getLastname') ->willReturn($customerLastname); $customerMock->expects($this->once()) ->method('getSuffix') ->willReturn($customerSuffix); $newAddressMock->expects($this->once()) ->method('setPrefix') ->with($customerPrefix) ->willReturnSelf(); $newAddressMock->expects($this->once()) ->method('setFirstname') ->with($customerFirstName) ->willReturnSelf(); $newAddressMock->expects($this->once()) ->method('setMiddlename') ->with($customerMiddlename) ->willReturnSelf(); $newAddressMock->expects($this->once()) ->method('setLastname') ->with($customerLastname) ->willReturnSelf(); $newAddressMock->expects($this->once()) ->method('setSuffix') ->with($customerSuffix) ->willReturnSelf(); $pageTitleMock = $this->getMockBuilder(Title::class) ->disableOriginalConstructor() ->getMock(); $this->pageConfigMock->expects($this->once()) ->method('getTitle') ->willReturn($pageTitleMock); $this->model->setData('title', $title); $pageTitleMock->expects($this->once()) ->method('set') ->with($title) ->willReturnSelf(); $this->assertEquals($this->model, $this->model->setLayout($layoutMock)); $this->assertEquals($layoutMock, $this->model->getLayout()); } }