public function PathautoKernelTest::testUpdateActions in Pathauto 8
Test the different update actions in \Drupal::service('pathauto.generator')->createEntityAlias().
File
- tests/
src/ Kernel/ PathautoKernelTest.php, line 278
Class
- PathautoKernelTest
- Unit tests for Pathauto functions.
Namespace
Drupal\Tests\pathauto\KernelCode
public function testUpdateActions() {
$config = $this
->config('pathauto.settings');
// Test PATHAUTO_UPDATE_ACTION_NO_NEW with unaliased node and 'insert'.
$config
->set('update_action', PathautoGeneratorInterface::UPDATE_ACTION_NO_NEW);
$config
->save();
$node = $this
->drupalCreateNode([
'title' => 'First title',
]);
$this
->assertEntityAlias($node, '/content/first-title');
$node->path->pathauto = PathautoState::CREATE;
// Default action is PATHAUTO_UPDATE_ACTION_DELETE.
$config
->set('update_action', PathautoGeneratorInterface::UPDATE_ACTION_DELETE);
$config
->save();
$node
->setTitle('Second title');
$node
->save();
$this
->assertEntityAlias($node, '/content/second-title');
$this
->assertNoAliasExists([
'alias' => '/content/first-title',
]);
// Test PATHAUTO_UPDATE_ACTION_LEAVE.
$config
->set('update_action', PathautoGeneratorInterface::UPDATE_ACTION_LEAVE);
$config
->save();
$node
->setTitle('Third title');
$node
->save();
$this
->assertEntityAlias($node, '/content/third-title');
$this
->assertAliasExists([
'path' => '/' . $node
->toUrl()
->getInternalPath(),
'alias' => '/content/second-title',
]);
$config
->set('update_action', PathautoGeneratorInterface::UPDATE_ACTION_DELETE);
$config
->save();
$node
->setTitle('Fourth title');
$node
->save();
$this
->assertEntityAlias($node, '/content/fourth-title');
$this
->assertNoAliasExists([
'alias' => '/content/third-title',
]);
// The older second alias is not deleted yet.
$older_path = $this
->assertAliasExists([
'path' => '/' . $node
->toUrl()
->getInternalPath(),
'alias' => '/content/second-title',
]);
\Drupal::service('entity_type.manager')
->getStorage('path_alias')
->delete([
$older_path,
]);
$config
->set('update_action', PathautoGeneratorInterface::UPDATE_ACTION_NO_NEW);
$config
->save();
$node
->setTitle('Fifth title');
$node
->save();
$this
->assertEntityAlias($node, '/content/fourth-title');
$this
->assertNoAliasExists([
'alias' => '/content/fifth-title',
]);
// Test PATHAUTO_UPDATE_ACTION_NO_NEW with unaliased node and 'update'.
$this
->deleteAllAliases();
$node
->save();
$this
->assertEntityAlias($node, '/content/fifth-title');
// Test PATHAUTO_UPDATE_ACTION_NO_NEW with unaliased node and 'bulkupdate'.
$this
->deleteAllAliases();
$node
->setTitle('Sixth title');
\Drupal::service('pathauto.generator')
->updateEntityAlias($node, 'bulkupdate');
$this
->assertEntityAlias($node, '/content/sixth-title');
}