209 lines
7.2 KiB
PHP
Executable File
209 lines
7.2 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
namespace Magento\Customer\Block\Address;
|
|
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
|
|
class BookTest extends \PHPUnit\Framework\TestCase
|
|
{
|
|
/**
|
|
* @var \Magento\Customer\Block\Address\Book
|
|
*/
|
|
protected $_block;
|
|
|
|
/**
|
|
* @var \Magento\Customer\Helper\Session\CurrentCustomer
|
|
*/
|
|
protected $currentCustomer;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
/** @var \PHPUnit\Framework\MockObject\MockObject $blockMock */
|
|
$blockMock = $this->getMockBuilder(
|
|
\Magento\Framework\View\Element\BlockInterface::class
|
|
)->disableOriginalConstructor()->setMethods(
|
|
['setTitle', 'toHtml']
|
|
)->getMock();
|
|
$blockMock->expects($this->any())->method('setTitle');
|
|
|
|
$this->currentCustomer = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
|
|
->get(\Magento\Customer\Helper\Session\CurrentCustomer::class);
|
|
/** @var \Magento\Framework\View\LayoutInterface $layout */
|
|
$layout = Bootstrap::getObjectManager()->get(\Magento\Framework\View\LayoutInterface::class);
|
|
$layout->setBlock('head', $blockMock);
|
|
$this->_block = $layout
|
|
->createBlock(
|
|
\Magento\Customer\Block\Address\Book::class,
|
|
'',
|
|
['currentCustomer' => $this->currentCustomer]
|
|
);
|
|
}
|
|
|
|
protected function tearDown(): void
|
|
{
|
|
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
|
|
/** @var \Magento\Customer\Model\CustomerRegistry $customerRegistry */
|
|
$customerRegistry = $objectManager->get(\Magento\Customer\Model\CustomerRegistry::class);
|
|
// Cleanup customer from registry
|
|
$customerRegistry->remove(1);
|
|
}
|
|
|
|
public function testGetAddressEditUrl()
|
|
{
|
|
$this->assertEquals(
|
|
'http://localhost/index.php/customer/address/edit/id/1/',
|
|
$this->_block->getAddressEditUrl(1)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_two_addresses.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_no_address.php
|
|
* @dataProvider hasPrimaryAddressDataProvider
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
public function testHasPrimaryAddress($customerId, $expected)
|
|
{
|
|
if (!empty($customerId)) {
|
|
$this->currentCustomer->setCustomerId($customerId);
|
|
}
|
|
$this->assertEquals($expected, $this->_block->hasPrimaryAddress());
|
|
}
|
|
|
|
public function hasPrimaryAddressDataProvider()
|
|
{
|
|
return ['0' => [0, false], '1' => [1, true], '5' => [5, false]];
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_two_addresses.php
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
public function testGetAdditionalAddresses()
|
|
{
|
|
$this->currentCustomer->setCustomerId(1);
|
|
$this->assertNotNull($this->_block->getAdditionalAddresses());
|
|
$this->assertCount(1, $this->_block->getAdditionalAddresses());
|
|
$this->assertInstanceOf(
|
|
\Magento\Customer\Api\Data\AddressInterface::class,
|
|
$this->_block->getAdditionalAddresses()[0]
|
|
);
|
|
$this->assertEquals(2, $this->_block->getAdditionalAddresses()[0]->getId());
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer_no_address.php
|
|
* @dataProvider getAdditionalAddressesDataProvider
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
public function testGetAdditionalAddressesNegative($customerId, $expected)
|
|
{
|
|
if (!empty($customerId)) {
|
|
$this->currentCustomer->setCustomerId($customerId);
|
|
}
|
|
$this->assertEquals($expected, $this->_block->getAdditionalAddresses());
|
|
}
|
|
|
|
public function getAdditionalAddressesDataProvider()
|
|
{
|
|
return ['0' => [0, false], '5' => [5, false]];
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_address.php
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
public function testGetAddressHtml()
|
|
{
|
|
$expected = "John Smith<br />\nCompanyName<br />\nGreen str, 67<br />\n\n\n\nCityM, Alabama, 75477<br />" .
|
|
"\nUnited States<br />\nT: <a href=\"tel:3468676\">3468676</a>\n\n";
|
|
$address = Bootstrap::getObjectManager()->get(
|
|
\Magento\Customer\Api\AddressRepositoryInterface::class
|
|
)->getById(1);
|
|
$html = $this->_block->getAddressHtml($address);
|
|
$this->assertEquals($expected, $html);
|
|
}
|
|
|
|
public function testGetAddressHtmlWithoutAddress()
|
|
{
|
|
$this->assertEquals('', $this->_block->getAddressHtml(null));
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
public function testGetCustomer()
|
|
{
|
|
/** @var CustomerRepositoryInterface $customerRepository */
|
|
$customerRepository = Bootstrap::getObjectManager()->get(
|
|
\Magento\Customer\Api\CustomerRepositoryInterface::class
|
|
);
|
|
$customer = $customerRepository->getById(1);
|
|
|
|
$this->currentCustomer->setCustomerId(1);
|
|
$object = $this->_block->getCustomer();
|
|
$this->assertEquals($customer, $object);
|
|
}
|
|
|
|
public function testGetCustomerMissingCustomer()
|
|
{
|
|
$this->assertNull($this->_block->getCustomer());
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_two_addresses.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_no_address.php
|
|
* @dataProvider getDefaultBillingDataProvider
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
public function testGetDefaultBilling($customerId, $expected)
|
|
{
|
|
$this->currentCustomer->setCustomerId($customerId);
|
|
$this->assertEquals($expected, $this->_block->getDefaultBilling());
|
|
}
|
|
|
|
public function getDefaultBillingDataProvider()
|
|
{
|
|
return ['0' => [0, null], '1' => [1, 1], '5' => [5, null]];
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_two_addresses.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_no_address.php
|
|
* @dataProvider getDefaultShippingDataProvider
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
public function testGetDefaultShipping($customerId, $expected)
|
|
{
|
|
if (!empty($customerId)) {
|
|
$this->currentCustomer->setCustomerId($customerId);
|
|
}
|
|
$this->assertEquals($expected, $this->_block->getDefaultShipping());
|
|
}
|
|
|
|
public function getDefaultShippingDataProvider()
|
|
{
|
|
return ['0' => [0, null], '1' => [1, 1], '5' => [5, null]];
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_two_addresses.php
|
|
*/
|
|
public function testGetAddressById()
|
|
{
|
|
$this->assertInstanceOf(\Magento\Customer\Api\Data\AddressInterface::class, $this->_block->getAddressById(1));
|
|
$this->assertNull($this->_block->getAddressById(5));
|
|
}
|
|
}
|