installEntitySchema('user'); $this->installEntitySchema('node'); $this->installEntitySchema('taxonomy_term'); $this->installSchema('node', 'node_access'); } /** * Tests that the taxonomy index work correctly with forward revisions. */ public function testTaxonomyIndexWithForwardRevision() { \Drupal::configFactory()->getEditable('taxonomy.settings')->set('maintain_index_table', TRUE)->save(); Vocabulary::create([ 'name' => 'test', 'vid' => 'test', ])->save(); $term = Term::create([ 'name' => 'term1', 'vid' => 'test', ]); $term->save(); $term2 = Term::create([ 'name' => 'term2', 'vid' => 'test', ]); $term2->save(); NodeType::create([ 'type' => 'page', ])->save(); FieldStorageConfig::create([ 'entity_type' => 'node', 'field_name' => 'field_tags', 'type' => 'entity_reference', 'settings' => [ 'target_type' => 'taxonomy_term', ], ])->save(); FieldConfig::create([ 'field_name' => 'field_tags', 'entity_type' => 'node', 'bundle' => 'page', ])->save(); $node = Node::create([ 'type' => 'page', 'title' => 'test_title', 'field_tags' => [$term->id()], ]); $node->save(); $taxonomy_index = $this->getTaxonomyIndex(); $this->assertEquals($term->id(), $taxonomy_index[$node->id()]->tid); // Normal new revision. $node->setNewRevision(TRUE); $node->isDefaultRevision(TRUE); $node->field_tags->target_id = $term2->id(); $node->save(); $taxonomy_index = $this->getTaxonomyIndex(); $this->assertEquals($term2->id(), $taxonomy_index[$node->id()]->tid); // Check that saving a forward (non-default) revision does not affect the // taxonomy index. $node->setNewRevision(TRUE); $node->isDefaultRevision(FALSE); $node->field_tags->target_id = $term->id(); $node->save(); $taxonomy_index = $this->getTaxonomyIndex(); $this->assertEquals($term2->id(), $taxonomy_index[$node->id()]->tid); // Check that making the previously created forward-revision the default // revision updates the taxonomy index correctly. $node->isDefaultRevision(TRUE); $node->save(); $taxonomy_index = $this->getTaxonomyIndex(); $this->assertEquals($term->id(), $taxonomy_index[$node->id()]->tid); } protected function getTaxonomyIndex() { return \Drupal::database()->select('taxonomy_index') ->fields('taxonomy_index') ->execute() ->fetchAllAssoc('nid'); } }