function ViewResultAssertionTrait::assertIdenticalResultsetHelper

Same name in other branches
  1. 8.9.x core/modules/views/src/Tests/ViewResultAssertionTrait.php \Drupal\views\Tests\ViewResultAssertionTrait::assertIdenticalResultsetHelper()
  2. 10 core/modules/views/src/Tests/ViewResultAssertionTrait.php \Drupal\views\Tests\ViewResultAssertionTrait::assertIdenticalResultsetHelper()
  3. 11.x core/modules/views/src/Tests/ViewResultAssertionTrait.php \Drupal\views\Tests\ViewResultAssertionTrait::assertIdenticalResultsetHelper()

Performs View result assertions.

This is a helper method for ViewTestBase::assertIdenticalResultset() and ViewTestBase::assertNotIdenticalResultset().

Parameters

\Drupal\views\ViewExecutable $view: An executed View.

array $expected_result: An expected result set.

array $column_map: An associative array mapping the columns of the result set from the view (as keys) and the expected result set (as values).

string $assert_method: The TestBase assertion method to use (either 'assertIdentical' or 'assertNotIdentical').

string $message: (optional) The message to display with the assertion.

8 calls to ViewResultAssertionTrait::assertIdenticalResultsetHelper()
TaxonomyTermArgumentDepthTest::assertTermWithDepthResult in core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyTermArgumentDepthTest.php
Asserts the result of the view for the given arguments.
TaxonomyTermArgumentDepthTest::testTermWithDepthFilter in core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyTermArgumentDepthTest.php
Tests the terms with depth filter.
TaxonomyTermFilterDepthTest::assertTermWithDepthResult in core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyTermFilterDepthTest.php
Asserts the result of the view for the given filter configuration.
TaxonomyTermFilterDepthTest::assertTermWithDepthResult in core/modules/taxonomy/tests/src/Functional/Views/TaxonomyTermFilterDepthTest.php
Changes the tid filter to given term and depth.
TaxonomyTermFilterDepthTest::testTermWithDepthFilter in core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyTermFilterDepthTest.php
Tests the terms with depth filter.

... See full list

File

core/modules/views/src/Tests/ViewResultAssertionTrait.php, line 74

Class

ViewResultAssertionTrait
Provides a class for assertions to check for the expected result of a View.

Namespace

Drupal\views\Tests

Code

protected function assertIdenticalResultsetHelper($view, $expected_result, $column_map, $assert_method, $message = NULL) : void {
    // Convert $view->result to an array of arrays.
    $result = [];
    foreach ($view->result as $key => $value) {
        $row = [];
        foreach ($column_map as $view_column => $expected_column) {
            if (property_exists($value, $view_column)) {
                $row[$expected_column] = (string) $value->{$view_column};
            }
            elseif (empty($value->{$view_column}) && isset($view->field[$expected_column]) && ($field = $view->field[$expected_column]) && $field instanceof EntityField) {
                $column = NULL;
                if (count(explode(':', $view_column)) == 2) {
                    $column = explode(':', $view_column)[1];
                }
                // The comparison will be done on the string representation of the
                // value.
                $field_value = $field->getValue($value, $column);
                $row[$expected_column] = is_array($field_value) ? array_map('strval', $field_value) : (string) $field_value;
            }
        }
        $result[$key] = $row;
    }
    // Remove the columns we don't need from the expected result.
    foreach ($expected_result as $key => $value) {
        $row = [];
        foreach ($column_map as $expected_column) {
            // The comparison will be done on the string representation of the value.
            if (is_object($value)) {
                $row[$expected_column] = (string) $value->{$expected_column};
            }
            elseif (is_array($value[$expected_column])) {
                foreach (array_keys($value[$expected_column]) as $delta) {
                    $row[$expected_column][$delta] = (string) $value[$expected_column][$delta];
                }
            }
            else {
                $row[$expected_column] = (string) $value[$expected_column];
            }
        }
        $expected_result[$key] = $row;
    }
    // Reset the numbering of the arrays.
    $result = array_values($result);
    $expected_result = array_values($expected_result);
    // Do the actual comparison.
    if (!isset($message)) {
        $not = strpos($assert_method, 'Not') ? 'not' : '';
        $message = new FormattableMarkup("Actual result <pre>\n@actual\n</pre> is {$not} identical to expected <pre>\n@expected\n</pre>", [
            '@actual' => var_export($result, TRUE),
            '@expected' => var_export($expected_result, TRUE),
        ]);
    }
    switch ($assert_method) {
        case 'assertIdentical':
            $this->assertSame($expected_result, $result, $message);
            break;
        case 'assertNotIdentical':
            $this->assertNotSame($expected_result, $result, $message);
            break;
    }
}

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