View source
<?php
namespace Drupal\Tests\sqlsrv\Kernel;
use Drupal\Core\Database\Query\Condition as CoreCondition;
use Drupal\Driver\Database\sqlsrv\Select;
use Drupal\KernelTests\Core\Database\DatabaseTestBase;
class ConditionTest extends DatabaseTestBase {
public function testNestedConditions() {
$this
->assertEqual(true, true);
return;
$query = $this->connection
->select('test');
$query
->addField('test', 'job');
$query
->condition('name', 'Paul');
$query
->condition($this->connection
->condition('OR')
->condition('name', '^P', 'REGEXP')
->condition('age', '27'));
$job = $query
->execute()
->fetchField();
$this
->assertEqual($job, 'Songwriter', 'Correct data retrieved.');
}
public function testPdoBugExists() {
$connection = $this->connection;
$reflection = new \ReflectionClass($connection);
$reflection_property = $reflection
->getProperty('sqlsrvConditionOperatorMap');
$reflection_property
->setAccessible(TRUE);
$desired_operator_map = [
'LIKE' => [
'postfix' => " ESCAPE '\\'",
],
];
$reflection_property
->setValue($connection, $desired_operator_map);
$condition = new CoreCondition('AND');
$query = new Select('test', 't', $connection);
$reflection = new \ReflectionClass($query);
$reflection_property = $reflection
->getProperty('condition');
$reflection_property
->setAccessible(TRUE);
$reflection_property
->setValue($query, $condition);
$this
->expectException(\Exception::class);
$query
->addField('t', 'job');
$query
->condition('job', '%i%', 'LIKE');
$query
->condition('name', '%o%', 'LIKE');
$query
->execute();
}
public function testPdoBugFix() {
$connection = $this->connection;
$query = new Select('test', 't', $connection);
$query
->addField('t', 'job');
$query
->condition('job', '%i%', 'LIKE');
$query
->condition('name', '%o%', 'LIKE');
$result = $query
->execute();
$this
->assertTrue(TRUE);
}
public function testLikeWithBrackets() {
$this->connection
->insert('test_people')
->fields([
'job' => '[Rutles] - Guitar',
'name' => 'Dirk',
])
->execute();
$name = $this->connection
->select('test_people', 't')
->fields('t', [
'name',
])
->condition('job', '%[Rutles%', 'LIKE')
->execute()
->fetchField();
$this
->assertEqual('Dirk', $name);
$this->connection
->insert('test_people')
->fields([
'job' => '[Rutles] - Drummer [Original]',
'name' => 'Kevin',
])
->execute();
$names = $this->connection
->select('test_people', 't')
->fields('t', [
'name',
'job',
])
->condition('job', '%[Rutles]%', 'LIKE')
->execute()
->fetchAllAssoc('job');
$this
->assertCount(2, $names);
}
}