123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738 |
- <?php
- namespace Drupal\KernelTests\Core\Entity;
- use Drupal\Core\Config\Entity\Query\QueryFactory;
- use Drupal\config_test\Entity\ConfigQueryTest;
- use Drupal\KernelTests\KernelTestBase;
- /**
- * Tests Config Entity Query functionality.
- *
- * @group Entity
- * @see \Drupal\Core\Config\Entity\Query
- */
- class ConfigEntityQueryTest extends KernelTestBase {
- /**
- * Modules to enable.
- *
- * @var array
- */
- public static $modules = ['config_test'];
- /**
- * Stores the search results for alter comparison.
- *
- * @var array
- */
- protected $queryResults;
- /**
- * The query factory used to construct all queries in the test.
- *
- * @var \Drupal\Core\Config\Entity\Query\QueryFactory
- */
- protected $factory;
- /**
- * The entity storage used for testing.
- *
- * @var \Drupal\Core\Entity\EntityStorageInterface
- */
- protected $entityStorage;
- /**
- * Stores all config entities created for the test.
- *
- * @var array
- */
- protected $entities;
- protected function setUp() {
- parent::setUp();
- $this->entities = [];
- $this->entityStorage = $this->container->get('entity_type.manager')->getStorage('config_query_test');
- // These two are here to make sure that matchArray needs to go over several
- // non-matches on every levels.
- $array['level1']['level2a'] = 9;
- $array['level1a']['level2'] = 9;
- // The tests match array.level1.level2.
- $array['level1']['level2'] = 1;
- $entity = ConfigQueryTest::create([
- 'label' => 'entity_1',
- 'id' => '1',
- 'number' => 31,
- 'array' => $array,
- ]);
- $this->entities[] = $entity;
- $entity->enforceIsNew();
- $entity->save();
- $array['level1']['level2'] = 2;
- $entity = ConfigQueryTest::create([
- 'label' => 'entity_2',
- 'id' => '2',
- 'number' => 41,
- 'array' => $array,
- ]);
- $this->entities[] = $entity;
- $entity->enforceIsNew();
- $entity->save();
- $array['level1']['level2'] = 1;
- $entity = ConfigQueryTest::create([
- 'label' => 'test_prefix_entity_3',
- 'id' => '3',
- 'number' => 59,
- 'array' => $array,
- ]);
- $this->entities[] = $entity;
- $entity->enforceIsNew();
- $entity->save();
- $array['level1']['level2'] = 2;
- $entity = ConfigQueryTest::create([
- 'label' => 'entity_4_test_suffix',
- 'id' => '4',
- 'number' => 26,
- 'array' => $array,
- ]);
- $this->entities[] = $entity;
- $entity->enforceIsNew();
- $entity->save();
- $array['level1']['level2'] = 3;
- $entity = ConfigQueryTest::create([
- 'label' => 'entity_5_TEST_contains_entity_5',
- 'id' => '5',
- 'number' => 53,
- 'array' => $array,
- ]);
- $this->entities[] = $entity;
- $entity->enforceIsNew();
- $entity->save();
- $array['level1'] = [];
- $entity = ConfigQueryTest::create([
- 'label' => $this->randomMachineName(),
- 'id' => '6',
- 'array' => $array,
- ]);
- $this->entities[] = $entity;
- $entity->enforceIsNew();
- $entity->save();
- $array['level1']['level2'] = 4;
- $entity = ConfigQueryTest::create([
- 'label' => $this->randomMachineName(),
- 'id' => '7',
- 'number' => 70,
- 'array' => $array,
- ]);
- $this->entities[] = $entity;
- $entity->enforceIsNew();
- $entity->save();
- }
- /**
- * Tests basic functionality.
- */
- public function testConfigEntityQuery() {
- // Run a test without any condition.
- $this->queryResults = $this->entityStorage->getQuery()
- ->execute();
- $this->assertResults(['1', '2', '3', '4', '5', '6', '7']);
- // No conditions, OR.
- $this->queryResults = $this->entityStorage->getQuery('OR')
- ->execute();
- $this->assertResults(['1', '2', '3', '4', '5', '6', '7']);
- // Filter by ID with equality.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', '3')
- ->execute();
- $this->assertResults(['3']);
- // Filter by label with a known prefix.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('label', 'test_prefix', 'STARTS_WITH')
- ->execute();
- $this->assertResults(['3']);
- // Filter by label with a known suffix.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('label', 'test_suffix', 'ENDS_WITH')
- ->execute();
- $this->assertResults(['4']);
- // Filter by label with a known containing word.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('label', 'test_contains', 'CONTAINS')
- ->execute();
- $this->assertResults(['5']);
- // Filter by ID with the IN operator.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', ['2', '3'], 'IN')
- ->execute();
- $this->assertResults(['2', '3']);
- // Filter by ID with the implicit IN operator.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', ['2', '3'])
- ->execute();
- $this->assertResults(['2', '3']);
- // Filter by ID with the > operator.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', '3', '>')
- ->execute();
- $this->assertResults(['4', '5', '6', '7']);
- // Filter by ID with the >= operator.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', '3', '>=')
- ->execute();
- $this->assertResults(['3', '4', '5', '6', '7']);
- // Filter by ID with the <> operator.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', '3', '<>')
- ->execute();
- $this->assertResults(['1', '2', '4', '5', '6', '7']);
- // Filter by ID with the < operator.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', '3', '<')
- ->execute();
- $this->assertResults(['1', '2']);
- // Filter by ID with the <= operator.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', '3', '<=')
- ->execute();
- $this->assertResults(['1', '2', '3']);
- // Filter by two conditions on the same field.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('label', 'test_pref', 'STARTS_WITH')
- ->condition('label', 'test_prefix', 'STARTS_WITH')
- ->execute();
- $this->assertResults(['3']);
- // Filter by two conditions on different fields. The first query matches for
- // a different ID, so the result is empty.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('label', 'test_prefix', 'STARTS_WITH')
- ->condition('id', '5')
- ->execute();
- $this->assertResults([]);
- // 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->entityStorage->getQuery()
- ->condition('label', 'test_prefix', 'STARTS_WITH')
- ->condition('id', '3')
- ->execute();
- $this->assertResults(['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->entityStorage->getQuery()
- ->condition('id', '1', '>=')
- ->condition('number', 10, '>=')
- ->condition('number', 50, '>=')
- ->execute();
- $this->assertResults(['3', '5', '7']);
- // Filter with an OR condition group.
- $this->queryResults = $this->entityStorage->getQuery('OR')
- ->condition('id', 1)
- ->condition('id', '2')
- ->execute();
- $this->assertResults(['1', '2']);
- // Simplify it with IN.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', ['1', '2'])
- ->execute();
- $this->assertResults(['1', '2']);
- // Try explicit IN.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', ['1', '2'], 'IN')
- ->execute();
- $this->assertResults(['1', '2']);
- // Try not IN.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', ['1', '2'], 'NOT IN')
- ->execute();
- $this->assertResults(['3', '4', '5', '6', '7']);
- // Filter with an OR condition group on different fields.
- $this->queryResults = $this->entityStorage->getQuery('OR')
- ->condition('id', 1)
- ->condition('number', 41)
- ->execute();
- $this->assertResults(['1', '2']);
- // Filter with an OR condition group on different fields but matching on the
- // same entity.
- $this->queryResults = $this->entityStorage->getQuery('OR')
- ->condition('id', 1)
- ->condition('number', 31)
- ->execute();
- $this->assertResults(['1']);
- // NO simple conditions, YES complex conditions, 'AND'.
- $query = $this->entityStorage->getQuery('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(['1']);
- // NO simple conditions, YES complex conditions, 'OR'.
- $query = $this->entityStorage->getQuery('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(['1', '2']);
- // YES simple conditions, YES complex conditions, 'AND'.
- $query = $this->entityStorage->getQuery('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(['1']);
- // YES simple conditions, YES complex conditions, 'OR'.
- $query = $this->entityStorage->getQuery('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(['1', '2', '4', '5']);
- // Test the exists and notExists conditions.
- $this->queryResults = $this->entityStorage->getQuery()
- ->exists('id')
- ->execute();
- $this->assertResults(['1', '2', '3', '4', '5', '6', '7']);
- $this->queryResults = $this->entityStorage->getQuery()
- ->exists('non-existent')
- ->execute();
- $this->assertResults([]);
- $this->queryResults = $this->entityStorage->getQuery()
- ->notExists('id')
- ->execute();
- $this->assertResults([]);
- $this->queryResults = $this->entityStorage->getQuery()
- ->notExists('non-existent')
- ->execute();
- $this->assertResults(['1', '2', '3', '4', '5', '6', '7']);
- }
- /**
- * Tests ID conditions.
- */
- public function testStringIdConditions() {
- // We need an entity with a non-numeric ID.
- $entity = ConfigQueryTest::create([
- 'label' => 'entity_1',
- 'id' => 'foo.bar',
- ]);
- $this->entities[] = $entity;
- $entity->enforceIsNew();
- $entity->save();
- // Test 'STARTS_WITH' condition.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', 'foo.bar', 'STARTS_WITH')
- ->execute();
- $this->assertResults(['foo.bar']);
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', 'f', 'STARTS_WITH')
- ->execute();
- $this->assertResults(['foo.bar']);
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', 'miss', 'STARTS_WITH')
- ->execute();
- $this->assertResults([]);
- // Test 'CONTAINS' condition.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', 'foo.bar', 'CONTAINS')
- ->execute();
- $this->assertResults(['foo.bar']);
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', 'oo.ba', 'CONTAINS')
- ->execute();
- $this->assertResults(['foo.bar']);
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', 'miss', 'CONTAINS')
- ->execute();
- $this->assertResults([]);
- // Test 'ENDS_WITH' condition.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', 'foo.bar', 'ENDS_WITH')
- ->execute();
- $this->assertResults(['foo.bar']);
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', 'r', 'ENDS_WITH')
- ->execute();
- $this->assertResults(['foo.bar']);
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', 'miss', 'ENDS_WITH')
- ->execute();
- $this->assertResults([]);
- }
- /**
- * Tests count query.
- */
- public function testCount() {
- // Test count on no conditions.
- $count = $this->entityStorage->getQuery()
- ->count()
- ->execute();
- $this->assertIdentical($count, count($this->entities));
- // Test count on a complex query.
- $query = $this->entityStorage->getQuery('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);
- $count = $query
- ->condition($and_condition_1)
- ->condition($and_condition_2)
- ->count()
- ->execute();
- $this->assertIdentical($count, 2);
- }
- /**
- * Tests sorting and range on config entity queries.
- */
- public function testSortRange() {
- // Sort by simple ascending/descending.
- $this->queryResults = $this->entityStorage->getQuery()
- ->sort('number', 'DESC')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['7', '3', '5', '2', '1', '4', '6']);
- $this->queryResults = $this->entityStorage->getQuery()
- ->sort('number', 'ASC')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['6', '4', '1', '2', '5', '3', '7']);
- // Apply some filters and sort.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', '3', '>')
- ->sort('number', 'DESC')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['7', '5', '4', '6']);
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('id', '3', '>')
- ->sort('number', 'ASC')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['6', '4', '5', '7']);
- // Apply a pager and sort.
- $this->queryResults = $this->entityStorage->getQuery()
- ->sort('number', 'DESC')
- ->range('2', '2')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['5', '2']);
- $this->queryResults = $this->entityStorage->getQuery()
- ->sort('number', 'ASC')
- ->range('2', '2')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['1', '2']);
- // Add a range to a query without a start parameter.
- $this->queryResults = $this->entityStorage->getQuery()
- ->range(0, '3')
- ->sort('id', 'ASC')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['1', '2', '3']);
- // Apply a pager with limit 4.
- $this->queryResults = $this->entityStorage->getQuery()
- ->pager('4', 0)
- ->sort('id', 'ASC')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['1', '2', '3', '4']);
- }
- /**
- * Tests sorting with tableSort on config entity queries.
- */
- public function testTableSort() {
- $header = [
- ['data' => t('ID'), 'specifier' => 'id'],
- ['data' => t('Number'), 'specifier' => 'number'],
- ];
- // Sort key: id
- // Sorting with 'DESC' upper case
- $this->queryResults = $this->entityStorage->getQuery()
- ->tableSort($header)
- ->sort('id', 'DESC')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['7', '6', '5', '4', '3', '2', '1']);
- // Sorting with 'ASC' upper case
- $this->queryResults = $this->entityStorage->getQuery()
- ->tableSort($header)
- ->sort('id', 'ASC')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['1', '2', '3', '4', '5', '6', '7']);
- // Sorting with 'desc' lower case
- $this->queryResults = $this->entityStorage->getQuery()
- ->tableSort($header)
- ->sort('id', 'desc')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['7', '6', '5', '4', '3', '2', '1']);
- // Sorting with 'asc' lower case
- $this->queryResults = $this->entityStorage->getQuery()
- ->tableSort($header)
- ->sort('id', 'asc')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['1', '2', '3', '4', '5', '6', '7']);
- // Sort key: number
- // Sorting with 'DeSc' mixed upper and lower case
- $this->queryResults = $this->entityStorage->getQuery()
- ->tableSort($header)
- ->sort('number', 'DeSc')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['7', '3', '5', '2', '1', '4', '6']);
- // Sorting with 'AsC' mixed upper and lower case
- $this->queryResults = $this->entityStorage->getQuery()
- ->tableSort($header)
- ->sort('number', 'AsC')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['6', '4', '1', '2', '5', '3', '7']);
- // Sorting with 'dEsC' mixed upper and lower case
- $this->queryResults = $this->entityStorage->getQuery()
- ->tableSort($header)
- ->sort('number', 'dEsC')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['7', '3', '5', '2', '1', '4', '6']);
- // Sorting with 'aSc' mixed upper and lower case
- $this->queryResults = $this->entityStorage->getQuery()
- ->tableSort($header)
- ->sort('number', 'aSc')
- ->execute();
- $this->assertIdentical(array_values($this->queryResults), ['6', '4', '1', '2', '5', '3', '7']);
- }
- /**
- * Tests dotted path matching.
- */
- 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']);
- }
- /**
- * Tests case sensitivity.
- */
- public function testCaseSensitivity() {
- // Filter by label with a known containing case-sensitive word.
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('label', 'TEST', 'CONTAINS')
- ->execute();
- $this->assertResults(['3', '4', '5']);
- $this->queryResults = $this->entityStorage->getQuery()
- ->condition('label', 'test', 'CONTAINS')
- ->execute();
- $this->assertResults(['3', '4', '5']);
- }
- /**
- * Tests lookup keys are added to the key value store.
- */
- public function testLookupKeys() {
- \Drupal::service('state')->set('config_test.lookup_keys', TRUE);
- \Drupal::entityTypeManager()->clearCachedDefinitions();
- $key_value = $this->container->get('keyvalue')->get(QueryFactory::CONFIG_LOOKUP_PREFIX . 'config_test');
- $test_entities = [];
- $storage = \Drupal::entityTypeManager()->getStorage('config_test');
- $entity = $storage->create([
- 'label' => 'entity_1',
- 'id' => '1',
- 'style' => 'test',
- ]);
- $test_entities[$entity->getConfigDependencyName()] = $entity;
- $entity->enforceIsNew();
- $entity->save();
- $expected[] = $entity->getConfigDependencyName();
- $this->assertEqual($expected, $key_value->get('style:test'));
- $entity = $storage->create([
- 'label' => 'entity_2',
- 'id' => '2',
- 'style' => 'test',
- ]);
- $test_entities[$entity->getConfigDependencyName()] = $entity;
- $entity->enforceIsNew();
- $entity->save();
- $expected[] = $entity->getConfigDependencyName();
- $this->assertEqual($expected, $key_value->get('style:test'));
- $entity = $storage->create([
- 'label' => 'entity_3',
- 'id' => '3',
- 'style' => 'blah',
- ]);
- $entity->enforceIsNew();
- $entity->save();
- // Do not add this entity to the list of expected result as it has a
- // different value.
- $this->assertEqual($expected, $key_value->get('style:test'));
- $this->assertEqual([$entity->getConfigDependencyName()], $key_value->get('style:blah'));
- // Ensure that a delete clears a key.
- $entity->delete();
- $this->assertEqual(NULL, $key_value->get('style:blah'));
- // Ensure that delete only clears one key.
- $entity_id = array_pop($expected);
- $test_entities[$entity_id]->delete();
- $this->assertEqual($expected, $key_value->get('style:test'));
- $entity_id = array_pop($expected);
- $test_entities[$entity_id]->delete();
- $this->assertEqual(NULL, $key_value->get('style:test'));
- }
- /**
- * Asserts the results as expected regardless of order.
- *
- * @param array $expected
- * Array of expected entity IDs.
- */
- protected function assertResults($expected) {
- $this->assertIdentical(count($this->queryResults), count($expected));
- foreach ($expected as $value) {
- // This also tests whether $this->queryResults[$value] is even set at all.
- $this->assertIdentical($this->queryResults[$value], $value);
- }
- }
- }
|