EntityListBuilderTest.php

Same filename in this branch
  1. 9 core/tests/Drupal/Tests/Core/Entity/EntityListBuilderTest.php
Same filename and directory in other branches
  1. 8.9.x core/modules/system/tests/src/Functional/Entity/EntityListBuilderTest.php
  2. 8.9.x core/tests/Drupal/Tests/Core/Entity/EntityListBuilderTest.php
  3. 10 core/modules/system/tests/src/Functional/Entity/EntityListBuilderTest.php
  4. 10 core/tests/Drupal/Tests/Core/Entity/EntityListBuilderTest.php
  5. 11.x core/modules/system/tests/src/Functional/Entity/EntityListBuilderTest.php
  6. 11.x core/tests/Drupal/Tests/Core/Entity/EntityListBuilderTest.php

Namespace

Drupal\Tests\system\Functional\Entity

File

core/modules/system/tests/src/Functional/Entity/EntityListBuilderTest.php

View source
<?php

namespace Drupal\Tests\system\Functional\Entity;

use Drupal\Core\Language\LanguageInterface;
use Drupal\entity_test\Entity\EntityTest;
use Drupal\Tests\BrowserTestBase;

/**
 * Tests entity list builder functionality.
 *
 * @group Entity
 */
class EntityListBuilderTest extends BrowserTestBase {
    
    /**
     * {@inheritdoc}
     */
    protected static $modules = [
        'entity_test',
    ];
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() : void {
        parent::setUp();
        // Create and log in user.
        $this->drupalLogin($this->drupalCreateUser([
            'administer entity_test content',
        ]));
    }
    
    /**
     * Tests paging.
     */
    public function testPager() {
        // Create 51 test entities.
        for ($i = 1; $i < 52; $i++) {
            EntityTest::create([
                'name' => 'Test entity ' . $i,
            ])->save();
        }
        // Load the listing page.
        $this->drupalGet('entity_test/list');
        // Item 51 should not be present.
        $this->assertSession()
            ->pageTextContains('Test entity 50');
        $this->assertSession()
            ->responseNotContains('Test entity 51');
        // Browse to the next page, test entity 51 is shown.
        $this->clickLink('Page 2');
        $this->assertSession()
            ->responseNotContains('Test entity 50');
        $this->assertSession()
            ->pageTextContains('Test entity 51');
    }
    
    /**
     * Tests that the correct cache contexts are set.
     */
    public function testCacheContexts() {
        
        /** @var \Drupal\Core\Entity\EntityListBuilderInterface $list_builder */
        $list_builder = $this->container
            ->get('entity_type.manager')
            ->getListBuilder('entity_test');
        $build = $list_builder->render();
        $this->container
            ->get('renderer')
            ->renderRoot($build);
        $this->assertEqualsCanonicalizing([
            'entity_test_view_grants',
            'languages:' . LanguageInterface::TYPE_INTERFACE,
            'theme',
            'url.query_args.pagers:0',
            'user.permissions',
        ], $build['#cache']['contexts']);
    }
    
    /**
     * Tests if the list cache tags are set.
     */
    public function testCacheTags() {
        $this->drupalGet('entity_test/list');
        $this->assertSession()
            ->responseHeaderContains('X-Drupal-Cache-Tags', 'entity_test_list');
    }

}

Classes

Title Deprecated Summary
EntityListBuilderTest Tests entity list builder functionality.

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