public function ConfigEntityQueryTest::testConfigEntityQuery in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/system/src/Tests/Entity/ConfigEntityQueryTest.php \Drupal\system\Tests\Entity\ConfigEntityQueryTest::testConfigEntityQuery()
Tests basic functionality.
File
- core/
modules/ system/ src/ Tests/ Entity/ ConfigEntityQueryTest.php, line 119 - Contains \Drupal\system\Tests\Entity\ConfigEntityQueryTest.
Class
- ConfigEntityQueryTest
- Tests Config Entity Query functionality.
Namespace
Drupal\system\Tests\EntityCode
public function testConfigEntityQuery() {
// Run a test without any condition.
$this->queryResults = $this->factory
->get('config_query_test')
->execute();
$this
->assertResults(array(
'1',
'2',
'3',
'4',
'5',
));
// No conditions, OR.
$this->queryResults = $this->factory
->get('config_query_test', 'OR')
->execute();
$this
->assertResults(array(
'1',
'2',
'3',
'4',
'5',
));
// Filter by ID with equality.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('id', '3')
->execute();
$this
->assertResults(array(
'3',
));
// Filter by label with a known prefix.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('label', 'test_prefix', 'STARTS_WITH')
->execute();
$this
->assertResults(array(
'3',
));
// Filter by label with a known suffix.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('label', 'test_suffix', 'ENDS_WITH')
->execute();
$this
->assertResults(array(
'4',
));
// Filter by label with a known containing word.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('label', 'test_contains', 'CONTAINS')
->execute();
$this
->assertResults(array(
'5',
));
// Filter by ID with the IN operator.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('id', array(
'2',
'3',
), 'IN')
->execute();
$this
->assertResults(array(
'2',
'3',
));
// Filter by ID with the implicit IN operator.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('id', array(
'2',
'3',
))
->execute();
$this
->assertResults(array(
'2',
'3',
));
// Filter by ID with the > operator.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('id', '3', '>')
->execute();
$this
->assertResults(array(
'4',
'5',
));
// Filter by ID with the >= operator.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('id', '3', '>=')
->execute();
$this
->assertResults(array(
'3',
'4',
'5',
));
// Filter by ID with the <> operator.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('id', '3', '<>')
->execute();
$this
->assertResults(array(
'1',
'2',
'4',
'5',
));
// Filter by ID with the < operator.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('id', '3', '<')
->execute();
$this
->assertResults(array(
'1',
'2',
));
// Filter by ID with the <= operator.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('id', '3', '<=')
->execute();
$this
->assertResults(array(
'1',
'2',
'3',
));
// Filter by two conditions on the same field.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('label', 'test_pref', 'STARTS_WITH')
->condition('label', 'test_prefix', 'STARTS_WITH')
->execute();
$this
->assertResults(array(
'3',
));
// Filter by two conditions on different fields. The first query matches for
// a different ID, so the result is empty.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('label', 'test_prefix', 'STARTS_WITH')
->condition('id', '5')
->execute();
$this
->assertResults(array());
// Filter by two different conditions on different fields. This time the
// first condition matches on one item, but the second one does as well.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('label', 'test_prefix', 'STARTS_WITH')
->condition('id', '3')
->execute();
$this
->assertResults(array(
'3',
));
// Filter by two different conditions, of which the first one matches for
// every entry, the second one as well, but just the third one filters so
// that just two are left.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('id', '1', '>=')
->condition('number', 10, '>=')
->condition('number', 50, '>=')
->execute();
$this
->assertResults(array(
'3',
'5',
));
// Filter with an OR condition group.
$this->queryResults = $this->factory
->get('config_query_test', 'OR')
->condition('id', 1)
->condition('id', '2')
->execute();
$this
->assertResults(array(
'1',
'2',
));
// Simplify it with IN.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('id', array(
'1',
'2',
))
->execute();
$this
->assertResults(array(
'1',
'2',
));
// Try explicit IN.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('id', array(
'1',
'2',
), 'IN')
->execute();
$this
->assertResults(array(
'1',
'2',
));
// Try not IN.
$this->queryResults = $this->factory
->get('config_query_test')
->condition('id', array(
'1',
'2',
), 'NOT IN')
->execute();
$this
->assertResults(array(
'3',
'4',
'5',
));
// Filter with an OR condition group on different fields.
$this->queryResults = $this->factory
->get('config_query_test', 'OR')
->condition('id', 1)
->condition('number', 41)
->execute();
$this
->assertResults(array(
'1',
'2',
));
// Filter with an OR condition group on different fields but matching on the
// same entity.
$this->queryResults = $this->factory
->get('config_query_test', 'OR')
->condition('id', 1)
->condition('number', 31)
->execute();
$this
->assertResults(array(
'1',
));
// NO simple conditions, YES complex conditions, 'AND'.
$query = $this->factory
->get('config_query_test', 'AND');
$and_condition_1 = $query
->orConditionGroup()
->condition('id', '2')
->condition('label', $this->entities[0]->label);
$and_condition_2 = $query
->orConditionGroup()
->condition('id', 1)
->condition('label', $this->entities[3]->label);
$this->queryResults = $query
->condition($and_condition_1)
->condition($and_condition_2)
->execute();
$this
->assertResults(array(
'1',
));
// NO simple conditions, YES complex conditions, 'OR'.
$query = $this->factory
->get('config_query_test', 'OR');
$and_condition_1 = $query
->andConditionGroup()
->condition('id', 1)
->condition('label', $this->entities[0]->label);
$and_condition_2 = $query
->andConditionGroup()
->condition('id', '2')
->condition('label', $this->entities[1]->label);
$this->queryResults = $query
->condition($and_condition_1)
->condition($and_condition_2)
->execute();
$this
->assertResults(array(
'1',
'2',
));
// YES simple conditions, YES complex conditions, 'AND'.
$query = $this->factory
->get('config_query_test', 'AND');
$and_condition_1 = $query
->orConditionGroup()
->condition('id', '2')
->condition('label', $this->entities[0]->label);
$and_condition_2 = $query
->orConditionGroup()
->condition('id', 1)
->condition('label', $this->entities[3]->label);
$this->queryResults = $query
->condition('number', 31)
->condition($and_condition_1)
->condition($and_condition_2)
->execute();
$this
->assertResults(array(
'1',
));
// YES simple conditions, YES complex conditions, 'OR'.
$query = $this->factory
->get('config_query_test', 'OR');
$and_condition_1 = $query
->orConditionGroup()
->condition('id', '2')
->condition('label', $this->entities[0]->label);
$and_condition_2 = $query
->orConditionGroup()
->condition('id', 1)
->condition('label', $this->entities[3]->label);
$this->queryResults = $query
->condition('number', 53)
->condition($and_condition_1)
->condition($and_condition_2)
->execute();
$this
->assertResults(array(
'1',
'2',
'4',
'5',
));
// Test the exists and notExists conditions.
$this->queryResults = $this->factory
->get('config_query_test')
->exists('id')
->execute();
$this
->assertResults(array(
'1',
'2',
'3',
'4',
'5',
));
$this->queryResults = $this->factory
->get('config_query_test')
->exists('non-existent')
->execute();
$this
->assertResults(array());
$this->queryResults = $this->factory
->get('config_query_test')
->notExists('id')
->execute();
$this
->assertResults(array());
$this->queryResults = $this->factory
->get('config_query_test')
->notExists('non-existent')
->execute();
$this
->assertResults(array(
'1',
'2',
'3',
'4',
'5',
));
}