public function AjaxLinkTest::testDomUpdate in Flag 8.4
Tests DOM update.
Click on flag and then unflag links verifying that the link cycles as expected and flag flash message functions.
File
- tests/
src/ FunctionalJavascript/ AjaxLinkTest.php, line 109
Class
- AjaxLinkTest
- Javascript test for AjaxLinks.
Namespace
Drupal\Tests\flag\FunctionalJavascriptCode
public function testDomUpdate() {
// Get Page.
$node_path = '/node/' . $this->node
->id();
$this
->drupalGet($node_path);
$session = $this
->getSession();
$assert_session = $this
->assertSession();
// Verify initially flag link is on the page.
$page = $session
->getPage();
$flag_link = $page
->findLink($this->flag
->getShortText('flag'));
$this
->assertTrue($flag_link
->isVisible(), 'flag link exists.');
$flag_link
->click();
// Verify flags message appears.
$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);
// Verify new link.
$unflag_link = $session
->getPage()
->findLink($this->flag
->getShortText('unflag'));
$this
->assertTrue($unflag_link
->isVisible(), 'unflag link exists.');
$unflag_link
->click();
// Verfy unflag message appears.
$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);
// Verify the cycle completes and flag returns.
$flag_link2 = $session
->getPage()
->findLink($this->flag
->getShortText('flag'));
$this
->assertTrue($flag_link2
->isVisible(), 'flag cycle return to start.');
}