function testTermLanguage() { // Configure the vocabulary to not hide the language selector. $edit = array('default_language[language_alterable]' => TRUE); $this->drupalPostForm('admin/structure/taxonomy/manage/' . $this->vocabulary->id(), $edit, t('Save')); // Add a term. $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add'); // Check that we have the language selector. $this->assertField('edit-langcode-0-value', t('The language selector field was found on the page.')); // Submit the term. $edit = array('name[0][value]' => $this->randomMachineName(), 'langcode[0][value]' => 'aa'); $this->drupalPostForm(NULL, $edit, t('Save')); $terms = taxonomy_term_load_multiple_by_name($edit['name[0][value]']); $term = reset($terms); $this->assertEqual($term->language()->getId(), $edit['langcode[0][value]'], 'The term contains the correct langcode.'); // Check if on the edit page the language is correct. $this->drupalGet('taxonomy/term/' . $term->id() . '/edit'); $this->assertOptionSelected('edit-langcode-0-value', $edit['langcode[0][value]'], 'The term language was correctly selected.'); // Change the language of the term. $edit['langcode[0][value]'] = 'bb'; $this->drupalPostForm('taxonomy/term/' . $term->id() . '/edit', $edit, t('Save')); // Check again that on the edit page the language is correct. $this->drupalGet('taxonomy/term/' . $term->id() . '/edit'); $this->assertOptionSelected('edit-langcode-0-value', $edit['langcode[0][value]'], 'The term language was correctly selected.'); }
/** * Create, edit and delete a taxonomy term via the user interface. */ function testVocabularyPermissionsTaxonomyTerm() { // Vocabulary used for creating, removing and editing terms. $vocabulary = $this->createVocabulary(); // Test as admin user. $user = $this->drupalCreateUser(array('administer taxonomy')); $this->drupalLogin($user); // Visit the main taxonomy administration page. $this->drupalGet('admin/structure/taxonomy/manage/' . $vocabulary->id() . '/add'); $this->assertResponse(200); $this->assertField('edit-name-0-value', 'Add taxonomy term form opened successfully.'); // Submit the term. $edit = array(); $edit['name[0][value]'] = $this->randomMachineName(); $this->drupalPostForm(NULL, $edit, t('Save')); $this->assertRaw(t('Created new term %name.', array('%name' => $edit['name[0][value]'])), 'Term created successfully.'); $terms = taxonomy_term_load_multiple_by_name($edit['name[0][value]']); $term = reset($terms); // Edit the term. $this->drupalGet('taxonomy/term/' . $term->id() . '/edit'); $this->assertResponse(200); $this->assertText($edit['name[0][value]'], 'Edit taxonomy term form opened successfully.'); $edit['name[0][value]'] = $this->randomMachineName(); $this->drupalPostForm(NULL, $edit, t('Save')); $this->assertRaw(t('Updated term %name.', array('%name' => $edit['name[0][value]'])), 'Term updated successfully.'); // Delete the vocabulary. $this->drupalGet('taxonomy/term/' . $term->id() . '/delete'); $this->assertRaw(t('Are you sure you want to delete the @entity-type %label?', array('@entity-type' => 'taxonomy term', '%label' => $edit['name[0][value]'])), 'Delete taxonomy term form opened successfully.'); // Confirm deletion. $this->drupalPostForm(NULL, NULL, t('Delete')); $this->assertRaw(t('Deleted term %name.', array('%name' => $edit['name[0][value]'])), 'Term deleted.'); // Test as user with "edit" permissions. $user = $this->drupalCreateUser(array("edit terms in {$vocabulary->id()}")); $this->drupalLogin($user); // Visit the main taxonomy administration page. $this->drupalGet('admin/structure/taxonomy/manage/' . $vocabulary->id() . '/add'); $this->assertResponse(403, 'Add taxonomy term form open failed.'); // Create a test term. $term = $this->createTerm($vocabulary); // Edit the term. $this->drupalGet('taxonomy/term/' . $term->id() . '/edit'); $this->assertResponse(200); $this->assertText($term->getName(), 'Edit taxonomy term form opened successfully.'); $edit['name[0][value]'] = $this->randomMachineName(); $this->drupalPostForm(NULL, $edit, t('Save')); $this->assertRaw(t('Updated term %name.', array('%name' => $edit['name[0][value]'])), 'Term updated successfully.'); // Delete the vocabulary. $this->drupalGet('taxonomy/term/' . $term->id() . '/delete'); $this->assertResponse(403, 'Delete taxonomy term form open failed.'); // Test as user with "delete" permissions. $user = $this->drupalCreateUser(array("delete terms in {$vocabulary->id()}")); $this->drupalLogin($user); // Visit the main taxonomy administration page. $this->drupalGet('admin/structure/taxonomy/manage/' . $vocabulary->id() . '/add'); $this->assertResponse(403, 'Add taxonomy term form open failed.'); // Create a test term. $term = $this->createTerm($vocabulary); // Edit the term. $this->drupalGet('taxonomy/term/' . $term->id() . '/edit'); $this->assertResponse(403, 'Edit taxonomy term form open failed.'); // Delete the vocabulary. $this->drupalGet('taxonomy/term/' . $term->id() . '/delete'); $this->assertRaw(t('Are you sure you want to delete the @entity-type %label?', array('@entity-type' => 'taxonomy term', '%label' => $term->getName())), 'Delete taxonomy term form opened successfully.'); // Confirm deletion. $this->drupalPostForm(NULL, NULL, t('Delete')); $this->assertRaw(t('Deleted term %name.', array('%name' => $term->getName())), 'Term deleted.'); // Test as user without proper permissions. $user = $this->drupalCreateUser(); $this->drupalLogin($user); // Visit the main taxonomy administration page. $this->drupalGet('admin/structure/taxonomy/manage/' . $vocabulary->id() . '/add'); $this->assertResponse(403, 'Add taxonomy term form open failed.'); // Create a test term. $term = $this->createTerm($vocabulary); // Edit the term. $this->drupalGet('taxonomy/term/' . $term->id() . '/edit'); $this->assertResponse(403, 'Edit taxonomy term form open failed.'); // Delete the vocabulary. $this->drupalGet('taxonomy/term/' . $term->id() . '/delete'); $this->assertResponse(403, 'Delete taxonomy term form open failed.'); }
/** * Test taxonomy_term_load_multiple_by_name(). */ function testTaxonomyGetTermByName() { $term = $this->createTerm($this->vocabulary); // Load the term with the exact name. $terms = taxonomy_term_load_multiple_by_name($term->getName()); $this->assertTrue(isset($terms[$term->id()]), 'Term loaded using exact name.'); // Load the term with space concatenated. $terms = taxonomy_term_load_multiple_by_name(' ' . $term->getName() . ' '); $this->assertTrue(isset($terms[$term->id()]), 'Term loaded with extra whitespace.'); // Load the term with name uppercased. $terms = taxonomy_term_load_multiple_by_name(strtoupper($term->getName())); $this->assertTrue(isset($terms[$term->id()]), 'Term loaded with uppercased name.'); // Load the term with name lowercased. $terms = taxonomy_term_load_multiple_by_name(strtolower($term->getName())); $this->assertTrue(isset($terms[$term->id()]), 'Term loaded with lowercased name.'); // Try to load an invalid term name. $terms = taxonomy_term_load_multiple_by_name('Banana'); $this->assertFalse($terms, 'No term loaded with an invalid name.'); // Try to load the term using a substring of the name. $terms = taxonomy_term_load_multiple_by_name(Unicode::substr($term->getName(), 2), 'No term loaded with a substring of the name.'); $this->assertFalse($terms); // Create a new term in a different vocabulary with the same name. $new_vocabulary = $this->createVocabulary(); $new_term = entity_create('taxonomy_term', array('name' => $term->getName(), 'vid' => $new_vocabulary->id())); $new_term->save(); // Load multiple terms with the same name. $terms = taxonomy_term_load_multiple_by_name($term->getName()); $this->assertEqual(count($terms), 2, 'Two terms loaded with the same name.'); // Load single term when restricted to one vocabulary. $terms = taxonomy_term_load_multiple_by_name($term->getName(), $this->vocabulary->id()); $this->assertEqual(count($terms), 1, 'One term loaded when restricted by vocabulary.'); $this->assertTrue(isset($terms[$term->id()]), 'Term loaded using exact name and vocabulary machine name.'); // Create a new term with another name. $term2 = $this->createTerm($this->vocabulary); // Try to load a term by name that doesn't exist in this vocabulary but // exists in another vocabulary. $terms = taxonomy_term_load_multiple_by_name($term2->getName(), $new_vocabulary->id()); $this->assertFalse($terms, 'Invalid term name restricted by vocabulary machine name not loaded.'); // Try to load terms filtering by a non-existing vocabulary. $terms = taxonomy_term_load_multiple_by_name($term2->getName(), 'non_existing_vocabulary'); $this->assertEqual(count($terms), 0, 'No terms loaded when restricted by a non-existing vocabulary.'); }
/** * Tests the Entity Reference Admin UI. */ public function testFieldAdminHandler() { $bundle_path = 'admin/structure/types/manage/' . $this->type; // First step: 'Add new field' on the 'Manage fields' page. $this->drupalGet($bundle_path . '/fields/add-field'); // Check if the commonly referenced entity types appear in the list. $this->assertOption('edit-new-storage-type', 'field_ui:entity_reference:node'); $this->assertOption('edit-new-storage-type', 'field_ui:entity_reference:user'); $this->drupalPostForm(NULL, array('label' => 'Test label', 'field_name' => 'test', 'new_storage_type' => 'entity_reference'), t('Save and continue')); // Node should be selected by default. $this->assertFieldByName('settings[target_type]', 'node'); // Check that all entity types can be referenced. $this->assertFieldSelectOptions('settings[target_type]', array_keys(\Drupal::entityManager()->getDefinitions())); // Second step: 'Field settings' form. $this->drupalPostForm(NULL, array(), t('Save field settings')); // The base handler should be selected by default. $this->assertFieldByName('settings[handler]', 'default:node'); // The base handler settings should be displayed. $entity_type_id = 'node'; $bundles = entity_get_bundles($entity_type_id); foreach ($bundles as $bundle_name => $bundle_info) { $this->assertFieldByName('settings[handler_settings][target_bundles][' . $bundle_name . ']'); } reset($bundles); // Test the sort settings. // Option 0: no sort. $this->assertFieldByName('settings[handler_settings][sort][field]', '_none'); $this->assertNoFieldByName('settings[handler_settings][sort][direction]'); // Option 1: sort by field. $this->drupalPostAjaxForm(NULL, array('settings[handler_settings][sort][field]' => 'nid'), 'settings[handler_settings][sort][field]'); $this->assertFieldByName('settings[handler_settings][sort][direction]', 'ASC'); // Test that a non-translatable base field is a sort option. $this->assertFieldByXPath("//select[@name='settings[handler_settings][sort][field]']/option[@value='nid']"); // Test that a translatable base field is a sort option. $this->assertFieldByXPath("//select[@name='settings[handler_settings][sort][field]']/option[@value='title']"); // Test that a configurable field is a sort option. $this->assertFieldByXPath("//select[@name='settings[handler_settings][sort][field]']/option[@value='body.value']"); // Set back to no sort. $this->drupalPostAjaxForm(NULL, array('settings[handler_settings][sort][field]' => '_none'), 'settings[handler_settings][sort][field]'); $this->assertNoFieldByName('settings[handler_settings][sort][direction]'); // Third step: confirm. $this->drupalPostForm(NULL, array('required' => '1', 'settings[handler_settings][target_bundles][' . key($bundles) . ']' => key($bundles)), t('Save settings')); // Check that the field appears in the overview form. $this->assertFieldByXPath('//table[@id="field-overview"]//tr[@id="field-test"]/td[1]', 'Test label', 'Field was created and appears in the overview page.'); // Check that the field settings form can be submitted again, even when the // field is required. // The first 'Edit' link is for the Body field. $this->clickLink(t('Edit'), 1); $this->drupalPostForm(NULL, array(), t('Save settings')); // Switch the target type to 'taxonomy_term' and check that the settings // specific to its selection handler are displayed. $field_name = 'node.' . $this->type . '.field_test'; $edit = array('settings[target_type]' => 'taxonomy_term'); $this->drupalPostForm($bundle_path . '/fields/' . $field_name . '/storage', $edit, t('Save field settings')); $this->drupalGet($bundle_path . '/fields/' . $field_name); $this->assertFieldByName('settings[handler_settings][auto_create]'); // Switch the target type to 'user' and check that the settings specific to // its selection handler are displayed. $field_name = 'node.' . $this->type . '.field_test'; $edit = array('settings[target_type]' => 'user'); $this->drupalPostForm($bundle_path . '/fields/' . $field_name . '/storage', $edit, t('Save field settings')); $this->drupalGet($bundle_path . '/fields/' . $field_name); $this->assertFieldByName('settings[handler_settings][filter][type]', '_none'); // Switch the target type to 'node'. $field_name = 'node.' . $this->type . '.field_test'; $edit = array('settings[target_type]' => 'node'); $this->drupalPostForm($bundle_path . '/fields/' . $field_name . '/storage', $edit, t('Save field settings')); // Try to select the views handler. $edit = array('settings[handler]' => 'views'); $this->drupalPostAjaxForm($bundle_path . '/fields/' . $field_name, $edit, 'settings[handler]'); $this->assertRaw(t('No eligible views were found. <a href=":create">Create a view</a> with an <em>Entity Reference</em> display, or add such a display to an <a href=":existing">existing view</a>.', array(':create' => \Drupal::url('views_ui.add'), ':existing' => \Drupal::url('entity.view.collection')))); $this->drupalPostForm(NULL, $edit, t('Save settings')); // If no eligible view is available we should see a message. $this->assertText('The views entity selection mode requires a view.'); // Enable the entity_reference_test module which creates an eligible view. $this->container->get('module_installer')->install(array('entity_reference_test')); $this->resetAll(); $this->drupalGet($bundle_path . '/fields/' . $field_name); $this->drupalPostAjaxForm($bundle_path . '/fields/' . $field_name, $edit, 'settings[handler]'); $edit = array('settings[handler_settings][view][view_and_display]' => 'test_entity_reference:entity_reference_1'); $this->drupalPostForm(NULL, $edit, t('Save settings')); $this->assertResponse(200); // Switch the target type to 'entity_test'. $edit = array('settings[target_type]' => 'entity_test'); $this->drupalPostForm($bundle_path . '/fields/' . $field_name . '/storage', $edit, t('Save field settings')); $this->drupalGet($bundle_path . '/fields/' . $field_name); $edit = array('settings[handler]' => 'views'); $this->drupalPostAjaxForm($bundle_path . '/fields/' . $field_name, $edit, 'settings[handler]'); $edit = array('required' => FALSE, 'settings[handler_settings][view][view_and_display]' => 'test_entity_reference_entity_test:entity_reference_1'); $this->drupalPostForm(NULL, $edit, t('Save settings')); $this->assertResponse(200); // Create a new view and display it as a entity reference. $edit = array('id' => 'node_test_view', 'label' => 'Node Test View', 'show[wizard_key]' => 'node', 'page[create]' => 1, 'page[title]' => 'Test Node View', 'page[path]' => 'test/node/view', 'page[style][style_plugin]' => 'default', 'page[style][row_plugin]' => 'fields'); $this->drupalPostForm('admin/structure/views/add', $edit, t('Save and edit')); $this->drupalPostForm(NULL, array(), t('Duplicate as Entity Reference')); $this->clickLink(t('Settings')); $edit = array('style_options[search_fields][title]' => 'title'); $this->drupalPostForm(NULL, $edit, t('Apply')); $this->drupalPostForm('admin/structure/views/view/node_test_view/edit/entity_reference_1', array(), t('Save')); $this->clickLink(t('Settings')); // Create a test entity reference field. $field_name = 'test_entity_ref_field'; $edit = array('new_storage_type' => 'field_ui:entity_reference:node', 'label' => 'Test Entity Reference Field', 'field_name' => $field_name); $this->drupalPostForm($bundle_path . '/fields/add-field', $edit, t('Save and continue')); $this->drupalPostForm(NULL, array(), t('Save field settings')); // Add the view to the test field. $edit = array('settings[handler]' => 'views'); $this->drupalPostAjaxForm(NULL, $edit, 'settings[handler]'); $edit = array('required' => FALSE, 'settings[handler_settings][view][view_and_display]' => 'node_test_view:entity_reference_1'); $this->drupalPostForm(NULL, $edit, t('Save settings')); // Create nodes. $node1 = Node::create(['type' => $this->type, 'title' => 'Foo Node']); $node1->save(); $node2 = Node::create(['type' => $this->type, 'title' => 'Foo Node']); $node2->save(); // Try to add a new node and fill the entity reference field. $this->drupalGet('node/add/' . $this->type); $result = $this->xpath('//input[@name="field_test_entity_ref_field[0][target_id]" and contains(@data-autocomplete-path, "/entity_reference_autocomplete/node/views/")]'); $target_url = $this->getAbsoluteUrl($result[0]['data-autocomplete-path']); $this->drupalGet($target_url, array('query' => array('q' => 'Foo'))); $this->assertRaw($node1->getTitle() . ' (' . $node1->id() . ')'); $this->assertRaw($node2->getTitle() . ' (' . $node2->id() . ')'); $edit = array('title[0][value]' => 'Example', 'field_test_entity_ref_field[0][target_id]' => 'Test'); $this->drupalPostForm('node/add/' . $this->type, $edit, t('Save')); // Assert that entity reference autocomplete field is validated. $this->assertText(t('There are no entities matching "@entity"', ['@entity' => 'Test'])); $edit = array('title[0][value]' => 'Test', 'field_test_entity_ref_field[0][target_id]' => $node1->getTitle()); $this->drupalPostForm('node/add/' . $this->type, $edit, t('Save')); // Assert the results multiple times to avoid sorting problem of nodes with // the same title. $this->assertText(t('Multiple entities match this reference;')); $this->assertText(t("@node1", ['@node1' => $node1->getTitle() . ' (' . $node1->id() . ')'])); $this->assertText(t("@node2", ['@node2' => $node2->getTitle() . ' (' . $node2->id() . ')'])); $edit = array('title[0][value]' => 'Test', 'field_test_entity_ref_field[0][target_id]' => $node1->getTitle() . '(' . $node1->id() . ')'); $this->drupalPostForm('node/add/' . $this->type, $edit, t('Save')); $this->assertLink($node1->getTitle()); // Tests adding default values to autocomplete widgets. Vocabulary::create(array('vid' => 'tags', 'name' => 'tags'))->save(); $taxonomy_term_field_name = $this->createEntityReferenceField('taxonomy_term', 'tags'); $field_path = 'node.' . $this->type . '.field_' . $taxonomy_term_field_name; $this->drupalGet($bundle_path . '/fields/' . $field_path . '/storage'); $edit = ['cardinality' => -1]; $this->drupalPostForm(NULL, $edit, t('Save field settings')); $this->drupalGet($bundle_path . '/fields/' . $field_path); $term_name = $this->randomString(); $edit = ['settings[handler_settings][auto_create]' => 1]; $this->drupalPostForm(NULL, $edit, t('Save settings')); $this->drupalGet($bundle_path . '/fields/' . $field_path); $edit = ['default_value_input[field_' . $taxonomy_term_field_name . '][0][target_id]' => $term_name]; $this->drupalPostForm(NULL, $edit, t('Save settings')); // The term should now exist. $term = taxonomy_term_load_multiple_by_name($term_name, 'tags')[1]; $this->assertIdentical(1, count($term), 'Taxonomy term was auto created when set as field default.'); }
/** * Check the breadcrumb on edit and delete a term page. */ public function testTermBreadcrumbs() { $edit = ['name[0][value]' => $this->randomMachineName(14), 'description[0][value]' => $this->randomMachineName(100), 'parent[]' => [0]]; // Create the term. $this->drupalPostForm('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add', $edit, t('Save')); $terms = taxonomy_term_load_multiple_by_name($edit['name[0][value]']); $term = reset($terms); $this->assertNotNull($term, 'Term found in database.'); // Check the breadcrumb on the term edit page. $this->drupalGet('taxonomy/term/' . $term->id() . '/edit'); $breadcrumbs = $this->cssSelect('nav.breadcrumb ol li a'); $this->assertIdentical(count($breadcrumbs), 2, 'The breadcrumbs are present on the page.'); $this->assertIdentical((string) $breadcrumbs[0], 'Home', 'First breadcrumb text is Home'); $this->assertIdentical((string) $breadcrumbs[1], $term->label(), 'Second breadcrumb text is term name on term edit page.'); $this->assertEscaped((string) $breadcrumbs[1], 'breadcrumbs displayed and escaped.'); // Check the breadcrumb on the term delete page. $this->drupalGet('taxonomy/term/' . $term->id() . '/delete'); $breadcrumbs = $this->cssSelect('nav.breadcrumb ol li a'); $this->assertIdentical(count($breadcrumbs), 2, 'The breadcrumbs are present on the page.'); $this->assertIdentical((string) $breadcrumbs[0], 'Home', 'First breadcrumb text is Home'); $this->assertIdentical((string) $breadcrumbs[1], $term->label(), 'Second breadcrumb text is term name on term delete page.'); $this->assertEscaped((string) $breadcrumbs[1], 'breadcrumbs displayed and escaped.'); }
/** * Takes array of category names, creates the Drupal term if needed, returns Drupal tax term ids. * * @param array $name_array Array of category names (strings) * * @return array $cat_id_array Array of Drupal Tax term ids for individual article. */ public function load_tax_terms($name_array) { $loop_section = $this->errors->get_section(); $this->errors->set_section('Load tax terms'); $vocab = 'brafton_tax'; $cat_id_array = array(); foreach ($name_array as $name) { $existing_terms = taxonomy_term_load_multiple_by_name($name, $vocab); // If term does not exist, create it. if (empty($existing_terms)) { // Creates new taxonomy term. $tax_info = array('name' => $name, 'vid' => $vocab); $brafton_tax_term = \Drupal\taxonomy\Entity\Term::create($tax_info); $brafton_tax_term->save(); $term_vid = $brafton_tax_term->id(); } else { $term_vid = reset($existing_terms)->id(); } $cat_id_array[] = $term_vid; } // returns array of unique term ids (vid). $this->errors->set_section($loop_section); return $cat_id_array; }
/** * Tests if an entity reference field having multiple target bundles is * storing the auto-created entity in the right destination. */ public function testMultipleTargetBundles() { /** @var \Drupal\taxonomy\Entity\Vocabulary[] $vocabularies */ $vocabularies = []; for ($i = 0; $i < 2; $i++) { $vid = Unicode::strtolower($this->randomMachineName()); $vocabularies[$i] = Vocabulary::create(['name' => $this->randomMachineName(), 'vid' => $vid]); $vocabularies[$i]->save(); } // Create a taxonomy term entity reference field that saves the auto-created // taxonomy terms in the second vocabulary from the two that were configured // as targets. $field_name = Unicode::strtolower($this->randomMachineName()); $handler_settings = ['target_bundles' => [$vocabularies[0]->id() => $vocabularies[0]->id(), $vocabularies[1]->id() => $vocabularies[1]->id()], 'auto_create' => TRUE, 'auto_create_bundle' => $vocabularies[1]->id()]; $this->createEntityReferenceField('node', $this->referencingType, $field_name, $this->randomString(), 'taxonomy_term', 'default', $handler_settings); /** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $fd */ entity_get_form_display('node', $this->referencingType, 'default')->setComponent($field_name, ['type' => 'entity_reference_autocomplete'])->save(); $term_name = $this->randomString(); $edit = [$field_name . '[0][target_id]' => $term_name, 'title[0][value]' => $this->randomString()]; $this->drupalPostForm('node/add/' . $this->referencingType, $edit, 'Save'); /** @var \Drupal\taxonomy\Entity\Term $term */ $term = taxonomy_term_load_multiple_by_name($term_name); $term = reset($term); // The new term is expected to be stored in the second vocabulary. $this->assertEqual($vocabularies[1]->id(), $term->bundle()); /** @var \Drupal\field\Entity\FieldConfig $field_config */ $field_config = FieldConfig::loadByName('node', $this->referencingType, $field_name); $handler_settings = $field_config->getSetting('handler_settings'); // Change the field setting to store the auto-created terms in the first // vocabulary and test again. $handler_settings['auto_create_bundle'] = $vocabularies[0]->id(); $field_config->setSetting('handler_settings', $handler_settings); $field_config->save(); $term_name = $this->randomString(); $edit = [$field_name . '[0][target_id]' => $term_name, 'title[0][value]' => $this->randomString()]; $this->drupalPostForm('node/add/' . $this->referencingType, $edit, 'Save'); /** @var \Drupal\taxonomy\Entity\Term $term */ $term = taxonomy_term_load_multiple_by_name($term_name); $term = reset($term); // The second term is expected to be stored in the first vocabulary. $this->assertEqual($vocabularies[0]->id(), $term->bundle()); // @todo Re-enable this test when WebTestBase::curlHeaderCallback() provides // a way to catch and assert user-triggered errors. // Test the case when the field config settings are inconsistent. //unset($handler_settings['auto_create_bundle']); //$field_config->setSetting('handler_settings', $handler_settings); //$field_config->save(); // //$this->drupalGet('node/add/' . $this->referencingType); //$error_message = sprintf( // "Create referenced entities if they don't already exist option is enabled but a specific destination bundle is not set. You should re-visit and fix the settings of the '%s' (%s) field.", // $field_config->getLabel(), // $field_config->getName() //); //$this->assertErrorLogged($error_message); }