X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fviews%2Ftests%2Fsrc%2FKernel%2FPlugin%2FStyleGridTest.php;fp=web%2Fcore%2Fmodules%2Fviews%2Ftests%2Fsrc%2FKernel%2FPlugin%2FStyleGridTest.php;h=d4381a6329ab3231fbb58d8262610dd2acf13494;hp=0000000000000000000000000000000000000000;hb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;hpb=aea91e65e895364e460983b890e295aa5d5540a5 diff --git a/web/core/modules/views/tests/src/Kernel/Plugin/StyleGridTest.php b/web/core/modules/views/tests/src/Kernel/Plugin/StyleGridTest.php new file mode 100644 index 000000000..d4381a632 --- /dev/null +++ b/web/core/modules/views/tests/src/Kernel/Plugin/StyleGridTest.php @@ -0,0 +1,100 @@ +assertGrid($view, $alignment, 5); + $this->assertGrid($view, $alignment, 4); + $this->assertGrid($view, $alignment, 3); + $this->assertGrid($view, $alignment, 2); + $this->assertGrid($view, $alignment, 1); + } + } + + /** + * Generates a grid and asserts that it is displaying correctly. + * + * @param \Drupal\views\ViewExecutable $view + * The executable to prepare. + * @param string $alignment + * The alignment of the grid to test. + * @param int $columns + * The number of columns in the grid to test. + */ + protected function assertGrid(ViewExecutable $view, $alignment, $columns) { + $view->setDisplay('default'); + $view->initStyle(); + $view->initHandlers(); + $view->initQuery(); + $view->style_plugin->options['alignment'] = $alignment; + $view->style_plugin->options['columns'] = $columns; + $this->executeView($view); + $output = $view->preview(); + $output = \Drupal::service('renderer')->renderRoot($output); + $this->setRawContent($output); + if (!in_array($alignment, $this->alignmentsTested)) { + $result = $this->xpath('//div[contains(@class, "views-view-grid") and contains(@class, :alignment) and contains(@class, :columns)]', [':alignment' => $alignment, ':columns' => 'cols-' . $columns]); + $this->assertTrue(count($result), ucfirst($alignment) . " grid markup detected."); + $this->alignmentsTested[] = $alignment; + } + $width = '0'; + switch ($columns) { + case 5: $width = '20'; + break; + + case 4: $width = '25'; + break; + + case 3: $width = '33.3333'; + break; + + case 2: $width = '50'; + break; + + case 1: $width = '100'; + break; + } + // Ensure last column exists. + $result = $this->xpath('//div[contains(@class, "views-col") and contains(@class, :columns) and starts-with(@style, :width)]', [':columns' => 'col-' . $columns, ':width' => 'width: ' . $width]); + $this->assertTrue(count($result), ucfirst($alignment) . " $columns column grid: last column exists and automatic width calculated correctly."); + // Ensure no extra columns were generated. + $result = $this->xpath('//div[contains(@class, "views-col") and contains(@class, :columns)]', [':columns' => 'col-' . ($columns + 1)]); + $this->assertFalse(count($result), ucfirst($alignment) . " $columns column grid: no extraneous columns exist."); + // Ensure tokens are being replaced in custom row/column classes. + $result = $this->xpath('//div[contains(@class, "views-col") and contains(@class, "name-John")]'); + $this->assertTrue(count($result), ucfirst($alignment) . " $columns column grid: Token replacement verified in custom column classes."); + $result = $this->xpath('//div[contains(@class, "views-row") and contains(@class, "age-25")]'); + $this->assertTrue(count($result), ucfirst($alignment) . " $columns column grid: Token replacement verified in custom row classes."); + } + +}