class DevelClientSideFilterTableTest

Same name in other branches
  1. 5.x tests/src/Unit/DevelClientSideFilterTableTest.php \Drupal\Tests\devel\Unit\DevelClientSideFilterTableTest

Tests ClientSideFilterTable element.

@coversDefaultClass \Drupal\devel\Element\ClientSideFilterTable @group devel

Hierarchy

Expanded class hierarchy of DevelClientSideFilterTableTest

File

tests/src/Unit/DevelClientSideFilterTableTest.php, line 14

Namespace

Drupal\Tests\devel\Unit
View source
class DevelClientSideFilterTableTest extends UnitTestCase {
    
    /**
     * @covers ::getInfo
     */
    public function testGetInfo() {
        $translation = $this->getStringTranslationStub();
        $expected_info = [
            '#filter_label' => $translation->translate('Search'),
            '#filter_placeholder' => $translation->translate('Search'),
            '#filter_description' => $translation->translate('Search'),
            '#header' => [],
            '#rows' => [],
            '#empty' => '',
            '#sticky' => FALSE,
            '#responsive' => TRUE,
            '#attributes' => [],
            '#pre_render' => [
                [
                    ClientSideFilterTable::class,
                    'preRenderTable',
                ],
            ],
        ];
        $table = new ClientSideFilterTable([], 'test', 'test');
        $table->setStringTranslation($translation);
        $this->assertEquals($expected_info, $table->getInfo());
    }
    
    /**
     * @covers ::preRenderTable
     * @dataProvider providerPreRenderTable
     */
    public function testPreRenderTable($element, $expected) {
        $result = ClientSideFilterTable::preRenderTable($element);
        $this->assertEquals($expected, $result);
    }
    
    /**
     * Data provider for preRenderHtmlTag test.
     */
    public function providerPreRenderTable() {
        $data = [];
        $t = $this->getStringTranslationStub();
        $actual = [
            '#type' => 'devel_table_filter',
            '#filter_label' => $t->translate('Label 1'),
            '#filter_placeholder' => $t->translate('Placeholder 1'),
            '#filter_description' => $t->translate('Description 1'),
            '#header' => [],
            '#rows' => [],
            '#empty' => $t->translate('Empty 1'),
            '#responsive' => TRUE,
            '#sticky' => TRUE,
            '#attributes' => [
                'class' => [
                    'devel-a-list',
                ],
            ],
        ];
        $expected = [];
        $expected['#attached']['library'][] = 'devel/devel-table-filter';
        $expected['filters'] = [
            '#type' => 'container',
            '#weight' => -1,
            '#attributes' => [
                'class' => [
                    'table-filter',
                    'js-show',
                ],
            ],
            'name' => [
                '#type' => 'search',
                '#size' => 30,
                '#title' => $t->translate('Label 1'),
                '#placeholder' => $t->translate('Placeholder 1'),
                '#attributes' => [
                    'class' => [
                        'table-filter-text',
                    ],
                    'data-table' => ".js-devel-table-filter",
                    'autocomplete' => 'off',
                    'title' => $t->translate('Description 1'),
                ],
            ],
        ];
        $expected['table'] = [
            '#type' => 'table',
            '#header' => [],
            '#rows' => [],
            '#empty' => $t->translate('Empty 1'),
            '#responsive' => TRUE,
            '#sticky' => TRUE,
            '#attributes' => [
                'class' => [
                    'devel-a-list',
                    'js-devel-table-filter',
                    'devel-table-filter',
                ],
            ],
        ];
        $data[] = [
            $actual,
            $expected,
        ];
        $headers = [
            'Test1',
            'Test2',
            'Test3',
            'Test4',
            'Test5',
        ];
        $actual = [
            '#type' => 'devel_table_filter',
            '#filter_label' => $t->translate('Label 2'),
            '#filter_placeholder' => $t->translate('Placeholder 2'),
            '#filter_description' => $t->translate('Description 2'),
            '#header' => $headers,
            '#rows' => [
                [
                    [
                        'data' => 'test1',
                        'filter' => TRUE,
                    ],
                    [
                        'data' => 'test2',
                        'filter' => TRUE,
                        'class' => [
                            'test2',
                        ],
                    ],
                    [
                        'data' => 'test3',
                        'class' => [
                            'test3',
                        ],
                    ],
                    [
                        'test4',
                    ],
                    [
                        'data' => 'test5',
                        'filter' => TRUE,
                        'class' => [
                            'devel-event-name-header',
                        ],
                        'colspan' => '3',
                        'header' => TRUE,
                    ],
                ],
            ],
            '#empty' => $t->translate('Empty 2'),
            '#responsive' => FALSE,
            '#sticky' => FALSE,
            '#attributes' => [
                'class' => [
                    'devel-some-list',
                ],
            ],
        ];
        $expected = [];
        $expected['#attached']['library'][] = 'devel/devel-table-filter';
        $expected['filters'] = [
            '#type' => 'container',
            '#weight' => -1,
            '#attributes' => [
                'class' => [
                    'table-filter',
                    'js-show',
                ],
            ],
            'name' => [
                '#type' => 'search',
                '#size' => 30,
                '#title' => $t->translate('Label 2'),
                '#placeholder' => $t->translate('Placeholder 2'),
                '#attributes' => [
                    'class' => [
                        'table-filter-text',
                    ],
                    'data-table' => ".js-devel-table-filter--2",
                    'autocomplete' => 'off',
                    'title' => $t->translate('Description 2'),
                ],
            ],
        ];
        $expected['table'] = [
            '#type' => 'table',
            '#header' => $headers,
            '#rows' => [
                [
                    [
                        'data' => 'test1',
                        'filter' => TRUE,
                        'class' => [
                            'table-filter-text-source',
                        ],
                    ],
                    [
                        'data' => 'test2',
                        'filter' => TRUE,
                        'class' => [
                            'test2',
                            'table-filter-text-source',
                        ],
                    ],
                    [
                        'data' => 'test3',
                        'class' => [
                            'test3',
                        ],
                    ],
                    [
                        'test4',
                    ],
                    [
                        'data' => 'test5',
                        'filter' => TRUE,
                        'class' => [
                            'devel-event-name-header',
                            'table-filter-text-source',
                        ],
                        'colspan' => '3',
                        'header' => TRUE,
                    ],
                ],
            ],
            '#empty' => $t->translate('Empty 2'),
            '#responsive' => FALSE,
            '#sticky' => FALSE,
            '#attributes' => [
                'class' => [
                    'devel-some-list',
                    'js-devel-table-filter--2',
                    'devel-table-filter',
                ],
            ],
        ];
        $data[] = [
            $actual,
            $expected,
        ];
        return $data;
    }

}

Members

Title Sort descending Deprecated Modifiers Object type Summary Overrides
DevelClientSideFilterTableTest::providerPreRenderTable public function Data provider for preRenderHtmlTag test.
DevelClientSideFilterTableTest::testGetInfo public function @covers ::getInfo
DevelClientSideFilterTableTest::testPreRenderTable public function @covers ::preRenderTable
@dataProvider providerPreRenderTable
PhpUnitWarnings::$deprecationWarnings private static property Deprecation warnings from PHPUnit to raise with @trigger_error().
PhpUnitWarnings::addWarning public function Converts PHPUnit deprecation warnings to E_USER_DEPRECATED.
UnitTestCase::$randomGenerator protected property The random generator.
UnitTestCase::$root protected property The app root. 1
UnitTestCase::assertArrayEquals Deprecated protected function Asserts if two arrays are equal by sorting them first.
UnitTestCase::getClassResolverStub protected function Returns a stub class resolver.
UnitTestCase::getConfigFactoryStub public function Returns a stub config factory that behaves according to the passed array.
UnitTestCase::getConfigStorageStub public function Returns a stub config storage that returns the supplied configuration.
UnitTestCase::getContainerWithCacheTagsInvalidator protected function Sets up a container with a cache tags invalidator.
UnitTestCase::getRandomGenerator protected function Gets the random generator for the utility methods.
UnitTestCase::getStringTranslationStub public function Returns a stub translation manager that just returns the passed string.
UnitTestCase::randomMachineName public function Generates a unique random string containing letters and numbers.
UnitTestCase::setUp protected function 338
UnitTestCase::setUpBeforeClass public static function