mb_strtolower($this->randomMachineName()), 'type' => $type, 'pattern' => $pattern, 'weight' => $weight, ]); $pattern->save(); return $pattern; } /** * Add a bundle condition to a pathauto pattern. * * @param \Drupal\pathauto\PathautoPatternInterface $pattern * The pattern. * @param string $entity_type * The entity type ID. * @param string $bundle * The bundle. */ protected function addBundleCondition(PathautoPatternInterface $pattern, $entity_type, $bundle) { $plugin_id = $entity_type == 'node' ? 'node_type' : 'entity_bundle:' . $entity_type; $pattern->addSelectionCondition( [ 'id' => $plugin_id, 'bundles' => [ $bundle => $bundle, ], 'negate' => FALSE, 'context_mapping' => [ $entity_type => $entity_type, ] ] ); } public function assertToken($type, $object, $token, $expected) { $bubbleable_metadata = new BubbleableMetadata(); $tokens = \Drupal::token()->generate($type, array($token => $token), array($type => $object), [], $bubbleable_metadata); $tokens += array($token => ''); $this->assertIdentical($tokens[$token], $expected, t("Token value for [@type:@token] was '@actual', expected value '@expected'.", array('@type' => $type, '@token' => $token, '@actual' => $tokens[$token], '@expected' => $expected))); } public function saveAlias($source, $alias, $langcode = Language::LANGCODE_NOT_SPECIFIED) { \Drupal::service('path.alias_storage')->delete(array('source' => $source, 'language', 'langcode' => $langcode)); return \Drupal::service('path.alias_storage')->save($source, $alias, $langcode); } public function saveEntityAlias(EntityInterface $entity, $alias, $langcode = NULL) { // By default, use the entity language. if (!$langcode) { $langcode = $entity->language()->getId(); } return $this->saveAlias('/' . $entity->toUrl()->getInternalPath(), $alias, $langcode); } public function assertEntityAlias(EntityInterface $entity, $expected_alias, $langcode = NULL) { // By default, use the entity language. if (!$langcode) { $langcode = $entity->language()->getId(); } $this->assertAlias('/' . $entity->toUrl()->getInternalPath(), $expected_alias, $langcode); } public function assertEntityAliasExists(EntityInterface $entity) { return $this->assertAliasExists(array('source' => '/' . $entity->toUrl()->getInternalPath())); } public function assertNoEntityAlias(EntityInterface $entity, $langcode = NULL) { // By default, use the entity language. if (!$langcode) { $langcode = $entity->language()->getId(); } $this->assertEntityAlias($entity, '/' . $entity->toUrl()->getInternalPath(), $langcode); } public function assertNoEntityAliasExists(EntityInterface $entity, $alias = NULL) { $path = array('source' => '/' . $entity->toUrl()->getInternalPath()); if (!empty($alias)) { $path['alias'] = $alias; } $this->assertNoAliasExists($path); } public function assertAlias($source, $expected_alias, $langcode = Language::LANGCODE_NOT_SPECIFIED) { \Drupal::service('path.alias_manager')->cacheClear($source); $this->assertEqual($expected_alias, \Drupal::service('path.alias_manager')->getAliasByPath($source, $langcode), t("Alias for %source with language '@language' is correct.", array('%source' => $source, '@language' => $langcode))); } public function assertAliasExists($conditions) { $path = \Drupal::service('path.alias_storage')->load($conditions); $this->assertTrue($path, t('Alias with conditions @conditions found.', array('@conditions' => var_export($conditions, TRUE)))); return $path; } public function assertNoAliasExists($conditions) { $alias = \Drupal::service('path.alias_storage')->load($conditions); $this->assertFalse($alias, t('Alias with conditions @conditions not found.', array('@conditions' => var_export($conditions, TRUE)))); } public function deleteAllAliases() { \Drupal::database()->delete('url_alias')->execute(); \Drupal::service('path.alias_manager')->cacheClear(); } /** * @param array $values * * @return \Drupal\taxonomy\VocabularyInterface */ public function addVocabulary(array $values = array()) { $name = mb_strtolower($this->randomMachineName(5)); $values += array( 'name' => $name, 'vid' => $name, ); $vocabulary = Vocabulary::create($values); $vocabulary->save(); return $vocabulary; } public function addTerm(VocabularyInterface $vocabulary, array $values = array()) { $values += array( 'name' => mb_strtolower($this->randomMachineName(5)), 'vid' => $vocabulary->id(), ); $term = Term::create($values); $term->save(); return $term; } public function assertEntityPattern($entity_type, $bundle, $langcode = Language::LANGCODE_NOT_SPECIFIED, $expected) { $values = [ 'langcode' => $langcode, \Drupal::entityTypeManager()->getDefinition($entity_type)->getKey('bundle') => $bundle, ]; $entity = \Drupal::entityTypeManager()->getStorage($entity_type)->create($values); $pattern = \Drupal::service('pathauto.generator')->getPatternByEntity($entity); $this->assertIdentical($expected, $pattern->getPattern()); } public function drupalGetTermByName($name, $reset = FALSE) { if ($reset) { // @todo - implement cache reset. } $terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadByProperties(array('name' => $name)); return !empty($terms) ? reset($terms) : FALSE; } }