TaxonomyTermParentMultilingualTest.php

Namespace

Drupal\Tests\taxonomy\Functional\Update

File

core/modules/taxonomy/tests/src/Functional/Update/TaxonomyTermParentMultilingualTest.php

View source
<?php

namespace Drupal\Tests\taxonomy\Functional\Update;

use Drupal\FunctionalTests\Update\UpdatePathTestBase;
use Drupal\taxonomy\Entity\Term;
use Drupal\user\Entity\User;

/**
 * Tests the upgrade path for taxonomy parents with multilingual terms.
 *
 * @group taxonomy
 * @group Update
 * @group legacy
 */
class TaxonomyTermParentMultilingualTest extends UpdatePathTestBase {
    
    /**
     * {@inheritdoc}
     */
    protected function setDatabaseDumpFiles() {
        $this->databaseDumpFiles = [
            __DIR__ . '/../../../../../system/tests/fixtures/update/drupal-8.filled.standard.php.gz',
            __DIR__ . '/../../../../../system/tests/fixtures/update/drupal-8.taxonomy-parent-multilingual-3066439.php',
        ];
    }
    
    /**
     * Tests taxonomy multilingual term parents update.
     *
     * @see taxonomy_update_8501()
     * @see taxonomy_update_8502()
     * @see taxonomy_update_8503()
     * @see taxonomy_update_8702()
     */
    public function testMultilingualTermParentUpdate() {
        // There are 65 terms in the database. Process them in groups of 30 to test
        // batching.
        $settings['entity_update_batch_size'] = (object) [
            'value' => 30,
            'required' => TRUE,
        ];
        $this->writeSettings($settings);
        $this->runUpdates();
        $term = Term::load(65);
        $this->assertSame('64', $term->parent[0]->target_id);
        // Term 2 should have the root parent.
        $term = Term::load(2);
        $this->assertSame('0', $term->parent[0]->target_id);
        // Log in as user 1.
        $account = User::load(1);
        $account->passRaw = 'drupal';
        $this->drupalLogin($account);
        // Make sure our vocabulary exists.
        $this->drupalGet('admin/structure/taxonomy/manage/test_vocabulary/overview');
        // Make sure our terms exist.
        $assert_session = $this->assertSession();
        $assert_session->pageTextContains('Test root term');
        $assert_session->pageTextContains('Test child term');
        // Make sure the terms are still translated.
        $this->drupalGet('taxonomy/term/2/translations');
        $assert_session->linkExists('Test root term - Spanish');
        $storage = \Drupal::entityTypeManager()->getStorage('taxonomy_term');
        // Check that the 'content_translation_status' field has been updated
        // correctly.
        
        /** @var \Drupal\taxonomy\TermInterface $term */
        $term = $storage->load(2);
        $translation = $term->getTranslation('es');
        $this->assertTrue($translation->isPublished());
    }
    
    /**
     * {@inheritdoc}
     */
    protected function replaceUser1() {
        // Do not replace the user from our dump.
    }

}

Classes

Title Deprecated Summary
TaxonomyTermParentMultilingualTest Tests the upgrade path for taxonomy parents with multilingual terms.

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