Issue #2918643 by eyilmaz, alexpott: TipPluginText's ariaId is not unique

8.6.x
Alex Pott 2018-04-30 12:48:09 +01:00
parent fb4c903430
commit d5841b0956
No known key found for this signature in database
GPG Key ID: 31905460D4A69276
2 changed files with 51 additions and 4 deletions

View File

@ -39,6 +39,13 @@ class TipPluginText extends TipPluginBase implements ContainerFactoryPluginInter
*/ */
protected $location; protected $location;
/**
* Unique aria-id.
*
* @var string
*/
protected $ariaId;
/** /**
* Constructs a \Drupal\tour\Plugin\tour\tip\TipPluginText object. * Constructs a \Drupal\tour\Plugin\tour\tip\TipPluginText object.
* *
@ -70,11 +77,10 @@ class TipPluginText extends TipPluginBase implements ContainerFactoryPluginInter
* A unique id to be used to generate aria attributes. * A unique id to be used to generate aria attributes.
*/ */
public function getAriaId() { public function getAriaId() {
static $id; if (!$this->ariaId) {
if (!isset($id)) { $this->ariaId = Html::getUniqueId($this->get('id'));
$id = Html::getUniqueId($this->get('id'));
} }
return $id; return $this->ariaId;
} }
/** /**

View File

@ -0,0 +1,41 @@
<?php
namespace Drupal\Tests\tour\Unit\Plugin\tour\tip;
use Drupal\Tests\UnitTestCase;
use Drupal\tour\Plugin\tour\tip\TipPluginText;
/**
* @coversDefaultClass \Drupal\tour\Plugin\tour\tip\TipPluginText
* @group tour
*/
class TipPluginTextTest extends UnitTestCase {
/**
* Tests that getAriaId returns unique id per plugin instance.
*
* @see \Drupal\tour\Plugin\tour\tip\TipPluginText::getAriaId()
*/
public function testGetAriaId() {
$id_instance_one = $this->getRandomGenerator()->word(4, TRUE);
$id_instance_two = $this->getRandomGenerator()->word(4, TRUE);
$config_instance_one = [
'id' => $id_instance_one,
];
$config_instance_two = [
'id' => $id_instance_two,
];
$definition = [];
$plugin_id = 'text';
$token = $this->createMock('\Drupal\Core\Utility\Token');
$instance_one = new TipPluginText($config_instance_one, $plugin_id, $definition, $token);
$instance_two = new TipPluginText($config_instance_two, $plugin_id, $definition, $token);
$instance_three = new TipPluginText($config_instance_one, $plugin_id, $definition, $token);
$this->assertEquals($id_instance_one, $instance_one->getAriaId());
$this->assertEquals($id_instance_two, $instance_two->getAriaId());
$this->assertNotEquals($instance_one->getAriaId(), $instance_two->getAriaId());
$this->assertNotEquals($instance_one->getAriaId(), $instance_three->getAriaId());
}
}