View source
<?php
namespace Drupal\Tests\filefield_paths\Functional;
class FileFieldPathsTokensTest extends FileFieldPathsTestBase {
public function assertToken($token, $value, array $data) {
$result = \Drupal::token()
->replace($token, $data);
$this
->assertEquals($value, $result, "Token {$token} equals {$value}");
}
public function testTokensBasic() {
$text_file = $this
->getTestFile('text');
$text_file
->save();
$data = [
'file' => $text_file,
];
$this
->assertToken('[file:ffp-name-only]', 'text-0', $data);
$this
->assertToken('[file:ffp-name-only-original]', 'text-0', $data);
$this
->assertToken('[file:ffp-extension-original]', 'txt', $data);
}
public function testTokensMoved() {
$text_file = $this
->getTestFile('text');
$text_file
->save();
$moved_file = file_move($text_file, 'public://moved.diff');
$data = [
'file' => $moved_file,
];
$this
->assertToken('[file:ffp-name-only]', 'moved', $data);
$this
->assertToken('[file:ffp-name-only-original]', 'text-0', $data);
$this
->assertToken('[file:ffp-extension-original]', 'txt', $data);
}
public function testTokensMultiExtension() {
$text_file = $this
->getTestFile('text');
$file_system = \Drupal::service('file_system');
$file_system
->copy($text_file
->getFileUri(), 'public://text.multiext.txt');
$files = $file_system
->scanDirectory('public://', '/text\\.multiext\\.txt/');
$multiext_file = current($files);
$multiext_file = \Drupal::entityTypeManager()
->getStorage('file')
->create((array) $multiext_file);
$multiext_file
->save();
$data = [
'file' => $multiext_file,
];
$this
->assertToken('[file:ffp-name-only]', 'text.multiext', $data);
$this
->assertToken('[file:ffp-name-only-original]', 'text.multiext', $data);
$this
->assertToken('[file:ffp-extension-original]', 'txt', $data);
}
public function testTokensUtf() {
$text_file = $this
->getTestFile('text');
$file_system = \Drupal::service('file_system');
$file_system
->copy($text_file
->getFileUri(), 'public://тест.txt');
$files = $file_system
->scanDirectory('public://', '/тест\\.txt/');
$utf_file = current($files);
$utf_file = \Drupal::entityTypeManager()
->getStorage('file')
->create((array) $utf_file);
$utf_file
->save();
$data = [
'file' => $utf_file,
];
$this
->assertToken('[file:ffp-name-only]', 'тест', $data);
}
}