AjaxLinkTest.php in Flag 8.4
File
tests/src/FunctionalJavascript/AjaxLinkTest.php
View source
<?php
namespace Drupal\Tests\flag\FunctionalJavascript;
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
use Drupal\Tests\flag\Traits\FlagCreateTrait;
use Drupal\Tests\flag\Traits\FlagPermissionsTrait;
class AjaxLinkTest extends WebDriverTestBase {
use FlagCreateTrait;
use FlagPermissionsTrait;
protected $defaultTheme = 'stark';
public static $modules = [
'flag',
'node',
'user',
];
protected $flag;
protected $flagService;
protected $node;
protected $admin;
protected $webUser;
protected $disableCssAnimations = FALSE;
protected function setUp() {
parent::setUp();
$this
->createContentType([
'type' => 'article',
]);
$this->admin = $this
->createUser();
$this->node = $this
->createNode([
'type' => 'article',
'uid' => $this->admin
->id(),
]);
$this->flag = $this
->createFlag('node', [
'article',
], 'ajax_link');
$this->flagService = $this->container
->get('flag');
$this->webUser = $this
->createUser([
'access content',
]);
$this
->grantFlagPermissions($this->flag);
$this
->drupalLogin($this->webUser);
}
public function testDomUpdate() {
$node_path = '/node/' . $this->node
->id();
$this
->drupalGet($node_path);
$session = $this
->getSession();
$assert_session = $this
->assertSession();
$page = $session
->getPage();
$flag_link = $page
->findLink($this->flag
->getShortText('flag'));
$this
->assertTrue($flag_link
->isVisible(), 'flag link exists.');
$flag_link
->click();
$flag_message = $this->flag
->getMessage('flag');
$p_flash = $assert_session
->waitForElementVisible('css', 'p.js-flag-message');
$this
->assertEquals($flag_message, $p_flash
->getText(), 'DOM update(1): The flag message is flashed.');
$assert_session
->assertNoElementAfterWait('css', 'p.js-flag-message');
$assert_session
->pageTextNotContains($flag_message);
$unflag_link = $session
->getPage()
->findLink($this->flag
->getShortText('unflag'));
$this
->assertTrue($unflag_link
->isVisible(), 'unflag link exists.');
$unflag_link
->click();
$unflag_message = $this->flag
->getMessage('unflag');
$p_flash2 = $this
->assertSession()
->waitForElementVisible('css', 'p.js-flag-message');
$this
->assertEquals($unflag_message, $p_flash2
->getText(), 'DOM update(3): The unflag message is flashed.');
$assert_session
->assertNoElementAfterWait('css', 'p.js-flag-message');
$assert_session
->pageTextNotContains($unflag_message);
$flag_link2 = $session
->getPage()
->findLink($this->flag
->getShortText('flag'));
$this
->assertTrue($flag_link2
->isVisible(), 'flag cycle return to start.');
}
}