class SelectGetRangeTest
Same name and namespace in other branches
- 11.x core/tests/Drupal/KernelTests/Core/Database/SelectGetRangeTest.php \Drupal\KernelTests\Core\Database\SelectGetRangeTest
Tests SelectInterface::getRange().
Attributes
#[RunTestsInSeparateProcesses]
#[Group('Database')]
#[CoversClass(Select::class)]
#[CoversClass(SelectExtender::class)]
Hierarchy
- class \Drupal\KernelTests\KernelTestBase implements \Drupal\Core\DependencyInjection\ServiceProviderInterface uses \Drupal\Tests\DrupalTestCaseTrait, \Drupal\KernelTests\AssertContentTrait, \Drupal\Tests\RandomGeneratorTrait, \Drupal\Tests\ConfigTestTrait, \Drupal\Tests\ExtensionListTestTrait, \Drupal\Tests\TestRequirementsTrait, \Prophecy\PhpUnit\ProphecyTrait, \Drupal\Tests\BrowserHtmlDebugTrait, \Drupal\Tests\HttpKernelUiHelperTrait extends \PHPUnit\Framework\TestCase
- class \Drupal\KernelTests\Core\Database\DatabaseTestBase uses \Drupal\KernelTests\Core\Database\DatabaseTestSchemaDataTrait, \Drupal\KernelTests\Core\Database\DatabaseTestSchemaInstallTrait extends \Drupal\KernelTests\KernelTestBase
- class \Drupal\KernelTests\Core\Database\SelectGetRangeTest extends \Drupal\KernelTests\Core\Database\DatabaseTestBase
- class \Drupal\KernelTests\Core\Database\DatabaseTestBase uses \Drupal\KernelTests\Core\Database\DatabaseTestSchemaDataTrait, \Drupal\KernelTests\Core\Database\DatabaseTestSchemaInstallTrait extends \Drupal\KernelTests\KernelTestBase
Expanded class hierarchy of SelectGetRangeTest
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Database/ SelectGetRangeTest.php, line 16
Namespace
Drupal\KernelTests\Core\DatabaseView source
final class SelectGetRangeTest extends DatabaseTestBase {
/**
* Ensures getRange() returns NULL by default.
*/
public function testGetRangeReferenceOnSelect() : void {
$raw = $this->connection
->select('test', 't')
->fields('t', [
'name',
])
->orderBy('name')
->execute()
->fetchCol();
$query = $this->connection
->select('test', 't')
->fields('t', [
'name',
])
->orderBy('name');
$range =& $query->getRange();
$this->assertNull($range);
$query->range(1, 3);
$this->assertSame([
'start' => 1,
'length' => 3,
], $query->getRange());
$range2 =& $query->getRange();
$range2['start'] = 2;
$this->assertEquals(2, $range['start']);
$names = $query->execute()
->fetchCol();
$expected = array_slice($raw, 2, 3);
$this->assertSame($expected, $names);
}
/**
* Ensures SelectExtender::getRange() delegates and returns a live reference.
*/
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.