function ViewsModerationStateSortTest::testSortRevisionBaseTable

Same name and namespace in other branches
  1. 9 core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateSortTest.php \Drupal\Tests\content_moderation\Kernel\ViewsModerationStateSortTest::testSortRevisionBaseTable()
  2. 10 core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateSortTest.php \Drupal\Tests\content_moderation\Kernel\ViewsModerationStateSortTest::testSortRevisionBaseTable()
  3. 11.x core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateSortTest.php \Drupal\Tests\content_moderation\Kernel\ViewsModerationStateSortTest::testSortRevisionBaseTable()

Test sorting with the revision base table.

File

core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateSortTest.php, line 104

Class

ViewsModerationStateSortTest
Tests the views moderation_state field sorting integration.

Namespace

Drupal\Tests\content_moderation\Kernel

Code

public function testSortRevisionBaseTable() {
    $this->enableModules([
        'content_moderation_test_views',
    ]);
    $this->installConfig([
        'content_moderation_test_views',
    ]);
    // Create a series of node revisions in different states and store
    // each revision ID at the given state.
    $node = Node::create([
        'type' => 'example',
        'title' => 'Foo',
        'moderation_state' => 'published',
    ]);
    $node->save();
    $published_revision_id = $node->getRevisionId();
    $node->moderation_state = 'draft';
    $node->save();
    $draft_revision_id = $node->getRevisionId();
    $node->moderation_state = 'aa_draft';
    $node->save();
    $aa_draft_revision_id = $node->getRevisionId();
    $translated = $node->addTranslation('fr');
    $translated->moderation_state = 'zz_draft';
    $translated->title = 'Translated';
    $translated->save();
    $zz_draft_revision_id = $translated->getRevisionId();
    // A second aa_draft revision will be created for the non-translated
    // revision. Since in this case there will be two revisions with "aa_draft"
    // we add another sort in content_moderation_test_views_views_query_alter.
    // Secondary sorting is not an option in views when using exposed sorting
    // and table click sorting, so in order to maintain the same level of
    // coverage this is required.
    $second_aa_draft_revision_id = $translated->getRevisionId();
    $this->assertSortResults('test_content_moderation_state_sort_revision_table', 'vid', 'ASC', [
        [
            'vid' => $aa_draft_revision_id,
        ],
        [
            'vid' => $second_aa_draft_revision_id,
        ],
        [
            'vid' => $draft_revision_id,
        ],
        [
            'vid' => $published_revision_id,
        ],
        [
            'vid' => $zz_draft_revision_id,
        ],
    ]);
    $this->assertSortResults('test_content_moderation_state_sort_revision_table', 'vid', 'DESC', [
        [
            'vid' => $zz_draft_revision_id,
        ],
        [
            'vid' => $published_revision_id,
        ],
        [
            'vid' => $draft_revision_id,
        ],
        [
            'vid' => $aa_draft_revision_id,
        ],
        [
            'vid' => $second_aa_draft_revision_id,
        ],
    ]);
}

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