public function ConfigEntityQueryTest::testDotted in Drupal 9
Same name and namespace in other branches
- 8 core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php \Drupal\KernelTests\Core\Entity\ConfigEntityQueryTest::testDotted()
Tests dotted path matching.
File
- core/
tests/ Drupal/ KernelTests/ Core/ Entity/ ConfigEntityQueryTest.php, line 579
Class
- ConfigEntityQueryTest
- Tests Config Entity Query functionality.
Namespace
Drupal\KernelTests\Core\EntityCode
public function testDotted() {
$this->queryResults = $this->entityStorage
->getQuery()
->condition('array.level1.*', 1)
->execute();
$this
->assertResults([
'1',
'3',
]);
$this->queryResults = $this->entityStorage
->getQuery()
->condition('*.level1.level2', 2)
->execute();
$this
->assertResults([
'2',
'4',
]);
$this->queryResults = $this->entityStorage
->getQuery()
->condition('array.level1.*', 3)
->execute();
$this
->assertResults([
'5',
]);
$this->queryResults = $this->entityStorage
->getQuery()
->condition('array.level1.level2', 3)
->execute();
$this
->assertResults([
'5',
]);
// Test dotted sorting.
$this->queryResults = $this->entityStorage
->getQuery()
->sort('array.level1.level2')
->execute();
$this
->assertResults([
'6',
'1',
'3',
'2',
'4',
'5',
'7',
]);
$this->queryResults = $this->entityStorage
->getQuery()
->sort('array.level1.level2', 'DESC')
->execute();
$this
->assertResults([
'7',
'5',
'2',
'4',
'1',
'3',
'6',
]);
// Make sure that values on the wildcard level do not match if there are
// sub-keys defined. This must not find anything even if entity 2 has a
// top-level key number with value 41.
$this->queryResults = $this->entityStorage
->getQuery()
->condition('*.level1.level2', 41)
->execute();
$this
->assertResults([]);
// Make sure that "IS NULL" and "IS NOT NULL" work correctly with
// array-valued fields/keys.
$this->queryResults = $this->entityStorage
->getQuery()
->exists('array.level1.level2')
->execute();
$this
->assertResults([
'1',
'2',
'3',
'4',
'5',
'7',
]);
$this->queryResults = $this->entityStorage
->getQuery()
->exists('array.level1')
->execute();
$this
->assertResults([
'1',
'2',
'3',
'4',
'5',
'6',
'7',
]);
$this->queryResults = $this->entityStorage
->getQuery()
->exists('array')
->execute();
$this
->assertResults([
'1',
'2',
'3',
'4',
'5',
'6',
'7',
]);
$this->queryResults = $this->entityStorage
->getQuery()
->notExists('array.level1.level2')
->execute();
$this
->assertResults([
'6',
]);
$this->queryResults = $this->entityStorage
->getQuery()
->notExists('array.level1')
->execute();
$this
->assertResults([]);
$this->queryResults = $this->entityStorage
->getQuery()
->notExists('array')
->execute();
$this
->assertResults([]);
// Make sure that "IS NULL" and "IS NOT NULL" work correctly when the dotted
// path cannot be fully followed.
$this->queryResults = $this->entityStorage
->getQuery()
->exists('does.not.exist')
->execute();
$this
->assertResults([]);
$this->queryResults = $this->entityStorage
->getQuery()
->notExists('does.not.exist')
->execute();
$this
->assertResults([
'1',
'2',
'3',
'4',
'5',
'6',
'7',
]);
}