View source
<?php
namespace Drupal\Tests\views_accordion\FunctionalJavascript;
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
use Drupal\Tests\node\Traits\NodeCreationTrait;
class ViewsAccordionTest extends WebDriverTestBase {
use NodeCreationTrait;
protected $defaultTheme = 'stark';
public static $modules = [
'views_accordion_test',
];
protected $nodes = [];
protected $user1;
protected $user2;
protected function setUp() {
parent::setUp();
$this->user1 = $this
->createUser();
$this->user2 = $this
->createUser();
$this->nodes[] = $this
->createNode([
'uid' => $this->user1
->id(),
]);
$this->nodes[] = $this
->createNode([
'uid' => $this->user1
->id(),
]);
$this->nodes[] = $this
->createNode([
'uid' => $this->user2
->id(),
]);
$this->nodes[] = $this
->createNode([
'uid' => $this->user2
->id(),
]);
}
public function testViewsAccordion() {
$this
->drupalGet('views-accordion-test');
$driver = $this
->getSession()
->getDriver();
$assert_session = $this
->assertSession();
$settings = $this
->getDrupalSettings();
$this
->assertArrayHasKey('views_accordion', $settings, 'Views accordion JS settings avaialable');
$driver
->isVisible($this
->cssSelectToXpath('#ui-id-2'));
$this
->assertFalse($driver
->isVisible($this
->cssSelectToXpath('#ui-id-4')), 'Row two is collapsed');
$this
->click('#ui-id-1');
$driver
->isVisible($this
->cssSelectToXpath('#ui-id-2'));
$driver
->isVisible($this
->cssSelectToXpath('#ui-id-1 span.ui-icon-triangle-1-s'));
$driver
->isVisible($this
->cssSelectToXpath('#ui-id-3 span.ui-icon-triangle-1-e'));
$this
->drupalGet('views-accordion-test-grouping');
$this
->assertEquals($this->user1
->getAccountName(), $driver
->getText($this
->cssSelectToXpath('#ui-id-1')));
$driver
->isVisible($this
->cssSelectToXpath('#ui-id-2'));
$assert_session
->elementTextContains('css', '#ui-id-2', $this->nodes[0]
->getTitle());
$assert_session
->elementTextContains('css', '#ui-id-2', $this->nodes[1]
->getTitle());
$assert_session
->elementTextNotContains('css', '#ui-id-2', $this->nodes[2]
->getTitle());
$assert_session
->elementTextNotContains('css', '#ui-id-2', $this->nodes[3]
->getTitle());
$this
->assertEquals($this->user2
->getAccountName(), $driver
->getText($this
->cssSelectToXpath('#ui-id-3')));
$second_group_xpath = $this
->cssSelectToXpath('#ui-id-4');
$this
->assertFalse($driver
->isVisible($second_group_xpath), 'Second accordion group is collapsed');
$this
->click('#ui-id-3');
$driver
->isVisible($second_group_xpath);
$assert_session
->elementTextNotContains('css', '#ui-id-4', $this->nodes[0]
->getTitle());
$assert_session
->elementTextNotContains('css', '#ui-id-4', $this->nodes[1]
->getTitle());
$assert_session
->elementTextContains('css', '#ui-id-4', $this->nodes[2]
->getTitle());
$assert_session
->elementTextContains('css', '#ui-id-4', $this->nodes[3]
->getTitle());
}
}