public function PathautoMassDeleteTest::generateAliases in Pathauto 8
Helper function to generate aliases.
1 call to PathautoMassDeleteTest::generateAliases()
- PathautoMassDeleteTest::testDeleteAll in tests/src/ Functional/ PathautoMassDeleteTest.php 
- Tests the deletion of all the aliases.
File
- tests/src/ Functional/ PathautoMassDeleteTest.php, line 146 
Class
- PathautoMassDeleteTest
- Mass delete functionality tests.
Namespace
Drupal\Tests\pathauto\FunctionalCode
public function generateAliases() {
  // Delete all aliases to avoid duplicated aliases. They will be recreated
  // below.
  $this
    ->deleteAllAliases();
  // We generate a bunch of aliases for nodes, users and taxonomy terms. If
  // the entities are already created we just update them, otherwise we create
  // them.
  if (empty($this->nodes)) {
    // Create a large number of nodes (100+) to make sure that the batch code
    // works.
    for ($i = 1; $i <= 105; $i++) {
      // Set the alias of two nodes manually.
      $settings = $i > 103 ? [
        'path' => [
          'alias' => "/custom_alias_{$i}",
          'pathauto' => PathautoState::SKIP,
        ],
      ] : [];
      $node = $this
        ->drupalCreateNode($settings);
      $this->nodes[$node
        ->id()] = $node;
    }
  }
  else {
    foreach ($this->nodes as $node) {
      if ($node
        ->id() > 103) {
        // The alias is set manually.
        $node
          ->set('path', [
          'alias' => '/custom_alias_' . $node
            ->id(),
        ]);
      }
      $node
        ->save();
    }
  }
  // Delete information about the state of an alias to make sure that aliases
  // with no such data are left alone by default.
  \Drupal::keyValue('pathauto_state.node')
    ->delete(101);
  if (empty($this->accounts)) {
    for ($i = 1; $i <= 5; $i++) {
      $account = $this
        ->drupalCreateUser();
      $this->accounts[$account
        ->id()] = $account;
    }
  }
  else {
    foreach ($this->accounts as $account) {
      $account
        ->save();
    }
  }
  if (empty($this->terms)) {
    $vocabulary = $this
      ->addVocabulary([
      'name' => 'test vocabulary',
      'vid' => 'test_vocabulary',
    ]);
    for ($i = 1; $i <= 5; $i++) {
      $term = $this
        ->addTerm($vocabulary);
      $this->terms[$term
        ->id()] = $term;
    }
  }
  else {
    foreach ($this->terms as $term) {
      $term
        ->save();
    }
  }
  // Check that we have aliases for the entities.
  foreach ([
    'nodes',
    'accounts',
    'terms',
  ] as $attribute) {
    foreach ($this->{$attribute} as $entity) {
      $this
        ->assertEntityAliasExists($entity);
    }
  }
}