function FileReferenceResolverTest::testFileReferenceResolveFromReferencingRevision
Tests that reference in a non-default revision are resolved.
File
-
core/
modules/ file/ tests/ src/ Kernel/ FileReferenceResolverTest.php, line 56
Class
- FileReferenceResolverTest
- Tests the FileReferenceResolver methods.
Namespace
Drupal\Tests\file\KernelCode
public function testFileReferenceResolveFromReferencingRevision() : void {
$file1 = $this->createFile();
$file2 = $this->createFile();
$entity = EntityTestMulRevPub::create([
'name' => $this->randomMachineName(),
'field_file' => $file1,
]);
$entity->save();
$first_revision_id = $entity->getRevisionId();
// Create new revision with file2.
$entity = EntityTestMulRevPub::load($entity->id());
$entity->setNewRevision();
$entity->set('field_file', $file2);
$entity->save();
$resolver = $this->container
->get(FileReferenceResolver::class);
// The default revision references file2.
$file_2_references = iterator_to_array($resolver->getReferences($file2), FALSE);
$this->assertCount(1, $file_2_references);
$this->assertInstanceOf(FileReferenceUsage::class, $file_2_references[0]);
$this->assertEquals($entity->id(), $file_2_references[0]->id);
// File1 is not the default revision anymore. It is associated with the
// older revision.
$file_1_references = iterator_to_array($resolver->getReferences($file1), FALSE);
$this->assertCount(1, $file_1_references);
$this->assertInstanceOf(FileReferenceUsage::class, $file_1_references[0]);
$this->assertEquals($first_revision_id, $file_1_references[0]->revisionId);
// Verify that usage can be resolved back to the original revision entity.
$loaded = $resolver->loadEntityFromUsage($file_1_references[0]);
$this->assertEquals($first_revision_id, $loaded->getRevisionId());
$this->assertEquals($file1->id(), $loaded->get('field_file')->target_id);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.