diff --git a/core/tests/Drupal/KernelTests/Core/Theme/ClaroTableTest.php b/core/tests/Drupal/KernelTests/Core/Theme/ClaroTableTest.php index 70dcd6606e..b42d8c5cfe 100644 --- a/core/tests/Drupal/KernelTests/Core/Theme/ClaroTableTest.php +++ b/core/tests/Drupal/KernelTests/Core/Theme/ClaroTableTest.php @@ -2,6 +2,7 @@ namespace Drupal\KernelTests\Core\Theme; +use Drupal\claro\ClaroPreRender; use Drupal\KernelTests\KernelTestBase; /** @@ -38,4 +39,40 @@ public function testThemeTableStickyHeaders() { $this->assertRaw('position-sticky'); } + /** + * Confirm Claro prerender callback is not executed for non-array class. + */ + public function testThemeTablePositionStickyPreRender() { + // Enable the Claro theme. + \Drupal::service('theme_installer')->install(['claro']); + $this->config('system.theme')->set('default', 'claro')->save(); + $header = ['one', 'two', 'three']; + $rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; + $table = [ + '#type' => 'table', + '#header' => $header, + '#rows' => $rows, + '#sticky' => TRUE, + '#attributes' => [ + 'class' => 'class', + ], + '#pre_render' => [ + [ + ClaroPreRender::class, + 'tablePositionSticky', + ], + ], + ]; + + try { + $renderedTable = \Drupal::service('renderer')->renderRoot($table); + + // Confirm that table is rendered. + $this->assertStringContainsString('class="class"', $renderedTable); + } + catch (\Error $e) { + $this->fail('PHP Error was thrown.'); + } + } + }