Pull merge.
[yaffs-website] / web / core / modules / file / tests / src / Kernel / Formatter / FileEntityFormatterTest.php
1 <?php
2
3 namespace Drupal\Tests\file\Kernel\Formatter;
4
5 use Drupal\Core\Entity\Entity\EntityViewDisplay;
6 use Drupal\Core\Url;
7 use Drupal\file\Entity\File;
8 use Drupal\KernelTests\KernelTestBase;
9
10 /**
11  * Tests the default file formatter.
12  *
13  * @group field
14  */
15 class FileEntityFormatterTest extends KernelTestBase {
16
17   /**
18    * {@inheritdoc}
19    */
20   public static $modules = ['file', 'user'];
21
22   /**
23    * The files.
24    *
25    * @var array
26    */
27   protected $files;
28
29   /**
30    * {@inheritdoc}
31    */
32   protected function setUp() {
33     parent::setUp();
34
35     $this->installEntitySchema('file');
36
37     $this->files = [];
38     file_put_contents('public://file.png', str_repeat('t', 10));
39     $file = File::create([
40       'uri' => 'public://file.png',
41       'filename' => 'file.png',
42     ]);
43     $file->save();
44     $this->files[] = $file;
45
46     file_put_contents('public://file.tar', str_repeat('t', 200));
47     $file = File::create([
48       'uri' => 'public://file.tar',
49       'filename' => 'file.tar',
50     ]);
51     $file->save();
52     $this->files[] = $file;
53
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',
58     ]);
59     $file->save();
60     $this->files[] = $file;
61
62     file_put_contents('public://file', str_repeat('t', 8000000));
63     $file = File::create([
64       'uri' => 'public://file',
65       'filename' => 'file',
66     ]);
67     $file->save();
68     $this->files[] = $file;
69   }
70
71   /**
72    * Tests the file_link field formatter.
73    */
74   public function testFormatterFileLink() {
75     $entity_display = EntityViewDisplay::create([
76       'targetEntityType' => 'file',
77       'bundle' => 'file',
78     ]);
79     $entity_display->setComponent('filename', ['type' => 'file_link']);
80
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']);
84   }
85
86   /**
87    * Tests the file_link field formatter.
88    */
89   public function testFormatterFileUri() {
90     $entity_display = EntityViewDisplay::create([
91       'targetEntityType' => 'file',
92       'bundle' => 'file',
93     ]);
94     $entity_display->setComponent('uri', ['type' => 'file_uri']);
95
96     $build = $entity_display->buildMultiple($this->files)[0]['uri'][0];
97     $this->assertEqual('public://file.png', $build['#markup']);
98
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']);
102
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']);
107   }
108
109   /**
110    * Tests the file_extension field formatter.
111    */
112   public function testFormatterFileExtension() {
113     $entity_display = EntityViewDisplay::create([
114       'targetEntityType' => 'file',
115       'bundle' => 'file',
116     ]);
117     $entity_display->setComponent('filename', ['type' => 'file_extension']);
118
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']);
123     }
124
125     $entity_display->setComponent('filename', ['type' => 'file_extension', 'settings' => ['extension_detect_tar' => TRUE]]);
126
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']);
131     }
132   }
133
134   /**
135    * Tests the file_extension field formatter.
136    */
137   public function testFormatterFileMime() {
138     $entity_display = EntityViewDisplay::create([
139       'targetEntityType' => 'file',
140       'bundle' => 'file',
141     ]);
142     $entity_display->setComponent('filemime', ['type' => 'file_filemime', 'settings' => ['filemime_image' => TRUE]]);
143
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']));
148     }
149   }
150
151   /**
152    * Tests the file_size field formatter.
153    */
154   public function testFormatterFileSize() {
155     $entity_display = EntityViewDisplay::create([
156       'targetEntityType' => 'file',
157       'bundle' => 'file',
158     ]);
159     $entity_display->setComponent('filesize', ['type' => 'file_size']);
160
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']);
165     }
166   }
167
168 }