diff --git a/typo3/sysext/backend/Tests/Functional/ViewHelpers/Fixtures/ThumbnailViewHelper/Folders/fileadmin/user_upload/ThumnailViewHelperFalTest.jpg b/typo3/sysext/backend/Tests/Functional/ViewHelpers/Fixtures/ThumbnailViewHelper/Folders/fileadmin/user_upload/ThumnailViewHelperFalTest.jpg new file mode 100644 index 0000000000000000000000000000000000000000..90eb0776aa3b2817217ded8984e16185847d24fb Binary files /dev/null and b/typo3/sysext/backend/Tests/Functional/ViewHelpers/Fixtures/ThumbnailViewHelper/Folders/fileadmin/user_upload/ThumnailViewHelperFalTest.jpg differ diff --git a/typo3/sysext/backend/Tests/Functional/ViewHelpers/Fixtures/ThumbnailViewHelper/fal_image.csv b/typo3/sysext/backend/Tests/Functional/ViewHelpers/Fixtures/ThumbnailViewHelper/fal_image.csv new file mode 100644 index 0000000000000000000000000000000000000000..9e80e700bda7f368df74cbaadbabe42982424e57 --- /dev/null +++ b/typo3/sysext/backend/Tests/Functional/ViewHelpers/Fixtures/ThumbnailViewHelper/fal_image.csv @@ -0,0 +1,32 @@ +"pages" +,"uid","pid","title","sorting","deleted","perms_everybody","slug","media" +,1,0,"Root",128,0,15,"/",1 +"sys_file_storage" +,"uid","pid","name","processingfolder","driver","is_browsable","is_public","is_writable","is_online","configuration" +,1,0,"fileadmin/ (auto-created)","_processed_/","Local",1,1,1,1,"<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes"" ?> +<T3FlexForms> + <data> + <sheet index=""sDEF""> + <language index=""lDEF""> + <field index=""basePath""> + <value index=""vDEF"">fileadmin/</value> + </field> + <field index=""pathType""> + <value index=""vDEF"">relative</value> + </field> + <field index=""caseSensitive""> + <value index=""vDEF"">1</value> + </field> + </language> + </sheet> + </data> +</T3FlexForms>" +"sys_file" +,"uid","pid","tstamp","last_indexed","storage","type","metadata","identifier","identifier_hash","folder_hash","extension","mime_type","name","sha1","size","creation_date","modification_date","missing" +,"1","0","1697814707","1697814707","1","2","0","/user_upload/ThumnailViewHelperFalTest.jpg","a20385b6dd064be08d6930ccb84ef25e8b1684d7","19669f1e02c2f16705ec7587044c66443be70725","jpeg","image/jpeg","ImageViewHelperFalTest.jpg","da5de02721c004987c4d7dcc520ba1eeb24c63ea","1121638","1697814707","1697814707","0" +"sys_file_metadata" +,"uid","pid","tstamp","crdate","sys_language_uid","l10n_parent","l10n_state","l10n_diffsource","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","file","title","width","height","alternative","categories","description" +,"1","0","1697814707","1697814707","0","0","\NULL","","0","0","0","0","1","\NULL","400","300","alt text from metadata","0","\NULL" +"sys_file_reference" +,"uid","pid","tstamp","crdate","deleted","hidden","sys_language_uid","l10n_parent","l10n_state","l10n_diffsource","t3ver_oid","t3ver_wsid","t3ver_state","t3ver_stage","uid_foreign","tablenames","fieldname","sorting_foreign","uid_local","title","alternative","autoplay","crop","description","link" +,"1","1","1697821916","1697821916","0","0","0","0","\NULL","","0","0","0","0","1","pages","media","1","1","title from reference","alt text from reference","0","{""default"":{""cropArea"":{""x"":0,""y"":0,""width"":1,""height"":1},""selectedRatio"":""NaN"",""focusArea"":null},""square"":{""cropArea"":{""x"":0,""y"":0,""width"":0.75,""height"":1},""selectedRatio"":""NaN"",""focusArea"":null}}","\NULL","" diff --git a/typo3/sysext/backend/Tests/Functional/ViewHelpers/ThumbnailViewHelperTest.php b/typo3/sysext/backend/Tests/Functional/ViewHelpers/ThumbnailViewHelperTest.php new file mode 100644 index 0000000000000000000000000000000000000000..5fa368d93bac004895dd8ec996ef63b242e48b56 --- /dev/null +++ b/typo3/sysext/backend/Tests/Functional/ViewHelpers/ThumbnailViewHelperTest.php @@ -0,0 +1,61 @@ +<?php + +declare(strict_types=1); + +/* + * This file is part of the TYPO3 CMS project. + * + * It is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, either version 2 + * of the License, or any later version. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * The TYPO3 project - inspiring people to share! + */ + +namespace TYPO3\CMS\Backend\Tests\Functional\ViewHelpers; + +use PHPUnit\Framework\Attributes\Test; +use TYPO3\CMS\Core\Resource\ResourceFactory; +use TYPO3\CMS\Fluid\Core\Rendering\RenderingContextFactory; +use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase; +use TYPO3Fluid\Fluid\View\TemplateView; + +final class ThumbnailViewHelperTest extends FunctionalTestCase +{ + protected array $pathsToProvideInTestInstance = [ + 'typo3/sysext/backend/Tests/Functional/ViewHelpers/Fixtures/ThumbnailViewHelper/Folders/fileadmin/' => 'fileadmin/', + ]; + + #[Test] + public function sysFileAsImageAttrbuteReturnsExpectedImageTag(): void + { + $this->importCSVDataSet(__DIR__ . '/Fixtures/ThumbnailViewHelper/fal_image.csv'); + $resourceFactory = $this->get(ResourceFactory::class); + $file = $resourceFactory->getFileObject(1); + $context = $this->get(RenderingContextFactory::class)->create(); + $context->getViewHelperResolver()->addNamespace('be', 'TYPO3\\CMS\\Backend\\ViewHelpers'); + $context->getTemplatePaths()->setTemplateSource('<be:thumbnail image="{imageObject}" />'); + $context->getVariableProvider()->add('imageObject', $file); + $expected = '<img src="fileadmin/_processed_/3/7/preview_ImageViewHelperFalTest_252565634e.jpg" width="64" height="64" alt="alt text from metadata" />'; + + self::assertEquals($expected, (new TemplateView($context))->render()); + } + + #[Test] + public function sysFileReferenceAsImageAttrbuteReturnsExpectedImageTag(): void + { + $this->importCSVDataSet(__DIR__ . '/Fixtures/ThumbnailViewHelper/fal_image.csv'); + $resourceFactory = $this->get(ResourceFactory::class); + $file = $resourceFactory->getFileReferenceObject(1); + $context = $this->get(RenderingContextFactory::class)->create(); + $context->getViewHelperResolver()->addNamespace('be', 'TYPO3\\CMS\\Backend\\ViewHelpers'); + $context->getTemplatePaths()->setTemplateSource('<be:thumbnail image="{imageObject}" />'); + $context->getVariableProvider()->add('imageObject', $file); + $expected = '<img src="fileadmin/_processed_/3/7/preview_ImageViewHelperFalTest_252565634e.jpg" width="64" height="64" alt="alt text from metadata" />'; + + self::assertEquals($expected, (new TemplateView($context))->render()); + } +}