3 namespace Drupal\Tests\file\Kernel\Formatter;
5 use Drupal\Core\Entity\Entity\EntityViewDisplay;
7 use Drupal\file\Entity\File;
8 use Drupal\KernelTests\KernelTestBase;
11 * Tests the default file formatter.
15 class FileEntityFormatterTest extends KernelTestBase {
20 public static $modules = ['file', 'user'];
32 protected function setUp() {
35 $this->installEntitySchema('file');
38 file_put_contents('public://file.png', str_repeat('t', 10));
39 $file = File::create([
40 'uri' => 'public://file.png',
41 'filename' => 'file.png',
44 $this->files[] = $file;
46 file_put_contents('public://file.tar', str_repeat('t', 200));
47 $file = File::create([
48 'uri' => 'public://file.tar',
49 'filename' => 'file.tar',
52 $this->files[] = $file;
54 file_put_contents('public://file.tar.gz', str_repeat('t', 40000));
55 $file = File::create([
56 'uri' => 'public://file.tar.gz',
57 'filename' => 'file.tar.gz',
60 $this->files[] = $file;
62 file_put_contents('public://file', str_repeat('t', 8000000));
63 $file = File::create([
64 'uri' => 'public://file',
68 $this->files[] = $file;
72 * Tests the file_link field formatter.
74 public function testFormatterFileLink() {
75 $entity_display = EntityViewDisplay::create([
76 'targetEntityType' => 'file',
79 $entity_display->setComponent('filename', ['type' => 'file_link']);
81 $build = $entity_display->buildMultiple($this->files)[0]['filename'][0];
82 $this->assertEqual('file.png', $build['#title']);
83 $this->assertEqual(Url::fromUri(file_create_url('public://file.png')), $build['#url']);
87 * Tests the file_link field formatter.
89 public function testFormatterFileUri() {
90 $entity_display = EntityViewDisplay::create([
91 'targetEntityType' => 'file',
94 $entity_display->setComponent('uri', ['type' => 'file_uri']);
96 $build = $entity_display->buildMultiple($this->files)[0]['uri'][0];
97 $this->assertEqual('public://file.png', $build['#markup']);
99 $entity_display->setComponent('uri', ['type' => 'file_uri', 'settings' => ['file_download_path' => TRUE]]);
100 $build = $entity_display->buildMultiple($this->files)[0]['uri'][0];
101 $this->assertEqual(file_create_url('public://file.png'), $build['#markup']);
103 $entity_display->setComponent('uri', ['type' => 'file_uri', 'settings' => ['file_download_path' => TRUE, 'link_to_file' => TRUE]]);
104 $build = $entity_display->buildMultiple($this->files)[0]['uri'][0];
105 $this->assertEqual(file_create_url('public://file.png'), $build['#title']);
106 $this->assertEqual(Url::fromUri(file_create_url('public://file.png')), $build['#url']);
110 * Tests the file_extension field formatter.
112 public function testFormatterFileExtension() {
113 $entity_display = EntityViewDisplay::create([
114 'targetEntityType' => 'file',
117 $entity_display->setComponent('filename', ['type' => 'file_extension']);
119 $expected = ['png', 'tar', 'gz', ''];
120 foreach (array_values($this->files) as $i => $file) {
121 $build = $entity_display->build($file);
122 $this->assertEqual($expected[$i], $build['filename'][0]['#markup']);
125 $entity_display->setComponent('filename', ['type' => 'file_extension', 'settings' => ['extension_detect_tar' => TRUE]]);
127 $expected = ['png', 'tar', 'tar.gz', ''];
128 foreach (array_values($this->files) as $i => $file) {
129 $build = $entity_display->build($file);
130 $this->assertEqual($expected[$i], $build['filename'][0]['#markup']);
135 * Tests the file_extension field formatter.
137 public function testFormatterFileMime() {
138 $entity_display = EntityViewDisplay::create([
139 'targetEntityType' => 'file',
142 $entity_display->setComponent('filemime', ['type' => 'file_filemime', 'settings' => ['filemime_image' => TRUE]]);
144 foreach (array_values($this->files) as $i => $file) {
145 $build = $entity_display->build($file);
146 $this->assertEqual('image__file_icon', $build['filemime'][0]['#theme']);
147 $this->assertEqual(spl_object_hash($file), spl_object_hash($build['filemime'][0]['#file']));
152 * Tests the file_size field formatter.
154 public function testFormatterFileSize() {
155 $entity_display = EntityViewDisplay::create([
156 'targetEntityType' => 'file',
159 $entity_display->setComponent('filesize', ['type' => 'file_size']);
161 $expected = ['10 bytes', '200 bytes', '39.06 KB', '7.63 MB'];
162 foreach (array_values($this->files) as $i => $file) {
163 $build = $entity_display->build($file);
164 $this->assertEqual($expected[$i], $build['filesize'][0]['#markup']);