PreserveTitlesOptionTest.php in Automatic Entity Label 8.3
File
tests/src/Functional/PreserveTitlesOptionTest.php
View source
<?php
namespace Drupal\Tests\auto_entitylabel\Functional;
use Drupal\auto_entitylabel\AutoEntityLabelManager;
use Drupal\Tests\BrowserTestBase;
class PreserveTitlesOptionTest extends BrowserTestBase {
protected $nodeType;
protected $configFactory;
protected $user;
protected $nodeStorage;
public static $modules = [
'system',
'user',
'node',
'filter',
'token',
'auto_entitylabel',
];
protected $defaultTheme = 'stark';
protected function setUp() {
parent::setUp();
$this->user = $this
->drupalCreateUser([], '', TRUE);
$this
->drupalLogin($this->user);
$this->nodeType = $this
->createContentType([
'type' => 'page',
]);
$this->configFactory = $this->container
->get('config.factory');
$this->nodeStorage = $this->container
->get('entity_type.manager')
->getStorage('node');
}
public function testPreserveTitlesOptionDisabled() {
$this
->assertPreserveTitlesOption(FALSE, 10);
}
public function testPreserveTitlesOptionEnabled() {
$this
->assertPreserveTitlesOption(TRUE, 10);
}
public function assertPreserveTitlesOption(bool $value, int $numberOfNodes) {
$editNodeId = rand(1, $numberOfNodes);
$webAssert = $this
->assertSession();
$this
->createTestNodes($numberOfNodes, 'page');
$this->configFactory
->getEditable("auto_entitylabel.settings.node.{$this->nodeType->id()}")
->set('status', AutoEntityLabelManager::ENABLED)
->set('pattern', 'Test node [current-user:account-name]')
->set('preserve_titles', $value)
->save();
$this
->drupalGet('/node/' . $editNodeId . '/edit');
$webAssert
->buttonExists('Save')
->click();
if ($value) {
$page = $this->nodeStorage
->load($editNodeId);
$this
->assertNotEquals('Test node ' . $this->user
->getAccountName(), $page
->get('title')->value);
}
else {
$page = $this->nodeStorage
->load($editNodeId);
$this
->assertEquals('Test node ' . $this->user
->getAccountName(), $page
->get('title')->value);
}
}
public function createTestNodes(int $numberOfNodes, string $nodeType) {
for ($i = 0; $i < $numberOfNodes; $i++) {
$this
->drupalCreateNode([
'type' => $nodeType,
'title' => 'Testing node ' . $nodeType . ' ' . $i,
]);
}
}
}