Skip to content
Snippets Groups Projects
Commit ee220c2b authored by Patrick Barroca's avatar Patrick Barroca :grin:
Browse files

Merge branch 'hotline#152447_sitotheque_dans_une_collection_vignettes' into 'master'

hotline #152447 : fix album sitotheque thumbnails display

See merge request !4417
parents a78d7fe6 cc1d098a
Branches
Tags
1 merge request!4417hotline #152447 : fix album sitotheque thumbnails display
Pipeline #17057 passed with stage
in 37 minutes and 52 seconds
- correctif #152447 : Magasin de thèmes : Correction de l'affichage des vignettes de la sitothèque basée sur les collections de la bibliothèque numérique
\ No newline at end of file
......@@ -643,17 +643,22 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
return $this->getAlbum()->getBasePath() . self::TILES_DIR . $this->getId();
}
/**
* @return string
*/
public function getThumbnailUrl() {
public function getThumbnailUrl() : string {
return ($thumbnail_url = $this->getThumbnailUrlOrEmpty())
? $thumbnail_url
: $this->_getDefaultThumbnailUrl();
}
public function getThumbnailUrlOrEmpty() : string {
if ($this->hasPoster())
return $this->getLocatedPoster($this->getThumbnailsUrl());
if ($this->isImage())
return $this->getLocatedFile($this->getThumbnailsUrl());
return $this->_getDefaultThumbnailUrl();
return '';
}
......
......@@ -19,18 +19,14 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
class Intonation_Library_View_Wrapper_Website_Smeltery_AlbumMelted extends Intonation_Library_View_Wrapper_Website_Smeltery_MeltedItem {
class Intonation_Library_View_Wrapper_Website_Smeltery_AlbumMelted
extends Intonation_Library_View_Wrapper_Website_Smeltery_MeltedItem {
protected $_resource_cache;
public function getUrl() {
return $this->_withResourceDo(function ($resource) { return $resource->getUrl();});
return $this->_withResourceDo(fn($resource) => $resource->getUrl());
}
......@@ -52,7 +48,9 @@ class Intonation_Library_View_Wrapper_Website_Smeltery_AlbumMelted extends Inton
public function getPreviewImageUrl() {
return $this->_withResourceDo(function ($resource) { return $resource->getThumbnailsUrl();});
return ($album_image = $this->_model->getThumbnailUrl())
? $album_image
: $this->_withResourceDo(fn($resource) => $resource->getThumbnailUrlOrEmpty());
}
......
......@@ -35,7 +35,7 @@ abstract class TemplatesWebsitesWidgetTestCase extends Admin_AbstractControllerT
->setProfile($profile)
->addWidget(Intonation_Library_Widget_Carousel_Websites_Definition::CODE,
Class_Profil::DIV_MAIN,
['rendering' => 'card-description',
['rendering' => 'card-horizontal',
'layout' => 'carousel',
'websites_ids' => '1-2',
'websites_categories' => '8-5',
......@@ -53,176 +53,160 @@ abstract class TemplatesWebsitesWidgetTestCase extends Admin_AbstractControllerT
class TemplatesWebsitesWidgetAsAdminTest extends TemplatesWebsitesWidgetTestCase {
class TemplatesWebsitesEditWidgetAsAdminTest extends TemplatesWebsitesWidgetTestCase {
public function setUp() {
parent::setUp();
$this->dispatch('admin/widget/edit-widget/id/1/id_profil/19');
}
/** @test */
public function websitesIdsInputShouldBePresent() {
$this->dispatch('admin/widget/edit-widget/id/1/id_profil/19');
$this->assertXPath('//div//form//input[@id="websites_ids"]');
}
/** @test */
public function websitesCategoriesInputShouldBePresent() {
$this->dispatch('admin/widget/edit-widget/id/1/id_profil/19');
$this->assertXPath('//div//form//input[@id="websites_categories"]');
}
/** @test */
public function albumsItemsInputShouldBePresent() {
$this->dispatch('admin/widget/edit-widget/id/1/id_profil/19');
$this->assertXPath('//div//form//input[@id="id_items"]');
}
/** @test */
public function albumsCategoriesInputShouldBePresent() {
$this->dispatch('admin/widget/edit-widget/id/1/id_profil/19');
$this->assertXPath('//div//form//input[@id="id_categorie"]');
}
/** @test */
public function titleForAlbumsShouldBePresent() {
$this->dispatch('admin/widget/edit-widget/id/1/id_profil/19');
$this->assertXPath('//div//h3', 'Sélectionner des albums de type sitothèque');
}
/** @test */
public function titleForWebsitesShouldBePresent() {
$this->dispatch('admin/widget/edit-widget/id/1/id_profil/19');
$this->assertXPath('//div//h3', 'Sélectionner des sitothèques');
}
/** @test */
public function addWidgetShouldRenderWebsites() {
$this->dispatch('/admin/widget/add-from-template/id_profil/19');
$this->assertXPathContentContains('//div', 'Sitothèque');
public function orderCreatedAscShouldBePresent() {
$this->assertXPath('//div//select/option', 'Date de création croissant');
}
}
class TemplatesWebsitesAddWidgetAsAdminTest extends TemplatesWebsitesWidgetTestCase {
/** @test */
public function orderCreatedAscShouldBePresent() {
$this->dispatch('admin/widget/edit-widget/id/1/id_profil/19');
$this->assertXPath('//div//select/option', 'Date de création croissant');
public function pagehouldContainsSitotheque() {
$this->dispatch('/admin/widget/add-from-template/id_profil/19');
$this->assertXPathContentContains('//div', 'Sitothèque');
}
}
abstract class TemplatesWebsitesFixturesTestCase extends TemplatesWebsitesWidgetTestCase {
public function setUp() {
parent::setUp();
$this->fixture('Class_Sitotheque',
$this->fixture(Class_Sitotheque::class,
['id' => 1,
'titre' => 'La médiathèque du coin',
'url' => 'https://la-mediatheque-du-coin.org',
]);
$this->fixture('Class_Sitotheque',
$this->fixture(Class_Sitotheque::class,
['id' => 2,
'titre' => 'La médiathèque de la rue',
'url' => 'https://la-mediatheque-de-la-rue.org',
]);
$this->fixture('Class_Sitotheque',
$this->fixture(Class_Sitotheque::class,
['id' => '789',
'titre' => 'La médiathèque de la descente',
'url' => 'https://la-mediatheque-de-la-descente.org',
'id_cat' => '8'
]);
$this->fixture('Class_SitothequeCategorie',
$this->fixture(Class_SitothequeCategorie::class,
['id' => '8',
'libelle' => 'Descente'
]);
$this->fixture('Class_Sitotheque',
$this->fixture(Class_Sitotheque::class,
['id' => '32',
'titre' => 'La médiathèque de la montée',
'url' => 'https://la-mediatheque-de-la-montee.org',
'id_cat' => '5'
]);
$this->fixture('Class_SitothequeCategorie',
$this->fixture(Class_SitothequeCategorie::class,
['id' => '5',
'libelle' => 'Montée'
]);
$site_du_coin =
$this->fixture('Class_Album',
['id' => '4',
'titre' => 'Le site du coin',
'type_doc_id' => Class_TypeDoc::WEBSITE,
'cat_id' => 1,
'status' => Class_Album::STATUS_VALIDATED
]);
$site_du_coin
->addRessource($this->fixture('Class_AlbumRessource',
['id' => 78781,
'titre' => 'Le site du coin',
'url' => 'https://le-site-du-coin.org']))
->assertSave();
$site_de_la_rue =
$this->fixture('Class_Album',
['id' => '19',
'titre' => 'Le site de la rue',
'type_doc_id' => Class_TypeDoc::WEBSITE,
'cat_id' => 1,
'status' => Class_Album::STATUS_VALIDATED
]);
$site_de_la_rue
->addRessource($this->fixture('Class_AlbumRessource',
['id' => 1989,
'titre' => 'Le site de la rue',
'url' => 'https://le-site-de-la-rue.org']))
->assertSave();
$site_de_la_montagne =
$this->fixture('Class_Album',
['id' => '819',
'titre' => 'Le site de la montagne',
'type_doc_id' => Class_TypeDoc::WEBSITE,
'cat_id' => 3,
'status' => Class_Album::STATUS_VALIDATED
]);
$site_de_la_montagne
->addRessource($this->fixture('Class_AlbumRessource',
['id' => 109122,
'titre' => 'Le site de la montagne',
'url' => 'https://le-site-de-la-montagne.org']))
->assertSave();
$this->fixture('Class_AlbumCategorie',
['id' => 3,
'titre' => 'Site de la Terre'
$this->fixture(Class_Album::class,
['id' => '4',
'titre' => 'Le site du coin',
'type_doc_id' => Class_TypeDoc::WEBSITE,
'cat_id' => 1,
'status' => Class_Album::STATUS_VALIDATED,
'ressources' => [$this->fixture(Class_AlbumRessource::class,
['id' => 78781,
'titre' => 'Le site du coin',
'url' => 'https://le-site-du-coin.org',
'poster' => '78781_screenshot.png'])]
]);
$lac = $this->fixture('Class_Album',
['id' => '88934',
'titre' => 'Le site du lac',
'type_doc_id' => Class_TypeDoc::WEBSITE,
'cat_id' => 53,
'status' => Class_Album::STATUS_VALIDATED]);
$lac->addRessource($this->fixture('Class_AlbumRessource',
['id' => 12,
'titre' => 'Le site du lac',
'url' => 'https://le-site-du-lac.org']))
->assertSave();
$this->fixture('Class_AlbumCategorie',
['id' => 53,
'titre' => 'Site de l\'eau'
$this->fixture(Class_Album::class,
['id' => '19',
'titre' => 'Le site de la rue',
'type_doc_id' => Class_TypeDoc::WEBSITE,
'cat_id' => 1,
'status' => Class_Album::STATUS_VALIDATED,
'fichier' => '19_screenshot.png',
'ressources' => [$this->fixture(Class_AlbumRessource::class,
['id' => 1989,
'titre' => 'Le site de la rue',
'url' => 'https://le-site-de-la-rue.org'])]
]);
$this->fixture(Class_Album::class,
['id' => '819',
'titre' => 'Le site de la montagne',
'type_doc_id' => Class_TypeDoc::WEBSITE,
'status' => Class_Album::STATUS_VALIDATED,
'categorie' => $this->fixture(Class_AlbumCategorie::class,
['id' => 3, 'titre' => 'Site de la Terre']),
'ressources' => [$this->fixture(Class_AlbumRessource::class,
['id' => 109122,
'titre' => 'Le site de la montagne',
'url' => 'https://le-site-de-la-montagne.org'])]
]);
$this->fixture(Class_Album::class,
['id' => '88934',
'titre' => 'Le site du lac',
'type_doc_id' => Class_TypeDoc::WEBSITE,
'status' => Class_Album::STATUS_VALIDATED,
'categorie' => $this->fixture(Class_AlbumCategorie::class,
['id' => 53, 'titre' => 'Site de l\'eau']),
'ressources' => [$this->fixture(Class_AlbumRessource::class,
['id' => 12,
'titre' => 'Le site du lac',
'url' => 'https://le-site-du-lac.org'])]]);
}
}
......@@ -230,8 +214,6 @@ abstract class TemplatesWebsitesFixturesTestCase extends TemplatesWebsitesWidget
class TemplatesWebsitesWidgetDispatchTest extends TemplatesWebsitesFixturesTestCase {
public function setUp() {
parent::setUp();
$this->dispatch('opac/index');
......@@ -263,8 +245,15 @@ class TemplatesWebsitesWidgetDispatchTest extends TemplatesWebsitesFixturesTestC
/** @test */
public function leSiteDuCoinShouldBePresent() {
$this->assertXPathContentContains('//div', 'Le site du coin');
public function linkToSiteDuCoinShouldBePresent() {
$this->assertXPathContentContains('//div//a[@href="https://le-site-du-coin.org"]',
'Le site du coin');
}
/** @test */
public function siteDuCoinRessourcePosterShouldBePresent() {
$this->assertXPath('//img[contains(@src, "78781_screenshot.png")]');
}
......@@ -274,12 +263,24 @@ class TemplatesWebsitesWidgetDispatchTest extends TemplatesWebsitesFixturesTestC
}
/** @test */
public function siteDeLaRueAlbumThumbnailShouldBePresent() {
$this->assertXPath('//img[contains(@src, "19_screenshot.png")]');
}
/** @test */
public function leSiteDeLaMontagneShouldBePresent() {
$this->assertXPathContentContains('//div', 'Le site de la montagne');
}
/** @test */
public function siteDeLaMontagneShouldNotHaveDefaultResourcesThumbnail() {
$this->assertNotXPath('//img[contains(@alt, "site de la montagne")][contains(@src, "/earth-logo.jpg")]');
}
/** @test */
public function leSiteDuLacShouldBePresent() {
$this->assertXPathContentContains('//div', 'Le site du lac');
......@@ -299,7 +300,7 @@ class TemplatesWebsitesControllerTest extends AbstractControllerTestCase {
$this->_buildTemplateProfil(['id' => '19',
'template' => 'MUSCLE']);
$this->fixture('Class_Sitotheque',
$this->fixture(Class_Sitotheque::class,
['id' => '32',
'titre' => 'La médiathèque de la montée',
'url' => 'https://la-mediatheque-de-la-montee.org',
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment