You are here

function TaxonomyTermTestCase::testTermInterface in Drupal 7

Save, edit and delete a term using the user interface.

File

modules/taxonomy/taxonomy.test, line 795
Tests for taxonomy.module.

Class

TaxonomyTermTestCase
Tests for taxonomy term functions.

Code

function testTermInterface() {
  $edit = array(
    'name' => $this
      ->randomName(12),
    'description[value]' => $this
      ->randomName(100),
  );

  // Explicitly set the parents field to 'root', to ensure that
  // taxonomy_form_term_submit() handles the invalid term ID correctly.
  $edit['parent[]'] = array(
    0,
  );

  // Create the term to edit.
  $this
    ->drupalPost('admin/structure/taxonomy/' . $this->vocabulary->machine_name . '/add', $edit, t('Save'));
  $terms = taxonomy_get_term_by_name($edit['name']);
  $term = reset($terms);
  $this
    ->assertNotNull($term, 'Term found in database.');

  // Submitting a term takes us to the add page; we need the List page.
  $this
    ->drupalGet('admin/structure/taxonomy/' . $this->vocabulary->machine_name);

  // Test edit link as accessed from Taxonomy administration pages.
  // Because Simpletest creates its own database when running tests, we know
  // the first edit link found on the listing page is to our term.
  $this
    ->clickLink(t('edit'));
  $this
    ->assertRaw($edit['name'], 'The randomly generated term name is present.');
  $this
    ->assertText($edit['description[value]'], 'The randomly generated term description is present.');
  $edit = array(
    'name' => $this
      ->randomName(14),
    'description[value]' => $this
      ->randomName(102),
  );

  // Edit the term.
  $this
    ->drupalPost('taxonomy/term/' . $term->tid . '/edit', $edit, t('Save'));

  // Check that the term is still present at admin UI after edit.
  $this
    ->drupalGet('admin/structure/taxonomy/' . $this->vocabulary->machine_name);
  $this
    ->assertText($edit['name'], 'The randomly generated term name is present.');
  $this
    ->assertLink(t('edit'));

  // View the term and check that it is correct.
  $this
    ->drupalGet('taxonomy/term/' . $term->tid);
  $this
    ->assertText($edit['name'], 'The randomly generated term name is present.');
  $this
    ->assertText($edit['description[value]'], 'The randomly generated term description is present.');

  // Did this page request display a 'term-listing-heading'?
  $this
    ->assertPattern('|class="taxonomy-term-description"|', 'Term page displayed the term description element.');

  // Check that it does NOT show a description when description is blank.
  $term->description = '';
  taxonomy_term_save($term);
  $this
    ->drupalGet('taxonomy/term/' . $term->tid);
  $this
    ->assertNoPattern('|class="taxonomy-term-description"|', 'Term page did not display the term description when description was blank.');

  // Check that the term feed page is working.
  $this
    ->drupalGet('taxonomy/term/' . $term->tid . '/feed');

  // Check that the term edit page does not try to interpret additional path
  // components as arguments for taxonomy_form_term().
  $this
    ->drupalGet('taxonomy/term/' . $term->tid . '/edit/' . $this
    ->randomName());

  // Delete the term.
  $this
    ->drupalPost('taxonomy/term/' . $term->tid . '/edit', array(), t('Delete'));
  $this
    ->drupalPost(NULL, NULL, t('Delete'));

  // Assert that the term no longer exists.
  $this
    ->drupalGet('taxonomy/term/' . $term->tid);
  $this
    ->assertResponse(404, 'The taxonomy term page was not found.');
}