class SelectExtenderTest

Same name in this branch
  1. 11.x core/tests/Drupal/KernelTests/Core/Database/SelectExtenderTest.php \Drupal\KernelTests\Core\Database\SelectExtenderTest
Same name and namespace in other branches
  1. 10 core/tests/Drupal/KernelTests/Core/Database/SelectExtenderTest.php \Drupal\KernelTests\Core\Database\SelectExtenderTest
  2. 9 core/tests/Drupal/KernelTests/Core/Database/SelectExtenderTest.php \Drupal\KernelTests\Core\Database\SelectExtenderTest
  3. main core/tests/Drupal/KernelTests/Core/Database/SelectExtenderTest.php \Drupal\KernelTests\Core\Database\SelectExtenderTest

Tests the Select query extender classes.

Attributes

#[CoversClass(Select::class)] #[Group('Database')] #[RunTestsInSeparateProcesses]

Hierarchy

Expanded class hierarchy of SelectExtenderTest

File

core/modules/search/tests/src/Kernel/Database/SelectExtenderTest.php, line 20

Namespace

Drupal\Tests\search\Kernel\Database
View source
class SelectExtenderTest extends KernelTestBase {
  
  /**
   * Data provider for testExtend().
   *
   * @return array
   *   Array of arrays with the following elements:
   *   - Expected namespaced class name.
   *   - The database driver namespace.
   *   - The namespaced class name for which to extend.
   */
  public static function providerExtend() : array {
    return [
      [
        'Drupal\\search\\SearchQuery',
        'Drupal\\SearchFake\\Driver\\Database\\SearchFake',
        'Drupal\\search\\SearchQuery',
      ],
      [
        'Drupal\\search\\SearchQuery',
        'Drupal\\SearchFake\\Driver\\Database\\SearchFake',
        '\\Drupal\\search\\SearchQuery',
      ],
      [
        'Drupal\\search\\ViewsSearchQuery',
        'Drupal\\SearchFake\\Driver\\Database\\SearchFake',
        'Drupal\\search\\ViewsSearchQuery',
      ],
      [
        'Drupal\\search\\ViewsSearchQuery',
        'Drupal\\SearchFake\\Driver\\Database\\SearchFake',
        '\\Drupal\\search\\ViewsSearchQuery',
      ],
      [
        'Drupal\\search_fake\\Driver\\Database\\SearchFakeWithAllCustomClasses\\SearchQuery',
        'Drupal\\search_fake\\Driver\\Database\\SearchFakeWithAllCustomClasses',
        'Drupal\\search\\SearchQuery',
      ],
      [
        'Drupal\\search_fake\\Driver\\Database\\SearchFakeWithAllCustomClasses\\SearchQuery',
        'Drupal\\search_fake\\Driver\\Database\\SearchFakeWithAllCustomClasses',
        '\\Drupal\\search\\SearchQuery',
      ],
      [
        'Drupal\\search_fake\\Driver\\Database\\SearchFakeWithAllCustomClasses\\ViewsSearchQuery',
        'Drupal\\search_fake\\Driver\\Database\\SearchFakeWithAllCustomClasses',
        'Drupal\\search\\ViewsSearchQuery',
      ],
      [
        'Drupal\\search_fake\\Driver\\Database\\SearchFakeWithAllCustomClasses\\ViewsSearchQuery',
        'Drupal\\search_fake\\Driver\\Database\\SearchFakeWithAllCustomClasses',
        '\\Drupal\\search\\ViewsSearchQuery',
      ],
    ];
  }
  
  /**
   * Tests extend.
   *
   * @legacy-covers ::extend
   * @legacy-covers \Drupal\Core\Database\Query\SelectExtender::extend
   */
  public function testExtend(string $expected, string $namespace, string $extend) : void {
    $additional_class_loader = new ClassLoader();
    $additional_class_loader->addPsr4("Drupal\\search_fake\\Driver\\Database\\SearchFake\\", __DIR__ . "/../../../modules/search_fake/src/Driver/Database/SearchFake");
    $additional_class_loader->addPsr4("Drupal\\search_fake\\Driver\\Database\\SearchFakeWithAllCustomClasses\\", __DIR__ . "/../../../modules/search_fake/src/Driver/Database/SearchFakeWithAllCustomClasses");
    $additional_class_loader->register(TRUE);
    $connection = new StubConnection($this->createStub(\PDO::class), [
      'namespace' => $namespace,
    ]);
    // Tests the method \Drupal\Core\Database\Query\Select::extend().
    $select = $connection->select('test')
      ->extend($extend);
    $this->assertEquals($expected, get_class($select));
    // Get an instance of the class \Drupal\Core\Database\Query\SelectExtender.
    $select_extender = $connection->select('test')
      ->extend(SelectExtender::class);
    $this->assertEquals(SelectExtender::class, get_class($select_extender));
    // Tests the method \Drupal\Core\Database\Query\SelectExtender::extend().
    $select_extender_extended = $select_extender->extend($extend);
    $this->assertEquals($expected, get_class($select_extender_extended));
  }

}

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