コード例 #1
0
ファイル: TermLanguageTest.php プロジェクト: 318io/318-io
 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.');
 }
コード例 #2
0
 /**
  * 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.');
 }
コード例 #3
0
ファイル: TermTest.php プロジェクト: anyforsoft/csua_d8
 /**
  * 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.');
 }
コード例 #4
0
 /**
  * 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.');
 }
コード例 #5
0
ファイル: TermTest.php プロジェクト: sgtsaughter/d8portfolio
 /**
  * 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.');
 }
コード例 #6
0
 /**
  * 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;
 }
コード例 #7
0
 /**
  * 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);
 }