X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2Fcore%2Fmodules%2Ffile%2Ftests%2Fsrc%2FKernel%2FFormatter%2FFileEntityFormatterTest.php;fp=web%2Fcore%2Fmodules%2Ffile%2Ftests%2Fsrc%2FKernel%2FFormatter%2FFileEntityFormatterTest.php;h=743da8026ea1274c41eb13a228ecaf0854ce96ea;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/file/tests/src/Kernel/Formatter/FileEntityFormatterTest.php b/web/core/modules/file/tests/src/Kernel/Formatter/FileEntityFormatterTest.php new file mode 100644 index 000000000..743da8026 --- /dev/null +++ b/web/core/modules/file/tests/src/Kernel/Formatter/FileEntityFormatterTest.php @@ -0,0 +1,168 @@ +installEntitySchema('file'); + + $this->files = []; + file_put_contents('public://file.png', str_repeat('t', 10)); + $file = File::create([ + 'uri' => 'public://file.png', + 'filename' => 'file.png', + ]); + $file->save(); + $this->files[] = $file; + + file_put_contents('public://file.tar', str_repeat('t', 200)); + $file = File::create([ + 'uri' => 'public://file.tar', + 'filename' => 'file.tar', + ]); + $file->save(); + $this->files[] = $file; + + file_put_contents('public://file.tar.gz', str_repeat('t', 40000)); + $file = File::create([ + 'uri' => 'public://file.tar.gz', + 'filename' => 'file.tar.gz', + ]); + $file->save(); + $this->files[] = $file; + + file_put_contents('public://file', str_repeat('t', 8000000)); + $file = File::create([ + 'uri' => 'public://file', + 'filename' => 'file', + ]); + $file->save(); + $this->files[] = $file; + } + + /** + * Tests the file_link field formatter. + */ + public function testFormatterFileLink() { + $entity_display = EntityViewDisplay::create([ + 'targetEntityType' => 'file', + 'bundle' => 'file', + ]); + $entity_display->setComponent('filename', ['type' => 'file_link']); + + $build = $entity_display->buildMultiple($this->files)[0]['filename'][0]; + $this->assertEqual('file.png', $build['#title']); + $this->assertEqual(Url::fromUri(file_create_url('public://file.png')), $build['#url']); + } + + /** + * Tests the file_link field formatter. + */ + public function testFormatterFileUri() { + $entity_display = EntityViewDisplay::create([ + 'targetEntityType' => 'file', + 'bundle' => 'file', + ]); + $entity_display->setComponent('uri', ['type' => 'file_uri']); + + $build = $entity_display->buildMultiple($this->files)[0]['uri'][0]; + $this->assertEqual('public://file.png', $build['#markup']); + + $entity_display->setComponent('uri', ['type' => 'file_uri', 'settings' => ['file_download_path' => TRUE]]); + $build = $entity_display->buildMultiple($this->files)[0]['uri'][0]; + $this->assertEqual(file_create_url('public://file.png'), $build['#markup']); + + $entity_display->setComponent('uri', ['type' => 'file_uri', 'settings' => ['file_download_path' => TRUE, 'link_to_file' => TRUE]]); + $build = $entity_display->buildMultiple($this->files)[0]['uri'][0]; + $this->assertEqual(file_create_url('public://file.png'), $build['#title']); + $this->assertEqual(Url::fromUri(file_create_url('public://file.png')), $build['#url']); + } + + /** + * Tests the file_extension field formatter. + */ + public function testFormatterFileExtension() { + $entity_display = EntityViewDisplay::create([ + 'targetEntityType' => 'file', + 'bundle' => 'file', + ]); + $entity_display->setComponent('filename', ['type' => 'file_extension']); + + $expected = ['png', 'tar', 'gz', '']; + foreach (array_values($this->files) as $i => $file) { + $build = $entity_display->build($file); + $this->assertEqual($expected[$i], $build['filename'][0]['#markup']); + } + + $entity_display->setComponent('filename', ['type' => 'file_extension', 'settings' => ['extension_detect_tar' => TRUE]]); + + $expected = ['png', 'tar', 'tar.gz', '']; + foreach (array_values($this->files) as $i => $file) { + $build = $entity_display->build($file); + $this->assertEqual($expected[$i], $build['filename'][0]['#markup']); + } + } + + /** + * Tests the file_extension field formatter. + */ + public function testFormatterFileMime() { + $entity_display = EntityViewDisplay::create([ + 'targetEntityType' => 'file', + 'bundle' => 'file', + ]); + $entity_display->setComponent('filemime', ['type' => 'file_filemime', 'settings' => ['filemime_image' => TRUE]]); + + foreach (array_values($this->files) as $i => $file) { + $build = $entity_display->build($file); + $this->assertEqual('image__file_icon', $build['filemime'][0]['#theme']); + $this->assertEqual(spl_object_hash($file), spl_object_hash($build['filemime'][0]['#file'])); + } + } + + /** + * Tests the file_size field formatter. + */ + public function testFormatterFileSize() { + $entity_display = EntityViewDisplay::create([ + 'targetEntityType' => 'file', + 'bundle' => 'file', + ]); + $entity_display->setComponent('filesize', ['type' => 'file_size']); + + $expected = ['10 bytes', '200 bytes', '39.06 KB', '7.63 MB']; + foreach (array_values($this->files) as $i => $file) { + $build = $entity_display->build($file); + $this->assertEqual($expected[$i], $build['filesize'][0]['#markup']); + } + } + +}