Your IP : 216.73.216.38
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Customer\Block\Form;
use Magento\Framework\ObjectManagerInterface;
use Magento\Framework\View\LayoutInterface;
use Magento\Framework\View\Element\ButtonLockManager;
use Magento\TestFramework\Helper\Bootstrap;
use Magento\TestFramework\Helper\Xpath;
use PHPUnit\Framework\TestCase;
/**
* Class checks login form view
*
* @magentoAppArea frontend
*/
class LoginTest extends TestCase
{
private const EMAIL_LABEL_XPATH = "//label[@for='email']/span[contains(text(), 'Email')]";
private const PASSWORD_LABEL_XPATH = "//label[@for='pass' ]/span[contains(text(), 'Password')]";
private const EMAIL_INPUT_XPATH = "//input[@name ='login[username]' and contains(@data-validate,'required:true')"
. "and contains(@data-validate, \"'validate-email':true\")]";
private const PASSWORD_INPUT_XPATH = "//input[@name='login[password]'"
. "and contains(@data-validate,'required:true')]";
private const SIGN_IN_BUTTON_XPATH = "//button[@type='submit']/span[contains(text(), 'Sign In')]";
private const FORGOT_PASSWORD_LINK_PATH = "//a[contains(@href, 'customer/account/forgotpassword')]"
. "/span[contains(text(), 'Forgot Your Password?')] ";
/** @var ObjectManagerInterface */
private $objectManager;
/** @var LayoutInterface */
private $layout;
/** @var Login */
private $block;
/**
* @inheritdoc
*/
protected function setUp(): void
{
$this->objectManager = Bootstrap::getObjectManager();
$this->layout = $this->objectManager->get(LayoutInterface::class);
$code = 'customer_login_form_submit';
$buttonLock = $this->getMockBuilder(\Magento\ReCaptchaUi\Model\ButtonLock::class)
->disableOriginalConstructor()
->disableAutoload()
->setMethods(['isDisabled', 'getCode'])
->getMock();
$buttonLock->expects($this->any())->method('getCode')->willReturn($code);
$buttonLock->expects($this->any())->method('isDisabled')->willReturn(false);
$buttonLockManager = $this->objectManager->create(
ButtonLockManager::class,
['buttonLockPool' => [$code => $buttonLock]]
);
$this->block = $this->layout->createBlock(Login::class);
$this->block->setTemplate('Magento_Customer::form/login.phtml');
$this->block->setButtonLockManager($buttonLockManager);
parent::setUp();
}
/**
* @return void
*/
public function testLoginForm(): void
{
$result = $this->block->toHtml();
$this->assertEquals(
1,
Xpath::getElementsCountForXpath(self::EMAIL_LABEL_XPATH, $result),
'Email label does not exist on the page'
);
$this->assertEquals(
1,
Xpath::getElementsCountForXpath(self::PASSWORD_LABEL_XPATH, $result),
'Password label does not exist on the page'
);
$this->assertEquals(
1,
Xpath::getElementsCountForXpath(self::EMAIL_INPUT_XPATH, $result),
'Email input does not exist on the page'
);
$this->assertEquals(
1,
Xpath::getElementsCountForXpath(self::PASSWORD_INPUT_XPATH, $result),
'Password input does not exist on the page'
);
$this->assertEquals(
1,
Xpath::getElementsCountForXpath(self::SIGN_IN_BUTTON_XPATH, $result),
'Sign in button does not exist on the page'
);
$this->assertEquals(
1,
Xpath::getElementsCountForXpath(self::FORGOT_PASSWORD_LINK_PATH, $result),
'Forgot password link does not exist on the page'
);
}
/**
* @magentoConfigFixture current_store customer/password/autocomplete_on_storefront 1
*
* @return void
*/
public function testAutocompletePasswordEnabled(): void
{
$this->assertFalse($this->block->isAutocompleteDisabled());
}
/**
* @magentoConfigFixture current_store customer/password/autocomplete_on_storefront 0
*
* @return void
*/
public function testAutocompletePasswordDisabled(): void
{
$this->assertTrue($this->block->isAutocompleteDisabled());
}
}