222 lines
7.2 KiB
PHP
Executable File
222 lines
7.2 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\Customer\Block\Address;
|
|
|
|
use Magento\Customer\Model\AddressRegistry;
|
|
use Magento\Customer\Model\CustomerRegistry;
|
|
use Magento\Customer\Model\Session;
|
|
use Magento\Framework\App\RequestInterface;
|
|
use Magento\Framework\ObjectManagerInterface;
|
|
use Magento\Framework\View\Result\Page;
|
|
use Magento\Framework\View\Result\PageFactory;
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
use Magento\TestFramework\Helper\Xpath;
|
|
use Magento\TestFramework\Store\ExecuteInStoreContext;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
/**
|
|
* Tests Address Edit Block
|
|
*
|
|
* @see \Magento\Customer\Block\Address\Edit
|
|
*
|
|
* @magentoAppArea frontend
|
|
* @magentoAppIsolation enabled
|
|
*
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
*/
|
|
class EditTest extends TestCase
|
|
{
|
|
/** @var ObjectManagerInterface */
|
|
private $objectManager;
|
|
|
|
/** @var Edit */
|
|
private $block;
|
|
|
|
/** @var Session */
|
|
private $customerSession;
|
|
|
|
/** @var AddressRegistry */
|
|
private $addressRegistry;
|
|
|
|
/** @var CustomerRegistry */
|
|
private $customerRegistry;
|
|
|
|
/** @var RequestInterface */
|
|
private $request;
|
|
|
|
/** @var ExecuteInStoreContext */
|
|
private $executeInStoreContext;
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
protected function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
$this->objectManager = Bootstrap::getObjectManager();
|
|
$this->customerSession = $this->objectManager->get(Session::class);
|
|
$this->customerSession->setCustomerId(1);
|
|
$this->request = $this->objectManager->get(RequestInterface::class);
|
|
$this->request->setParam('id', '1');
|
|
/** @var Page $page */
|
|
$page = $this->objectManager->get(PageFactory::class)->create();
|
|
$page->addHandle(['default', 'customer_address_form']);
|
|
$page->getLayout()->generateXml();
|
|
$this->block = $page->getLayout()->getBlock('customer_address_edit');
|
|
$this->addressRegistry = $this->objectManager->get(AddressRegistry::class);
|
|
$this->customerRegistry = $this->objectManager->get(CustomerRegistry::class);
|
|
$this->executeInStoreContext = $this->objectManager->get(ExecuteInStoreContext::class);
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
protected function tearDown(): void
|
|
{
|
|
parent::tearDown();
|
|
$this->customerSession->setCustomerId(null);
|
|
$this->request->setParam('id', null);
|
|
//Cleanup address from registry
|
|
$this->addressRegistry->remove(1);
|
|
$this->addressRegistry->remove(2);
|
|
//Cleanup customer from registry
|
|
$this->customerRegistry->remove(1);
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @return void
|
|
*/
|
|
public function testGetSaveUrl(): void
|
|
{
|
|
$this->assertEquals('http://localhost/index.php/customer/address/formPost/', $this->block->getSaveUrl());
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_address.php
|
|
* @return void
|
|
*/
|
|
public function testGetRegionId(): void
|
|
{
|
|
$this->assertEquals(1, $this->block->getRegionId());
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_address.php
|
|
* @return void
|
|
*/
|
|
public function testGetCountryId(): void
|
|
{
|
|
$this->assertEquals('US', $this->block->getCountryId());
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_two_addresses.php
|
|
* @return void
|
|
*/
|
|
public function testGetCustomerAddressCount(): void
|
|
{
|
|
$this->assertEquals(2, $this->block->getCustomerAddressCount());
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @return void
|
|
*/
|
|
public function testCanSetAsDefaultShipping(): void
|
|
{
|
|
$this->assertEquals(0, $this->block->canSetAsDefaultShipping());
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @return void
|
|
*/
|
|
public function testIsDefaultBilling(): void
|
|
{
|
|
$this->assertFalse($this->block->isDefaultBilling());
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_address.php
|
|
* @return void
|
|
*/
|
|
public function testGetStreetLine(): void
|
|
{
|
|
$this->assertEquals('Green str, 67', $this->block->getStreetLine(1));
|
|
$this->assertEquals('', $this->block->getStreetLine(2));
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoConfigFixture current_store customer/create_account/vat_frontend_visibility 1
|
|
* @return void
|
|
*/
|
|
public function testVatIdFieldVisible(): void
|
|
{
|
|
$html = $this->block->toHtml();
|
|
$labelXpath = "//div[contains(@class, 'taxvat')]//label/span[normalize-space(text()) = '%s']";
|
|
$this->assertEquals(1, Xpath::getElementsCountForXpath(sprintf($labelXpath, __('VAT Number')), $html));
|
|
$inputXpath = "//div[contains(@class, 'taxvat')]//div/input[contains(@id,'vat_id') and @type='text']";
|
|
$this->assertEquals(1, Xpath::getElementsCountForXpath($inputXpath, $html));
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoConfigFixture current_store customer/create_account/vat_frontend_visibility 0
|
|
* @return void
|
|
*/
|
|
public function testVatIdFieldNotVisible(): void
|
|
{
|
|
$html = $this->block->toHtml();
|
|
$labelXpath = "//div[contains(@class, 'taxvat')]//label/span[normalize-space(text()) = '%s']";
|
|
$this->assertEquals(0, Xpath::getElementsCountForXpath(sprintf($labelXpath, __('VAT Number')), $html));
|
|
$inputXpath = "//div[contains(@class, 'taxvat')]//div/input[contains(@id,'vat_id') and @type='text']";
|
|
$this->assertEquals(0, Xpath::getElementsCountForXpath($inputXpath, $html));
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoDataFixture Magento/Customer/_files/attribute_postcode_store_label_address.php
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testCheckPostCodeLabels(): void
|
|
{
|
|
$html = $this->executeInStoreContext->execute('default', [$this->block, 'toHtml']);
|
|
$this->assertEquals(
|
|
1,
|
|
Xpath::getElementsCountForXpath(
|
|
sprintf(
|
|
"//form[contains(@class, 'form-address-edit')]//label[@for='zip']/span[contains(text(), '%s')]",
|
|
'default store postcode label'
|
|
),
|
|
$html
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Check that submit button is disabled
|
|
*
|
|
* @magentoDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_address.php
|
|
* @return void
|
|
*/
|
|
public function testSubmitButtonIsDisabled(): void
|
|
{
|
|
$html = $this->block->toHtml();
|
|
$buttonXpath = "//form[contains(@class, 'form-address-edit')]//button[@type='submit' and @disabled='disabled']";
|
|
$this->assertEquals(1, Xpath::getElementsCountForXpath($buttonXpath, $html));
|
|
}
|
|
}
|