diff --git a/VERSIONS_HOTLINE/155100 b/VERSIONS_HOTLINE/155100 new file mode 100644 index 0000000000000000000000000000000000000000..ea910f1b03d192f1406256026029ca8f8a1ab94c --- /dev/null +++ b/VERSIONS_HOTLINE/155100 @@ -0,0 +1 @@ + - correctif #155100 : Magasin de thèmes : correction de la génération des URLs des images. \ No newline at end of file diff --git a/library/Class/Article.php b/library/Class/Article.php index 8b449fb3820afdc62d2653b2b60e8550acc69f41..a88a6651cdd52e7e3877f2e35918164525513bd1 100644 --- a/library/Class/Article.php +++ b/library/Class/Article.php @@ -634,6 +634,12 @@ class Class_Article extends Storm_Model_Abstract { } + public function getFirstImageRelativeURL() : string { + return $this->withFirstImageDo(function($url) {return Class_Url::relative($url);}); + } + + + public function getFirstImagePath() { return $this->withFirstImageDo(function($url) {return $this->getPathFromURL($url);}); } diff --git a/library/Class/FileManager.php b/library/Class/FileManager.php index 8b43c0a5fe80f80de4ee566aa2bf6153656c7224..359a534feb1ed07424bd0f13a14c54555f9bf7b4 100644 --- a/library/Class/FileManager.php +++ b/library/Class/FileManager.php @@ -588,6 +588,11 @@ class Class_FileManager extends Class_Entity { } + public function getRelativeUrl() : string { + return Class_Url::relative($this->getPath(), null, true); + } + + public function getRealpath() { return $this->_attribs['Realpath']; } diff --git a/library/templates/Herisson/Library/ProfilePatcher.php b/library/templates/Herisson/Library/ProfilePatcher.php index e511ecb95d0545037c2d020f3d6cab0263b61eca..7c5902c62c05f7b8fbf3a19a25c00d558cf5cb10 100644 --- a/library/templates/Herisson/Library/ProfilePatcher.php +++ b/library/templates/Herisson/Library/ProfilePatcher.php @@ -547,7 +547,7 @@ class Herisson_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher 'position_fixed_top_left', 'no_border_widget', 'no_border_radius'], - 'image' => Class_Url::absolute('/library/templates/Herisson/Assets/images/herisson_logo.png'), + 'image' => Class_Url::relative('/library/templates/Herisson/Assets/images/herisson_logo.png'), 'link' => $this->_('/accueil'), $this->_template->withNameSpace('width_xsmall') => 4, $this->_template->withNameSpace('width_medium') => 2, @@ -585,7 +585,7 @@ class Herisson_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher Class_Profil::DIV_BANNIERE, array_merge(['titre' => $this->_('Image banniere'), $this->_template->withNameSpace('styles_pack') => $this->_style_pack_image_banniere->getId(), - 'image' => Class_Url::absolute('/library/templates/Herisson/Assets/images/banniere_herisson.jpg'), + 'image' => Class_Url::relative('/library/templates/Herisson/Assets/images/banniere_herisson.jpg'), 'link' => $this->_('/accueil'), $this->_template->withNameSpace('width_xsmall') => 12], $this->_disable_widget_template)) @@ -698,7 +698,7 @@ class Herisson_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher 'm-auto', 'py-3', 'align-items-center'], - 'image' => Class_Url::absolute('/library/templates/Herisson/Assets/images/herisson_logo.png'), + 'image' => Class_Url::relative('/library/templates/Herisson/Assets/images/herisson_logo.png'), 'link' => $this->_('/accueil'), $this->_template->withNameSpace('width_xsmall') => 8, $this->_template->withNameSpace('width_medium') => 5, diff --git a/library/templates/Intonation/Library/View/Wrapper/Article.php b/library/templates/Intonation/Library/View/Wrapper/Article.php index e2a68ea2310a11d5bb32ff4533b12948614d580a..2176bcada8d97e07317ba926f6d307a26e17efba 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Article.php +++ b/library/templates/Intonation/Library/View/Wrapper/Article.php @@ -70,7 +70,7 @@ class Intonation_Library_View_Wrapper_Article extends Intonation_Library_View_Wr public function getPicture() { - return $this->_model->getFirstImageAbsoluteURL(); + return $this->_model->getFirstImageRelativeURL(); } diff --git a/library/templates/Intonation/Library/View/Wrapper/User.php b/library/templates/Intonation/Library/View/Wrapper/User.php index baa3dc0bbd02e2f1181c464b875a3e13164a17ee..560ee740ce48393e820ad77c1265d8fc59e8db5d 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User.php +++ b/library/templates/Intonation/Library/View/Wrapper/User.php @@ -58,7 +58,7 @@ class Intonation_Library_View_Wrapper_User extends Intonation_Library_View_Wrapp if (!$img) return ''; - return Class_Url::absolute($img); + return Class_Url::relative($img); } diff --git a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/ChangeImage.php b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/ChangeImage.php index ccf525fe1b85ec9b2522608015d3b8221ce3a3df..ddbb42cc55c1b48aa658ad16b391bcb4cdb49f49 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/ChangeImage.php +++ b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/ChangeImage.php @@ -79,7 +79,7 @@ class Intonation_Library_View_Wrapper_User_RichContent_ChangeImage extends Inton protected function _cardify($image, $current) { - $url = $image->getUrl(); + $url = $image->getRelativeUrl(); $selected = ($current == $url) ? ' border border-primary disabled shadow-lg selected btn btn-primary' : ''; return $this->_view->div(['class' => 'card shadow-sm' . $selected], diff --git a/library/templates/Intonation/Library/Widget/Accessibility/View.php b/library/templates/Intonation/Library/Widget/Accessibility/View.php index 3dc64653f26efcdcae0a9d49aa8208882ca4840a..6bcfbfbb83de1ec24c3613cf1387961e5f04b059 100644 --- a/library/templates/Intonation/Library/Widget/Accessibility/View.php +++ b/library/templates/Intonation/Library/Widget/Accessibility/View.php @@ -132,7 +132,7 @@ class Intonation_Library_Widget_Accessibility_View extends Zendafi_View_Helper_A 'title' => $option->getText(), 'data-name' => $file]); - $icon = $this->view->tagImg(Class_Url::absolute(sprintf('public/opac/images/buttons/%s.png', + $icon = $this->view->tagImg(Class_Url::relative(sprintf('public/opac/images/buttons/%s.png', $option->getIcon()))); $attribs = ['data-cookie-key' => $option->getCookieKey(), @@ -140,7 +140,7 @@ class Intonation_Library_Widget_Accessibility_View extends Zendafi_View_Helper_A 'onclick' => '']; if ($file) - $attribs['data-stylesheet-url'] = Class_Url::absolute('/public/opac/css/' . $file . '.css'); + $attribs['data-stylesheet-url'] = Class_Url::relative('/public/opac/css/' . $file . '.css'); if ($option->getDefaultStyle()) $attribs['data-stylesheet-default'] = 1; @@ -163,14 +163,14 @@ class Intonation_Library_Widget_Accessibility_View extends Zendafi_View_Helper_A return $this->view->button((new Class_Button) - ->setImage($this->view->tagImg(Class_Url::absolute('public/opac/images/buttons/default_font_size.png'))) + ->setImage($this->view->tagImg(Class_Url::relative('public/opac/images/buttons/default_font_size.png'))) ->setText($this->_('Réinitialiser la police')) ->setAttribs(['class' => 'accessibility default_font_size', 'data-font-size' => 'default', 'onclick' => ''])) . $this->view->button((new Class_Button) - ->setImage($this->view->tagImg(Class_Url::absolute('public/opac/images/buttons/decrease_font_size.png'))) + ->setImage($this->view->tagImg(Class_Url::relative('public/opac/images/buttons/decrease_font_size.png'))) ->setText($this->_('Diminuer la police')) ->setAttribs(['class' => 'accessibility', 'data-font-size' => 'decrease_font_size', @@ -186,7 +186,7 @@ class Intonation_Library_Widget_Accessibility_View extends Zendafi_View_Helper_A 'data-font-size' => 'current_font_size']) . $this->view->button((new Class_Button) - ->setImage($this->view->tagImg(Class_Url::absolute('public/opac/images/buttons/increase_font_size.png'))) + ->setImage($this->view->tagImg(Class_Url::relative('public/opac/images/buttons/increase_font_size.png'))) ->setText($this->_('Augmenter la police')) ->setAttribs(['class' => 'accessibility', 'data-font-size' => 'increase_font_size', diff --git a/library/templates/Intonation/Library/Widget/Carousel/LibraryNovelties/View.php b/library/templates/Intonation/Library/Widget/Carousel/LibraryNovelties/View.php index dd365af24c1e703758c716163a9e36754f44a329..a26ac609b48381aba279700ce8ac92ed510b66ec 100644 --- a/library/templates/Intonation/Library/Widget/Carousel/LibraryNovelties/View.php +++ b/library/templates/Intonation/Library/Widget/Carousel/LibraryNovelties/View.php @@ -62,7 +62,7 @@ class Intonation_Library_Widget_Carousel_LibraryNovelties_View extends Intonatio protected function _getRSSUrl() { $profile = Class_Profil::getCurrentProfil(); - return Class_Url::absolute(['module' => 'opac', + return Class_Url::relative(['module' => 'opac', 'controller' => 'rss', 'action' => 'library-novelties', 'id' => $this->_extractLibraryIdFromSettings(), diff --git a/library/templates/Intonation/Library/Widget/Image/View.php b/library/templates/Intonation/Library/Widget/Image/View.php index ec5c178bde734964e64af10ae6de270ad43acf2d..0cde13cad7b3ac173c048122c575bddc7c9b2489 100644 --- a/library/templates/Intonation/Library/Widget/Image/View.php +++ b/library/templates/Intonation/Library/Widget/Image/View.php @@ -35,11 +35,11 @@ class Intonation_Library_Widget_Image_View extends Zendafi_View_Helper_Accueil_B $files = Class_FileManager::files(USERFILES . '/bannieres/'); $files = array_filter($files, function($file) { return $file->isImage();}); $file = reset($files); - $image = $file ? $file->getUrl() : ''; + $image = $file ? $file->getRelativeUrl() : ''; } $img = $image - ? $this->view->tagImg(Class_Url::absolute($image), + ? $this->view->tagImg(Class_Url::relative($image), ['class' => 'image_widget', 'alt' => $this->_settings->getImageAlt()]) : ''; diff --git a/library/templates/Muscle/Library/ProfilePatcher.php b/library/templates/Muscle/Library/ProfilePatcher.php index e4f59f48661e626e95c99c4595e8ae15ac64dae8..7b99e7ff6e3252e5fc27d70fac283914faa053ef 100644 --- a/library/templates/Muscle/Library/ProfilePatcher.php +++ b/library/templates/Muscle/Library/ProfilePatcher.php @@ -292,7 +292,7 @@ class Muscle_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher { ->_addWidget(Intonation_Library_Widget_Image_Definition::CODE, Class_Profil::DIV_BANNIERE, ['titre' => $this->_('Logo du réseau'), - 'image' => Class_Url::absolute('/library/templates/Muscle/Assets/images/logo.png'), + 'image' => Class_Url::relative('/library/templates/Muscle/Assets/images/logo.png'), 'link' => '', $this->_template->withNameSpace('styles_pack') => $this->_no_border_no_radius_no_shadow_no_background_content_center->getId(), $this->_nameSpaced('responsive_pack') => $this->_full_width_responsive_pack->getId(), diff --git a/library/templates/Polygone/Library/ProfilePatcher.php b/library/templates/Polygone/Library/ProfilePatcher.php index 59e02a5e03e8aa5f27e760863ba85fffa4d3921a..10e572c8c73f659e9c9be9e3494c90353ee29b7f 100644 --- a/library/templates/Polygone/Library/ProfilePatcher.php +++ b/library/templates/Polygone/Library/ProfilePatcher.php @@ -262,7 +262,7 @@ class Polygone_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher 'menus' => [ ['type_menu' => 'ACCUEIL', 'libelle' => $this->_('Le Polygone'), - 'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/logo_footer.png'), + 'picto' => Class_Url::relative('/library/templates/Polygone/Assets/images/logo_footer.png'), 'use_profil' => $this->_profile_id], ['type_menu' => 'URL', @@ -289,16 +289,16 @@ class Polygone_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher 'menus' => [ ['type_menu' => 'URL', 'libelle' => $this->_('Se documenter'), - 'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/se_documenter.jpg'), + 'picto' => Class_Url::relative('/library/templates/Polygone/Assets/images/se_documenter.jpg'), 'url' => ''], ['type_menu' => 'URL', 'libelle' => $this->_('S\'exercer'), - 'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/s_exercer.jpg'), + 'picto' => Class_Url::relative('/library/templates/Polygone/Assets/images/s_exercer.jpg'), 'url' => ''], ['type_menu' => 'URL', - 'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/se_divertir.jpg'), + 'picto' => Class_Url::relative('/library/templates/Polygone/Assets/images/se_divertir.jpg'), 'libelle' => $this->_('Se divertir'), 'url' => ''], ] @@ -356,7 +356,7 @@ class Polygone_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher Class_Profil::DIV_BANNIERE, ['titre' => $this->_('Logo du réseau'), 'boite' => ['no_background'], - 'image' => Class_Url::absolute('/library/templates/Polygone/Assets/images/logo.png'), + 'image' => Class_Url::relative('/library/templates/Polygone/Assets/images/logo.png'), 'link' => '', $this->_template->withNameSpace('styles_pack') => $this->_no_border_no_radius_no_shadow_content_center->getId(), $this->_nameSpaced('responsive_pack') => $this->_half_and_quarter_responsive_pack->getId(), @@ -532,7 +532,7 @@ class Polygone_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher ->_addWidget(Intonation_Library_Widget_Image_Definition::CODE, Class_Profil::DIV_FOOTER, ['titre' => $this->_('Logo du réseau'), - 'image' => Class_Url::absolute('/library/templates/Polygone/Assets/images/logo_footer.png'), + 'image' => Class_Url::relative('/library/templates/Polygone/Assets/images/logo_footer.png'), 'link' => '', $this->_template->withNameSpace('styles_pack') => $this->_no_border_no_radius_no_shadow->getId(), $this->_template->withNameSpace('width_xsmall') => 2, diff --git a/library/templates/TerreDuMilieu/Library/ProfilePatcher.php b/library/templates/TerreDuMilieu/Library/ProfilePatcher.php index 398d8d77ee42f6796d851b2e0de8b046a9593f6e..7263ed47fe32fec528863756aa48857715457088 100644 --- a/library/templates/TerreDuMilieu/Library/ProfilePatcher.php +++ b/library/templates/TerreDuMilieu/Library/ProfilePatcher.php @@ -217,7 +217,7 @@ class TerreDuMilieu_Library_ProfilePatcher extends Intonation_Library_ProfilePat ['type_menu' => 'URL', 'libelle' => $this->_('France Connect'), 'url' => 'https://fcp.integ01.dev-franceconnect.fr/', - 'picto' => Class_Url::absolute('/library/templates/TerreDuMilieu/Assets/images/franceconnect.jpg')] + 'picto' => Class_Url::relative('/library/templates/TerreDuMilieu/Assets/images/franceconnect.jpg')] ] ]); @@ -228,7 +228,7 @@ class TerreDuMilieu_Library_ProfilePatcher extends Intonation_Library_ProfilePat ['type_menu' => 'URL', 'libelle' => $this->_('Bokeh'), 'url' => '', - 'picto' => Class_Url::absolute('/library/templates/TerreDuMilieu/Assets/images/bokeh.png')], + 'picto' => Class_Url::relative('/library/templates/TerreDuMilieu/Assets/images/bokeh.png')], ['type_menu' => 'URL', 'libelle' => $this->_('Facebook'), @@ -320,7 +320,7 @@ class TerreDuMilieu_Library_ProfilePatcher extends Intonation_Library_ProfilePat Class_Profil::DIV_BANNIERE, ['titre' => $this->_('Logo du réseau'), 'boite' => ['justify-content-center', 'admin_tools_invert_colors'], - 'image' => Class_Url::absolute('/library/templates/TerreDuMilieu/Assets/images/nav.png'), + 'image' => Class_Url::relative('/library/templates/TerreDuMilieu/Assets/images/nav.png'), 'link' => '', $this->_template->withNameSpace('styles_pack') => $this->_no_border_no_radius_no_shadow_no_background->getId(), $this->_template->withNameSpace('responsive_pack') => $this->_full_width_responsive_pack->getId(), diff --git a/tests/scenarios/Templates/HerissonTemplateTest.php b/tests/scenarios/Templates/HerissonTemplateTest.php index 5f0fa35e1dbcd4976325fb839a8d5d528ce4f16f..a2b8f0d016c8c6ebe73f1532b2ff444d55e17043 100644 --- a/tests/scenarios/Templates/HerissonTemplateTest.php +++ b/tests/scenarios/Templates/HerissonTemplateTest.php @@ -172,6 +172,14 @@ class HerissonTemplateIndexTest extends HerissonTemplateTestCase { public function navigationAgendaEntryShouldHaveUrlAgenda() { $this->assertXPathContentContains('//body//header//div[contains(@class, "boite nav")]//li//a[contains(@href,"/agenda")]', 'Agenda'); } + + + /** @test */ + public function logoFooterUrlShouldBeRelative() { + $this->assertXPath('//footer//img[@src="' + . Class_Url::relative('/library/templates/Herisson/Assets/images/herisson_logo.png') + . '"]'); + } } diff --git a/tests/scenarios/Templates/PolygoneTemplateTest.php b/tests/scenarios/Templates/PolygoneTemplateTest.php index b601b52a965e367985affd64d081e886b3fe9853..054cbe9adeca8ee4d69e5ddc7e9b61ae4cfd805b 100644 --- a/tests/scenarios/Templates/PolygoneTemplateTest.php +++ b/tests/scenarios/Templates/PolygoneTemplateTest.php @@ -184,6 +184,14 @@ class PolygoneTemplateOpacIndexWithUserAgentTest extends PolygoneTemplateTestCas public function pageShouldBeAccessible() { $this->assertAccessible(false); } + + + /** @test */ + public function logoFooterUrlShouldBeRelative() { + $this->assertXPath('//footer//img[@src="' + . Class_Url::relative('/library/templates/Polygone/Assets/images/logo_footer.png') + . '"]'); + } } diff --git a/tests/scenarios/Templates/TemplatesAbonneTest.php b/tests/scenarios/Templates/TemplatesAbonneTest.php index a2e74776abf86ecfdf4e04f66ffe76fb3165f0a9..2e2bf5eda565ca1e08fc61361e0fac6c189dac56 100644 --- a/tests/scenarios/Templates/TemplatesAbonneTest.php +++ b/tests/scenarios/Templates/TemplatesAbonneTest.php @@ -1335,7 +1335,10 @@ class TemplatesAbonneDispatchAccountTest extends TemplatesIntonationAccountTestC /** @test */ public function paulProfileImageShouldBeReadBlack() { - $this->assertXpath('//img[contains(@src, "/public/opac/images/abonnes/read_black.png")]'); + $this->assertXpath('//img[@src="' + . Class_Url::relative("/public/opac/images/abonnes/read_black.png") + . '"]', + $this->_response->getBody()); } diff --git a/tests/scenarios/Templates/TemplatesLibraryNoveltiesTabTest.php b/tests/scenarios/Templates/TemplatesLibraryNoveltiesTabTest.php index b31fd213258037fc5168b183b3f319f760b28e97..535c47e6d3991ef362a78df05e3485dd0495a428 100644 --- a/tests/scenarios/Templates/TemplatesLibraryNoveltiesTabTest.php +++ b/tests/scenarios/Templates/TemplatesLibraryNoveltiesTabTest.php @@ -371,7 +371,7 @@ class TemplatesLibraryNoveltiesTabWidgetShowFooterTest extends TemplatesLibraryN /** @test */ public function rssLinkShouldUseCacheKey() { - $this->assertXPath('//div//a[contains(@href, "/rss/library-novelties/id/1/language/fr/id_profil/23")]'); + $this->assertXPath('//div//a[@href="/rss/library-novelties/id/1/language/fr/id_profil/23"]'); } } diff --git a/tests/scenarios/Templates/TemplatesProfileWithPageTest.php b/tests/scenarios/Templates/TemplatesProfileWithPageTest.php index feb038f8c3702879238fc576041a7d7a14fde9f3..8577fe6e440a1c14c9fd1c94e9fc8ab6dae06007 100644 --- a/tests/scenarios/Templates/TemplatesProfileWithPageTest.php +++ b/tests/scenarios/Templates/TemplatesProfileWithPageTest.php @@ -79,7 +79,7 @@ class TemplatesProfileWithPageTest extends AbstractControllerTestCase { /** @test */ public function agendaPageHeaderShouldContainsWidgetImageWithWeDontCareDotJPG() { $this->dispatch('/agenda'); - $this->assertXPath('//header//div[contains(@class, "boite image")]//img[@src="' . Class_Url::absolute('wedontcare.jpg') . '"]'); + $this->assertXPath('//header//div[contains(@class, "boite image")]//img[@src="' . Class_Url::relative('wedontcare.jpg') . '"]'); } diff --git a/tests/scenarios/Templates/TerreDuMilieuTemplateTest.php b/tests/scenarios/Templates/TerreDuMilieuTemplateTest.php index 7de559ed2277deae0aa256bb003b1c9ecf6038ac..25df3a9c23c85741d86b2c999e03a018a40f44da 100644 --- a/tests/scenarios/Templates/TerreDuMilieuTemplateTest.php +++ b/tests/scenarios/Templates/TerreDuMilieuTemplateTest.php @@ -103,6 +103,14 @@ class TerreDuMilieuTemplateProfilePatcherTest extends TerreDuMilieuTemplateTestC . '//a[@target="_blank"][contains(@href, "/admin/file-manager")]', 'Explorateur de fichiers'); } + + + /** @test */ + public function logoHeaderUrlShouldBeRelative() { + $this->assertXPath('//header//img[@src="' + . Class_Url::relative('/library/templates/TerreDuMilieu/Assets/images/nav.png') + . '"]'); + } } diff --git a/tests/scenarios/Widgets/WidgetsTest.php b/tests/scenarios/Widgets/WidgetsTest.php index 3de64bc5b8cdc420e6fdeef6904e30e1a642095b..1cd9b9ae140b375280a156c57de3174ecd7d4bff 100644 --- a/tests/scenarios/Widgets/WidgetsTest.php +++ b/tests/scenarios/Widgets/WidgetsTest.php @@ -639,3 +639,72 @@ class WidgetsEditAlbumsWidgetTest extends WidgetsSimpleTestCase { $this->assertXPath('//button[text()="Valider"]'); } } + + + + +class WidgetsCacheTest extends AbstractControllerTestCase { + public function setUp() { + parent::setUp(); + ZendAfi_Auth::getInstance()->clearIdentity(); + + Class_AdminVar::set('CACHE_ACTIF', 1); + Storm_Cache::beVolatile(); + Storm_Cache::setSeed('test'); + Storm_Cache::getDefaultZendCache()->save('seed', 'test'); + + $profile = $this->_buildTemplateProfil(['id' => 877987]); + + (new Muscle_Template)->tryOn($profile); + + $this + ->onLoaderOfModel(Class_Article::class) + ->whenCalled('getArticlesByPreferences') + ->answers([$this->fixture(Class_Article::class, + ['id' => 7, + 'titre' => 'Parlez-vous français ?', + 'description' => '<img src="/userfiles/test.png"></img>La description s\'arrête ici et pas plus loin.', + 'contenu' => '<p>Une b...</p>', + 'categorie' => $this->fixture(Class_ArticleCategorie::class, + ['id' => 3, + 'libelle' => 'Animations langues']) + ]) + ]); + + $this->dispatch('/'); + } + + + /** @test */ + public function pageShouldContainsImgWithRelativeUrlTestPng() { + $this->assertXPath('//body//div//img[@src="' + . Class_Url::relative('/userfiles/test.png') + . '"]', + $this->_response->getBody()); + } + + + /** @test */ + public function imageUrlShouldBeRelativeInCache() { + $this->assertContains('<img src="' . Class_Url::relative('/userfiles/test.png'), + Storm_Cache::getDefaultZendCache() + ->load('seed_cd8b07c4c219ffe0566ca53bcecd90c2')); + } + + + /** @test */ + public function logoImgUrlShouldBeRelative() { + $this->assertXPath('//body//img[@class="image_widget img-fluid"][@src="' + . Class_Url::relative('library/templates/Muscle/Assets/images/logo.png') + . '"]'); + } + + + + /** @test */ + public function accessibilityIconsUrlShouldBeRelative() { + $this->assertXPath('//body//div[contains(@id, "accessibility_widget_tools_")]//img[@src="' + . Class_Url::relative('public/opac/images/buttons/increase_font_size.png') + . '"]'); + } +} \ No newline at end of file