function SelectGetRangeTest::testGetRangeReferenceOnSelectExtender

Same name and namespace in other branches
  1. 11.x core/tests/Drupal/KernelTests/Core/Database/SelectGetRangeTest.php \Drupal\KernelTests\Core\Database\SelectGetRangeTest::testGetRangeReferenceOnSelectExtender()

Ensures SelectExtender::getRange() delegates and returns a live reference.

File

core/tests/Drupal/KernelTests/Core/Database/SelectGetRangeTest.php, line 56

Class

SelectGetRangeTest
Tests SelectInterface::getRange().

Namespace

Drupal\KernelTests\Core\Database

Code

public function testGetRangeReferenceOnSelectExtender() : void {
  $raw = $this->connection
    ->select('test', 't')
    ->fields('t', [
    'name',
  ])
    ->orderBy('name')
    ->execute()
    ->fetchCol();
  $base_query = $this->connection
    ->select('test', 't')
    ->fields('t', [
    'name',
  ])
    ->orderBy('name');
  /** @var \Drupal\Core\Database\Query\SelectExtender $extender */
  $extender = $base_query->extend(SelectExtender::class);
  $range =& $extender->getRange();
  $this->assertNull($range);
  $base_query->range(2, 2);
  $this->assertSame([
    'start' => 2,
    'length' => 2,
  ], $extender->getRange());
  $range2 =& $extender->getRange();
  $range2['length'] = 1;
  $this->assertEquals(1, $range['length']);
  $names = $extender->execute()
    ->fetchCol();
  $expected = array_slice($raw, 2, 1);
  $this->assertSame($expected, $names);
}

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