function LegacyAliasStorageTest::testCRUD

@covers ::load
@covers ::save
@covers ::delete
@expectedDeprecation \Drupal\Core\Path\AliasStorage is deprecated in drupal:8.8.0 and is removed from drupal:9.0.0. Use the "path_alias.repository" service instead, or the entity storage handler for the "path_alias" entity type for CRUD methods. See https://www.drupal.org/node/3013865.

File

core/tests/Drupal/KernelTests/Core/Path/LegacyAliasStorageTest.php, line 61

Class

LegacyAliasStorageTest
@coversDefaultClass \Drupal\Core\Path\AliasStorage[[api-linebreak]] @group path @group legacy

Namespace

Drupal\KernelTests\Core\Path

Code

public function testCRUD() {
  $entity_storage = \Drupal::entityTypeManager()->getStorage('path_alias');
  $aliases = $this->sampleUrlAliases();
  // Create a few aliases
  foreach ($aliases as $idx => $alias) {
    $this->storage
      ->save($alias['source'], $alias['alias'], $alias['langcode']);
    $result = $entity_storage->getQuery()
      ->condition('path', $alias['source'])
      ->condition('alias', $alias['alias'])
      ->condition('langcode', $alias['langcode'])
      ->execute();
    $this->assertCount(1, $result, "Created an entry for {$alias['alias']}.");
    // Cache the pid for further tests.
    $aliases[$idx]['pid'] = reset($result);
  }
  // Load a few aliases
  foreach ($aliases as $alias) {
    $pid = $alias['pid'];
    $loadedAlias = $this->storage
      ->load([
      'pid' => $pid,
    ]);
    $this->assertEquals($alias, $loadedAlias, "Loaded the expected path with pid {$pid}.");
  }
  // Load alias by source path.
  $loadedAlias = $this->storage
    ->load([
    'source' => '/node/1',
  ]);
  $this->assertEquals('/alias_for_node_1_und', $loadedAlias['alias'], 'The last created alias loaded by default.');
  // Update a few aliases
  foreach ($aliases as $alias) {
    $fields = $this->storage
      ->save($alias['source'], $alias['alias'] . '_updated', $alias['langcode'], $alias['pid']);
    $this->assertEquals($alias['alias'], $fields['original']['alias']);
    $result = $entity_storage->getQuery()
      ->condition('path', $alias['source'])
      ->condition('alias', $alias['alias'] . '_updated')
      ->condition('langcode', $alias['langcode'])
      ->execute();
    $pid = reset($result);
    $this->assertEquals($alias['pid'], $pid, "Updated entry for pid {$pid}.");
  }
  // Delete a few aliases
  foreach ($aliases as $alias) {
    $pid = $alias['pid'];
    $this->storage
      ->delete([
      'pid' => $pid,
    ]);
    $result = $entity_storage->getQuery()
      ->condition('id', $pid)
      ->execute();
    $this->assertCount(0, $result, "Deleted entry with pid {$pid}.");
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.