function TermTest::testTaxonomyTermChildTerms

Same name and namespace in other branches
  1. 9 core/modules/taxonomy/tests/src/Functional/TermTest.php \Drupal\Tests\taxonomy\Functional\TermTest::testTaxonomyTermChildTerms()
  2. 10 core/modules/taxonomy/tests/src/Functional/TermTest.php \Drupal\Tests\taxonomy\Functional\TermTest::testTaxonomyTermChildTerms()
  3. 11.x core/modules/taxonomy/tests/src/Functional/TermTest.php \Drupal\Tests\taxonomy\Functional\TermTest::testTaxonomyTermChildTerms()

Tests that many terms with parents show on each page

File

core/modules/taxonomy/tests/src/Functional/TermTest.php, line 137

Class

TermTest
Tests load, save and delete for taxonomy terms.

Namespace

Drupal\Tests\taxonomy\Functional

Code

public function testTaxonomyTermChildTerms() {
    // Set limit to 10 terms per page. Set variable to 9 so 10 terms appear.
    $this->config('taxonomy.settings')
        ->set('terms_per_page_admin', '9')
        ->save();
    $term1 = $this->createTerm($this->vocabulary);
    $terms_array = [];
    $taxonomy_storage = $this->container
        ->get('entity_type.manager')
        ->getStorage('taxonomy_term');
    // Create 40 terms. Terms 1-12 get parent of $term1. All others are
    // individual terms.
    for ($x = 1; $x <= 40; $x++) {
        $edit = [];
        // Set terms in order so we know which terms will be on which pages.
        $edit['weight'] = $x;
        // Set terms 1-20 to be children of first term created.
        if ($x <= 12) {
            $edit['parent'] = $term1->id();
        }
        $term = $this->createTerm($this->vocabulary, $edit);
        $children = $taxonomy_storage->loadChildren($term1->id());
        $parents = $taxonomy_storage->loadParents($term->id());
        $terms_array[$x] = Term::load($term->id());
    }
    // Get Page 1.
    $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary
        ->id() . '/overview');
    $this->assertText($term1->getName(), 'Parent Term is displayed on Page 1');
    for ($x = 1; $x <= 13; $x++) {
        $this->assertText($terms_array[$x]->getName(), $terms_array[$x]->getName() . ' found on Page 1');
    }
    // Get Page 2.
    $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary
        ->id() . '/overview', [
        'query' => [
            'page' => 1,
        ],
    ]);
    $this->assertText($term1->getName(), 'Parent Term is displayed on Page 2');
    for ($x = 1; $x <= 18; $x++) {
        $this->assertText($terms_array[$x]->getName(), $terms_array[$x]->getName() . ' found on Page 2');
    }
    // Get Page 3.
    $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary
        ->id() . '/overview', [
        'query' => [
            'page' => 2,
        ],
    ]);
    $this->assertNoText($term1->getName(), 'Parent Term is not displayed on Page 3');
    for ($x = 1; $x <= 17; $x++) {
        $this->assertNoText($terms_array[$x]->getName(), $terms_array[$x]->getName() . ' not found on Page 3');
    }
    for ($x = 18; $x <= 25; $x++) {
        $this->assertText($terms_array[$x]->getName(), $terms_array[$x]->getName() . ' found on Page 3');
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.