123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?php
- namespace Drupal\KernelTests\Core\Database;
- /**
- * Tests the tagging capabilities of the Select builder.
- *
- * Tags are a way to flag queries for alter hooks so they know
- * what type of query it is, such as "node_access".
- *
- * @group Database
- */
- class TaggingTest extends DatabaseTestBase {
- /**
- * Confirms that a query has a tag added to it.
- */
- public function testHasTag() {
- $query = db_select('test');
- $query->addField('test', 'name');
- $query->addField('test', 'age', 'age');
- $query->addTag('test');
- $this->assertTrue($query->hasTag('test'), 'hasTag() returned true.');
- $this->assertFalse($query->hasTag('other'), 'hasTag() returned false.');
- }
- /**
- * Tests query tagging "has all of these tags" functionality.
- */
- public function testHasAllTags() {
- $query = db_select('test');
- $query->addField('test', 'name');
- $query->addField('test', 'age', 'age');
- $query->addTag('test');
- $query->addTag('other');
- $this->assertTrue($query->hasAllTags('test', 'other'), 'hasAllTags() returned true.');
- $this->assertFalse($query->hasAllTags('test', 'stuff'), 'hasAllTags() returned false.');
- }
- /**
- * Tests query tagging "has at least one of these tags" functionality.
- */
- public function testHasAnyTag() {
- $query = db_select('test');
- $query->addField('test', 'name');
- $query->addField('test', 'age', 'age');
- $query->addTag('test');
- $this->assertTrue($query->hasAnyTag('test', 'other'), 'hasAnyTag() returned true.');
- $this->assertFalse($query->hasAnyTag('other', 'stuff'), 'hasAnyTag() returned false.');
- }
- /**
- * Confirms that an extended query has a tag added to it.
- */
- public function testExtenderHasTag() {
- $query = db_select('test')
- ->extend('Drupal\Core\Database\Query\SelectExtender');
- $query->addField('test', 'name');
- $query->addField('test', 'age', 'age');
- $query->addTag('test');
- $this->assertTrue($query->hasTag('test'), 'hasTag() returned true.');
- $this->assertFalse($query->hasTag('other'), 'hasTag() returned false.');
- }
- /**
- * Tests extended query tagging "has all of these tags" functionality.
- */
- public function testExtenderHasAllTags() {
- $query = db_select('test')
- ->extend('Drupal\Core\Database\Query\SelectExtender');
- $query->addField('test', 'name');
- $query->addField('test', 'age', 'age');
- $query->addTag('test');
- $query->addTag('other');
- $this->assertTrue($query->hasAllTags('test', 'other'), 'hasAllTags() returned true.');
- $this->assertFalse($query->hasAllTags('test', 'stuff'), 'hasAllTags() returned false.');
- }
- /**
- * Tests extended query tagging "has at least one of these tags" functionality.
- */
- public function testExtenderHasAnyTag() {
- $query = db_select('test')
- ->extend('Drupal\Core\Database\Query\SelectExtender');
- $query->addField('test', 'name');
- $query->addField('test', 'age', 'age');
- $query->addTag('test');
- $this->assertTrue($query->hasAnyTag('test', 'other'), 'hasAnyTag() returned true.');
- $this->assertFalse($query->hasAnyTag('other', 'stuff'), 'hasAnyTag() returned false.');
- }
- /**
- * Tests that we can attach metadata to a query object.
- *
- * This is how we pass additional context to alter hooks.
- */
- public function testMetaData() {
- $query = db_select('test');
- $query->addField('test', 'name');
- $query->addField('test', 'age', 'age');
- $data = [
- 'a' => 'A',
- 'b' => 'B',
- ];
- $query->addMetaData('test', $data);
- $return = $query->getMetaData('test');
- $this->assertEqual($data, $return, 'Correct metadata returned.');
- $return = $query->getMetaData('nothere');
- $this->assertNull($return, 'Non-existent key returned NULL.');
- }
- }
|