function QueryBatchTest::queryDataProvider

Same name and namespace in other branches
  1. 9 core/modules/migrate/tests/src/Kernel/QueryBatchTest.php \Drupal\Tests\migrate\Kernel\QueryBatchTest::queryDataProvider()
  2. 8.9.x core/modules/migrate/tests/src/Kernel/QueryBatchTest.php \Drupal\Tests\migrate\Kernel\QueryBatchTest::queryDataProvider()
  3. 11.x core/modules/migrate/tests/src/Kernel/QueryBatchTest.php \Drupal\Tests\migrate\Kernel\QueryBatchTest::queryDataProvider()

File

core/modules/migrate/tests/src/Kernel/QueryBatchTest.php, line 82

Class

QueryBatchTest
Tests query batching.

Namespace

Drupal\Tests\migrate\Kernel

Code

public static function queryDataProvider() {
    // Define the parameters for building the data array. The first element is
    // the number of source data rows, the second is the batch size to set on
    // the plugin configuration.
    $test_parameters = [
        // Test when batch size is 0.
[
            200,
            0,
        ],
        // Test when rows mod batch size is 0.
[
            200,
            20,
        ],
        // Test when rows mod batch size is > 0.
[
            200,
            30,
        ],
        // Test when batch size = row count.
[
            200,
            200,
        ],
        // Test when batch size > row count.
[
            200,
            300,
        ],
    ];
    // Build the data provider array. The provider array consists of the source
    // data rows, the expected result data, the expected count, the plugin
    // configuration, the expected batch size and the expected batch count.
    $table = 'query_batch_test';
    $tests = [];
    $data_set = 0;
    foreach ($test_parameters as $data) {
        [
            $num_rows,
            $batch_size,
        ] = $data;
        for ($i = 0; $i < $num_rows; $i++) {
            $tests[$data_set]['source_data'][$table][] = [
                'id' => $i,
                'data' => Random::string(),
            ];
        }
        $tests[$data_set]['expected_data'] = $tests[$data_set]['source_data'][$table];
        $tests[$data_set][2] = $num_rows;
        // Plugin configuration array.
        $tests[$data_set][3] = [
            'batch_size' => $batch_size,
        ];
        // Expected batch size.
        $tests[$data_set][4] = $batch_size;
        // Expected batch count is 0 unless a batch size is set.
        $expected_batch_count = 0;
        if ($batch_size > 0) {
            $expected_batch_count = (int) ($num_rows / $batch_size);
            if ($num_rows % $batch_size) {
                // If there is a remainder an extra batch is needed to get the
                // remaining rows.
                $expected_batch_count++;
            }
        }
        $tests[$data_set][5] = $expected_batch_count;
        $data_set++;
    }
    return $tests;
}

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