public function UsageTest::testFileUsageWithEntityTranslation in Drupal 9
Same name and namespace in other branches
- 8 core/modules/file/tests/src/Kernel/UsageTest.php \Drupal\Tests\file\Kernel\UsageTest::testFileUsageWithEntityTranslation()
Tests file usage with translated entities.
File
- core/
modules/ file/ tests/ src/ Kernel/ UsageTest.php, line 245
Class
- UsageTest
- Tests file usage functions.
Namespace
Drupal\Tests\file\KernelCode
public function testFileUsageWithEntityTranslation() {
/** @var \Drupal\file\FileUsage\FileUsageInterface $file_usage */
$file_usage = $this->container
->get('file.usage');
$this
->enableModules([
'node',
'language',
]);
$this
->installEntitySchema('node');
$this
->installSchema('node', [
'node_access',
]);
// Activate English and Romanian languages.
ConfigurableLanguage::create([
'id' => 'en',
])
->save();
ConfigurableLanguage::create([
'id' => 'ro',
])
->save();
NodeType::create([
'type' => 'page',
])
->save();
ContentLanguageSettings::loadByEntityTypeBundle('node', 'page')
->setLanguageAlterable(FALSE)
->setDefaultLangcode('en')
->save();
// Create a file field attached to 'page' node-type.
FieldStorageConfig::create([
'type' => 'file',
'entity_type' => 'node',
'field_name' => 'file',
])
->save();
FieldConfig::create([
'entity_type' => 'node',
'bundle' => 'page',
'field_name' => 'file',
'label' => 'File',
])
->save();
// Create a node, attach a file and add a Romanian translation.
$node = Node::create([
'type' => 'page',
'title' => 'Page',
]);
$node
->set('file', $file = $this
->createFile())
->addTranslation('ro', $node
->getTranslation('en')
->toArray())
->save();
// Check that the file is used twice.
$usage = $file_usage
->listUsage($file);
$this
->assertEquals(2, $usage['file']['node'][$node
->id()]);
// Remove the Romanian translation.
$node
->removeTranslation('ro');
$node
->save();
// Check that one usage has been removed and is used only once now.
$usage = $file_usage
->listUsage($file);
$this
->assertEquals(1, $usage['file']['node'][$node
->id()]);
}