140 lines
5.0 KiB
PHP
Executable File
140 lines
5.0 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Customer\Helper;
|
|
|
|
use Magento\Customer\Api\CustomerMetadataInterface;
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
|
|
class ViewTest extends \PHPUnit\Framework\TestCase
|
|
{
|
|
/** @var \Magento\Customer\Helper\View */
|
|
protected $_helper;
|
|
|
|
/** @var CustomerMetadataInterface|\PHPUnit\Framework\MockObject\MockObject */
|
|
protected $_customerMetadataService;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
$this->_customerMetadataService = $this->createMock(\Magento\Customer\Api\CustomerMetadataInterface::class);
|
|
$this->_helper = Bootstrap::getObjectManager()->create(
|
|
\Magento\Customer\Helper\View::class,
|
|
['customerMetadataService' => $this->_customerMetadataService]
|
|
);
|
|
parent::setUp();
|
|
}
|
|
|
|
/**
|
|
* @param \Magento\Customer\Api\Data\CustomerInterface $customerData
|
|
* @param string $expectedCustomerName
|
|
* @param bool $isPrefixAllowed
|
|
* @param bool $isMiddleNameAllowed
|
|
* @param bool $isSuffixAllowed
|
|
* @dataProvider getCustomerNameDataProvider
|
|
*/
|
|
public function testGetCustomerName(
|
|
$customerData,
|
|
$expectedCustomerName,
|
|
$isPrefixAllowed = false,
|
|
$isMiddleNameAllowed = false,
|
|
$isSuffixAllowed = false
|
|
) {
|
|
$visibleAttribute = $this->createMock(\Magento\Customer\Api\Data\AttributeMetadataInterface::class);
|
|
$visibleAttribute->expects($this->any())->method('isVisible')->willReturn(true);
|
|
|
|
$invisibleAttribute = $this->createMock(\Magento\Customer\Api\Data\AttributeMetadataInterface::class);
|
|
$invisibleAttribute->expects($this->any())->method('isVisible')->willReturn(false);
|
|
|
|
$this->_customerMetadataService->expects(
|
|
$this->any()
|
|
)->method(
|
|
'getAttributeMetadata'
|
|
)->willReturnMap(
|
|
[
|
|
['prefix', $isPrefixAllowed ? $visibleAttribute : $invisibleAttribute],
|
|
['middlename', $isMiddleNameAllowed ? $visibleAttribute : $invisibleAttribute],
|
|
['suffix', $isSuffixAllowed ? $visibleAttribute : $invisibleAttribute],
|
|
]
|
|
);
|
|
|
|
$this->assertEquals(
|
|
$expectedCustomerName,
|
|
$this->_helper->getCustomerName($customerData),
|
|
'Full customer name is invalid'
|
|
);
|
|
}
|
|
|
|
public function getCustomerNameDataProvider()
|
|
{
|
|
/** @var \Magento\Customer\Api\Data\CustomerInterfaceFactory $customerFactory */
|
|
$customerFactory = Bootstrap::getObjectManager()->create(
|
|
\Magento\Customer\Api\Data\CustomerInterfaceFactory::class
|
|
);
|
|
return [
|
|
'With disabled prefix, middle name, suffix' => [
|
|
$customerFactory->create()->setPrefix(
|
|
'prefix'
|
|
)->setFirstname(
|
|
'FirstName'
|
|
)->setMiddlename(
|
|
'MiddleName'
|
|
)->setLastname(
|
|
'LastName'
|
|
)->setSuffix(
|
|
'suffix'
|
|
),
|
|
'FirstName LastName',
|
|
],
|
|
'With prefix, middle name, suffix' => [
|
|
$customerFactory->create()->setPrefix(
|
|
'prefix'
|
|
)->setFirstname(
|
|
'FirstName'
|
|
)->setMiddlename(
|
|
'MiddleName'
|
|
)->setLastname(
|
|
'LastName'
|
|
)->setSuffix(
|
|
'suffix'
|
|
),
|
|
'prefix FirstName MiddleName LastName suffix',
|
|
true, // $isPrefixAllowed
|
|
true, // $isMiddleNameAllowed
|
|
true, //$isSuffixAllowed
|
|
],
|
|
'Empty prefix, middle name, suffix' => [
|
|
$customerFactory->create()->setFirstname('FirstName')->setLastname('LastName'),
|
|
'FirstName LastName',
|
|
true, // $isPrefixAllowed
|
|
true, // $isMiddleNameAllowed
|
|
true, //$isSuffixAllowed
|
|
],
|
|
'Empty prefix and suffix, not empty middle name' => [
|
|
$customerFactory->create()->setFirstname(
|
|
'FirstName'
|
|
)->setMiddlename(
|
|
'MiddleName'
|
|
)->setLastname(
|
|
'LastName'
|
|
),
|
|
'FirstName MiddleName LastName',
|
|
true, // $isPrefixAllowed
|
|
true, // $isMiddleNameAllowed
|
|
true, //$isSuffixAllowed
|
|
],
|
|
'With html entities' => [
|
|
$customerFactory->create()->setPrefix(
|
|
'prefix'
|
|
)->setFirstname(
|
|
'<h1>FirstName</h1>'
|
|
)->setLastname(
|
|
'<strong>LastName</strong>'
|
|
),
|
|
'<h1>FirstName</h1> <strong>LastName</strong>',
|
|
],
|
|
];
|
|
}
|
|
}
|