function EntityFieldQueryTestCase::testEntityFieldQueryMetaConditions
Tests field meta conditions.
File
-
modules/
simpletest/ tests/ entity_query.test, line 1121
Class
- EntityFieldQueryTestCase
- Tests EntityFieldQuery.
Code
function testEntityFieldQueryMetaConditions() {
// Make a test field translatable.
$this->fields[0]['translatable'] = TRUE;
field_update_field($this->fields[0]);
field_test_entity_info_translatable('test_entity', TRUE);
// Create more items with different languages.
$entity = new stdClass();
$entity->ftid = 1;
$entity->ftvid = 1;
$entity->fttype = 'test_bundle';
$j = 0;
foreach (array(
LANGUAGE_NONE,
'en',
) as $langcode) {
for ($i = 0; $i < 4; $i++) {
$entity->{$this->field_names[0]}[$langcode][$i]['value'] = $i + $j;
}
$j += 4;
}
field_attach_update('test_entity', $entity);
// Test delta field meta condition.
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldDeltaCondition($this->fields[0], 0, '>');
$this->assertEntityFieldQuery($query, array(
array(
'test_entity',
1,
),
), 'Test with a delta meta condition.');
// Test language field meta condition.
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '<>');
$this->assertEntityFieldQuery($query, array(
array(
'test_entity',
1,
),
), 'Test with a language meta condition.');
// Test language field meta condition.
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '!=');
$this->assertEntityFieldQuery($query, array(
array(
'test_entity',
1,
),
), 'Test with a language meta condition.');
// Test delta grouping.
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'group')
->fieldDeltaCondition($this->fields[0], 1, '<', 'group');
$this->assertEntityFieldQuery($query, array(
array(
'test_entity',
1,
),
), 'Test with a grouped delta meta condition.');
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'group')
->fieldDeltaCondition($this->fields[0], 1, '>=', 'group');
$this->assertEntityFieldQuery($query, array(), 'Test with a grouped delta meta condition (empty result set).');
// Test language grouping.
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', NULL, 'group')
->fieldLanguageCondition($this->fields[0], 'en', '<>', NULL, 'group');
$this->assertEntityFieldQuery($query, array(
array(
'test_entity',
1,
),
), 'Test with a grouped language meta condition.');
// Test language grouping.
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', NULL, 'group')
->fieldLanguageCondition($this->fields[0], 'en', '!=', NULL, 'group');
$this->assertEntityFieldQuery($query, array(
array(
'test_entity',
1,
),
), 'Test with a grouped language meta condition.');
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', NULL, 'group')
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '<>', NULL, 'group');
$this->assertEntityFieldQuery($query, array(), 'Test with a grouped language meta condition (empty result set).');
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', NULL, 'group')
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '!=', NULL, 'group');
$this->assertEntityFieldQuery($query, array(), 'Test with a grouped language meta condition (empty result set).');
// Test delta and language grouping.
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'delta', 'language')
->fieldDeltaCondition($this->fields[0], 1, '<', 'delta', 'language')
->fieldLanguageCondition($this->fields[0], 'en', '<>', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(
array(
'test_entity',
1,
),
), 'Test with a grouped delta + language meta condition.');
// Test delta and language grouping.
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'delta', 'language')
->fieldDeltaCondition($this->fields[0], 1, '<', 'delta', 'language')
->fieldLanguageCondition($this->fields[0], 'en', '!=', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(
array(
'test_entity',
1,
),
), 'Test with a grouped delta + language meta condition.');
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'delta', 'language')
->fieldDeltaCondition($this->fields[0], 1, '>=', 'delta', 'language')
->fieldLanguageCondition($this->fields[0], 'en', '<>', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(), 'Test with a grouped delta + language meta condition (empty result set, delta condition unsatisifed).');
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'delta', 'language')
->fieldDeltaCondition($this->fields[0], 1, '>=', 'delta', 'language')
->fieldLanguageCondition($this->fields[0], 'en', '!=', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(), 'Test with a grouped delta + language meta condition (empty result set, delta condition unsatisifed).');
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'delta', 'language')
->fieldDeltaCondition($this->fields[0], 1, '<', 'delta', 'language')
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '<>', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(), 'Test with a grouped delta + language meta condition (empty result set, language condition unsatisifed).');
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'delta', 'language')
->fieldDeltaCondition($this->fields[0], 1, '<', 'delta', 'language')
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '!=', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(), 'Test with a grouped delta + language meta condition (empty result set, language condition unsatisifed).');
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'delta', 'language')
->fieldDeltaCondition($this->fields[0], 1, '>=', 'delta', 'language')
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '<>', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(), 'Test with a grouped delta + language meta condition (empty result set, both conditions unsatisifed).');
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'delta', 'language')
->fieldDeltaCondition($this->fields[0], 1, '>=', 'delta', 'language')
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '!=', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(), 'Test with a grouped delta + language meta condition (empty result set, both conditions unsatisifed).');
// Test grouping with another field to ensure that grouping cache is reset
// properly.
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'test_entity_bundle', '=')
->fieldCondition($this->fields[1], 'shape', 'circle', '=', 'delta', 'language')
->fieldCondition($this->fields[1], 'color', 'blue', '=', 'delta', 'language')
->fieldDeltaCondition($this->fields[1], 1, '=', 'delta', 'language')
->fieldLanguageCondition($this->fields[1], LANGUAGE_NONE, '=', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(
array(
'test_entity_bundle',
5,
),
), 'Test grouping cache.');
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.