diff --git a/application/modules/admin/controllers/AlbumController.php b/application/modules/admin/controllers/AlbumController.php index 20c0e519ee7e1cfcf15968a4d43cdce14328329e..24157466249a4fe4b9d810495890a0782dccbc7e 100644 --- a/application/modules/admin/controllers/AlbumController.php +++ b/application/modules/admin/controllers/AlbumController.php @@ -691,5 +691,17 @@ class Admin_AlbumController extends ZendAfi_Controller_Action { return $this->renderScript('admin/listViewMode.phtml'); } + + + public function resourceDeletePosterAction() { + $this->_helper->getHelper('viewRenderer')->setNoRender(true); + + if (!$resource = Class_AlbumRessource::find((int)$this->_getParam('id'))) { + $this->_redirect('admin/album'); + return; + } + + $resource->deletePoster()->save(); + $this->_redirect('admin/album/edit_ressource/id/' . $resource->getId()); + } } -?> \ No newline at end of file diff --git a/library/Class/AlbumRessource.php b/library/Class/AlbumRessource.php index 73a8ab6a2a7f0ba7713843437f33caf5f19fb50b..e6152e2b0339abd24f6478cf44a951d9a5060177 100644 --- a/library/Class/AlbumRessource.php +++ b/library/Class/AlbumRessource.php @@ -36,7 +36,7 @@ class AlbumRessourceLoader extends Storm_Model_Loader { class Class_AlbumRessource extends Storm_Model_Abstract { - use Trait_Translator; + use Trait_Translator, Trait_StaticFileSystem; const BASE_PATH = 'media/'; const TILES_DIR = 'tiles/'; @@ -194,19 +194,19 @@ class Class_AlbumRessource extends Storm_Model_Abstract { if (!$upload->handleUpload($this->getOriginalsPath(), $this->getId())) { $this->delete(); - return array('success' => 'false', 'error' => $upload->getError()); + return ['success' => 'false', 'error' => $upload->getError()]; } $this->setFichier($upload->getSavedFileName()); if (!$this->createThumbnail()) { $this->delete(); - return array('success' => 'false', 'error' => reset($this->getErrors())); + return ['success' => 'false', 'error' => reset($this->getErrors())]; } $this->save(); - return array('success' => 'true'); + return ['success' => 'true']; } @@ -214,24 +214,19 @@ class Class_AlbumRessource extends Storm_Model_Abstract { * @return bool */ public function receiveFiles() { - if ($this->receiveFile() - && $this->receivePoster()) { - return $this->save(); - } - - return false; + return ($this->receiveFile() && $this->receivePoster()) + ? $this->save() : false; } public function receivePoster() { $oldThumbnail = $this->getThumbnailPath(); + $file_system = $this->getFileSystem(); // fichier non requis if (!$this->isFileUploadedForName('poster')) { if ($this->isImage()) { - if (file_exists($oldThumbnail)) - @unlink($oldThumbnail); - + $this->unlink($oldThumbnail); return $this->createThumbnail(); } @@ -250,12 +245,10 @@ class Class_AlbumRessource extends Storm_Model_Abstract { if ('' != $oldPoster && $oldPoster != $this->getPosterPath() - && file_exists($oldPoster)) - @unlink($oldPoster); - - if (file_exists($oldThumbnail)) - @unlink($oldThumbnail); + && $file_system->file_exists($oldPoster)) + @$file_system->unlink($oldPoster); + $this->unlink($oldThumbnail); return $this->createThumbnail(); } @@ -281,10 +274,10 @@ class Class_AlbumRessource extends Storm_Model_Abstract { $oldFileName = $this->getFichier(); $oldOriginal = $this->getOriginalPath(); + $file_system = $this->getFileSystem(); if ($fileName != $oldFileName) { $this->setFichier($fileName); - if (file_exists($oldOriginal)) - @unlink($oldOriginal); + $this->unlink($oldOriginal); } return true; @@ -494,8 +487,10 @@ class Class_AlbumRessource extends Storm_Model_Abstract { self::$_thumbnail_dir_checked = true; - if (!file_exists(USERFILESPATH.'/temp')) - mkdir(USERFILESPATH.'/temp'); + $file_system = static::getFileSystem(); + + if (!$file_system->file_exists(USERFILESPATH.'/temp')) + $file_system->mkdir(USERFILESPATH.'/temp'); return; } @@ -519,7 +514,8 @@ class Class_AlbumRessource extends Storm_Model_Abstract { public function isThumbnailExistsForParams($params) { - return file_exists($this->getThumbnailFilePathForParams($params)); + return $this->getFileSystem() + ->file_exists($this->getThumbnailFilePathForParams($params)); } @@ -551,12 +547,13 @@ class Class_AlbumRessource extends Storm_Model_Abstract { */ public function _resizeAndCropThumbnailTo($filepath, $params) { $image = $this->getImage(); - $resize_params = array_merge(array('width' => $image->getImageWidth(), - 'height' => 0, - 'crop_left' => 0, - 'crop_right' => 0, - 'crop_bottom' => 0, - 'crop_top' => 0), $params); + $resize_params = array_merge(['width' => $image->getImageWidth(), + 'height' => 0, + 'crop_left' => 0, + 'crop_right' => 0, + 'crop_bottom' => 0, + 'crop_top' => 0], + $params); $image->cropImage($image->getImageWidth() - $resize_params['crop_left'] - $resize_params['crop_right'], @@ -633,7 +630,6 @@ class Class_AlbumRessource extends Storm_Model_Abstract { return Class_Profil::getCurrentProfil() ->getUrlImage($image); - } @@ -665,10 +661,9 @@ class Class_AlbumRessource extends Storm_Model_Abstract { * @return string */ public function getOriginalUrl() { - if ($this->hasUrl()) - return $this->getUrl(); - - return $this->getOriginalsUrl() . rawurlencode($this->getFichier()); + return $this->hasUrl() + ? $this->getUrl() + : $this->getOriginalsUrl() . rawurlencode($this->getFichier()); } @@ -724,6 +719,7 @@ class Class_AlbumRessource extends Storm_Model_Abstract { public function collectAuthors() { if (!isset($this->_attributes['authors'])) return; + $authors = $this->_attributes['authors']; unset($this->_attributes['authors']); @@ -750,6 +746,16 @@ class Class_AlbumRessource extends Storm_Model_Abstract { } + public function deletePoster() { + if (!$this->hasPoster()) + return $this; + + $this->deletePosterAndThumbnail(); + + return $this->setPoster(''); + } + + public function deletePosterAndThumbnail() { $this->unlink($this->getPosterPath()); $this->unlink($this->getThumbnailPath()); @@ -757,8 +763,9 @@ class Class_AlbumRessource extends Storm_Model_Abstract { public function unlink($filename) { - if (file_exists($filename)) - unlink($filename); + $file_system = $this->getFileSystem(); + if ($file_system->file_exists($filename)) + @$file_system->unlink($filename); } @@ -809,7 +816,7 @@ class Class_AlbumRessource extends Storm_Model_Abstract { if (!$path = trim($this->hasUrl() ? $this->getUrl() : $this->getFichier())) return ''; - $info = pathinfo($path); + $info = $this->getFileSystem()->pathinfo($path); return isset($info['extension']) ? strtolower($info['extension']) : ''; } @@ -838,7 +845,7 @@ class Class_AlbumRessource extends Storm_Model_Abstract { if (!$fichier = $this->getFichier()) return $this->getId(); - $matches = array(); + $matches = []; preg_match_all('/([0-9_]*B[0-9]*_)?(.+)\.\w+$/', $this->getFichier(), $matches); return $matches[2][0]; } @@ -913,13 +920,14 @@ class Class_AlbumRessource extends Storm_Model_Abstract { } public function getIdEad() { - return "R".$this->getId(); + return 'R' . $this->getId(); } public function getTilesGenerator() { if (!isset($this->_tiles_generator)) $this->_tiles_generator = new Class_AlbumRessource_LeafletTilesGenerator($this); + return $this->_tiles_generator; } @@ -944,18 +952,16 @@ class Class_AlbumRessource extends Storm_Model_Abstract { public function getUnimarcValue($field) { $unimarc = $this->getUnimarcAsArray(); - if (isset($unimarc[$field])) - return $unimarc[$field]; - return null; + return isset($unimarc[$field]) ? $unimarc[$field] : null; } public function setUnimarc($array_or_string) { - if (is_array($array_or_string)) - parent::setUnimarc(serialize($array_or_string)); - else - parent::setUnimarc($array_or_string); + is_array($array_or_string) + ? parent::setUnimarc(serialize($array_or_string)) + : parent::setUnimarc($array_or_string); + return $this; } @@ -963,6 +969,7 @@ class Class_AlbumRessource extends Storm_Model_Abstract { public function addUnimarc($field, $value) { $unimarc = $this->getUnimarcAsArray(); $unimarc[$field] = $value; + return $this->setUnimarc($unimarc); } @@ -970,6 +977,7 @@ class Class_AlbumRessource extends Storm_Model_Abstract { public function addMultipleUnimarc($field, $subfield) { $unimarcs = $this->getUnimarcAsArray(); $unimarcs[] = ['field' => $field, 'data' => $subfield]; + return $this->setUnimarc($unimarcs); } @@ -1081,5 +1089,3 @@ class Class_AlbumRessource extends Storm_Model_Abstract { $view_helper->album_PlayRessourceUrl($this)); } } - -?> \ No newline at end of file diff --git a/library/Class/Testing/FileSystem.php b/library/Class/Testing/FileSystem.php index b1c56d82dec8c5c7d2d5210ae392907f70331ec5..defe3837b31f07122d9e746f7302ffd0d72340fa 100644 --- a/library/Class/Testing/FileSystem.php +++ b/library/Class/Testing/FileSystem.php @@ -26,7 +26,7 @@ class Class_Testing_FileSystem { 'filesize', 'fclose', 'ftell', 'fread', 'feof', 'getcwd', 'file_exists', 'scandir', 'is_dir', 'opendir', 'readdir', 'closedir', 'mkdir','glob','file', 'fwrite','rename', - 'getimagesize', 'file_get_contents', 'sha1_file', 'is_file' + 'getimagesize', 'file_get_contents', 'sha1_file', 'is_file', 'pathinfo' ]; diff --git a/library/ZendAfi/Form/Album/Ressource.php b/library/ZendAfi/Form/Album/Ressource.php index a64172f50700f27e06429bbc3c60299435184439..e3492794629ce8d8395f8bd2cee280bd0d19c3e3 100644 --- a/library/ZendAfi/Form/Album/Ressource.php +++ b/library/ZendAfi/Form/Album/Ressource.php @@ -35,12 +35,12 @@ class ZendAfi_Form_Album_Ressource extends ZendAfi_Form { ->addPosterFor($model) ->detectMediaType($model) ->addDisplayGroup(['media_type', 'fichier', 'url', 'poster', 'link_to'], - 'file', - ['legend' => 'Fichier']) + 'file', + ['legend' => $form->_('Fichier')]) ->addDisplayGroup(['titre', 'folio', 'matiere','duration'], 'ressource', - ['legend' => 'Media']) + ['legend' => $form->_('Media')]) ->addDisplayGroup(['authors'], 'authors_editors', @@ -48,14 +48,13 @@ class ZendAfi_Form_Album_Ressource extends ZendAfi_Form { ->addDisplayGroup(['description'], 'ressource_desc', - ['legend' => 'Description']) + ['legend' => $form->_('Description')]) ->addJs(); if ($album = $model->getAlbum() and !$album->isLivreNumerique()) $form->removeElement('folio'); - return $form; } @@ -66,35 +65,39 @@ class ZendAfi_Form_Album_Ressource extends ZendAfi_Form { ->setAttrib('id', 'ressourcesForm') ->setAttrib('enctype', self::ENCTYPE_MULTIPART) - ->addElement('text', 'titre', ['label' => 'Titre', 'size' => '80']) + ->addElement('text', 'titre', ['label' => $this->_('Titre'), 'size' => '80']) - ->addElement('text', 'folio', ['label' => 'Folio', 'size' => '20']) + ->addElement('text', 'folio', ['label' => $this->_('Folio'), 'size' => '20']) ->addElement('radio', 'media_type', - ['label' => 'Type de média', - 'separator' => '', - 'multioptions' => [1 => 'Image', 2 => 'Autre fichier', 3 => 'Média en ligne'], - 'value' => 1]) + ['label' => $this->_('Type de média'), + 'separator' => '', + 'multioptions' => [1 => $this->_('Image'), + 2 => $this->_('Autre fichier'), + 3 => $this->_('Média en ligne')], + 'value' => 1]) - ->addElement('url', 'url', ['label' => 'Url *', 'size' => '80']) + ->addElement('url', 'url', ['label' => $this->_('Url *'), 'size' => '80']) - ->addElement('url', 'link_to', ['label' => 'Lien vers', 'size' => '80']) + ->addElement('url', 'link_to', ['label' => $this->_('Lien vers'), 'size' => '80']) ->addElement('ckeditor', 'description') - ->addElement('listeSuggestion', 'matiere', ['label' => 'Matières / sujets', - 'name' => 'matiere', - 'rubrique' => 'matiere']) - ->addElement('text', 'duration', ['label' => 'Durée', + ->addElement('listeSuggestion', 'matiere', + ['label' => $this->_('Matières / sujets'), + 'name' => 'matiere', + 'rubrique' => 'matiere']) + + ->addElement('text', 'duration', ['label' => $this->_('Durée'), 'size' => 8]) ->addElement('multiInput', 'authors', - ['label' => 'Auteurs', - 'fields' => [['name' => 'author', 'label' => 'Nom'], - ['name' => 'fonction', 'label' => 'Fonction', + ['label' => $this->_('Auteurs'), + 'fields' => [['name' => 'author', 'label' => $this->_('Nom')], + ['name' => 'fonction', 'label' => $this->_('Fonction'), 'source' => Class_CodifAuteurFonction::getAllLabels()]], 'values' => ['author' => [], 'fonction' => []], - 'deleteMessage' => 'cet auteur']); + 'deleteMessage' => $this->_('cet auteur')]); } @@ -109,10 +112,13 @@ class ZendAfi_Form_Album_Ressource extends ZendAfi_Form { foreach($model->getUnimarcAsArray() as $unimarc) { if (!is_array($unimarc) || '701' != $unimarc['field']) continue; + $values['author'][] = $unimarc['data']['a']; $values['fonction'][] = $unimarc['data']['4']; } + $this->authors->setValues($values); + return $this; } @@ -122,7 +128,8 @@ class ZendAfi_Form_Album_Ressource extends ZendAfi_Form { * @return ZendAfi_Form_Album_Ressource */ public function addFileFor($model) { - $element = new ZendAfi_Form_Element_Image('fichier', ['label' => 'Fichier *']); + $element = new ZendAfi_Form_Element_Image('fichier', + ['label' => $this->_('Fichier *')]); if ($model) { $element ->setBasePath($model->getOriginalsPath()) @@ -138,13 +145,16 @@ class ZendAfi_Form_Album_Ressource extends ZendAfi_Form { * @return ZendAfi_Form_Album_Ressource */ public function addPosterFor($model) { - $element = new ZendAfi_Form_Element_Image('poster', ['label' => 'Affiche / Jacquette']); + $element = new ZendAfi_Form_Element_Image('poster', + ['label' => $this->_('Affiche / Jacquette')]); if ($model) { $element ->setBasePath($model->getOriginalsPath()) ->setBaseUrl($model->getThumbnailsUrl()) - ->setThumbnailUrl($model->getThumbnailUrl()); + ->setThumbnailUrl($model->getThumbnailUrl()) + ->setActionUrl($this->getView()->url(['action' => 'resource-delete-poster'])); } + return $this->addElement($element); } diff --git a/library/ZendAfi/Form/Decorator/DeleteButton.php b/library/ZendAfi/Form/Decorator/DeleteButton.php index 45cc59cff56fc4edd35338eaf7e9f0d93452415f..0098b3017ba753b83a1c68bfb7442940c6a7ad7e 100644 --- a/library/ZendAfi/Form/Decorator/DeleteButton.php +++ b/library/ZendAfi/Form/Decorator/DeleteButton.php @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE * along with BOKEH; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ class ZendAfi_Form_Decorator_DeleteButton extends Zend_Form_Decorator_Abstract { /** @@ -24,16 +24,15 @@ class ZendAfi_Form_Decorator_DeleteButton extends Zend_Form_Decorator_Abstract { * @return string */ public function render($content) { - if (('' == $this->_element->getActionUrl()) || !$this->_element->getValue()) { + if (('' == $this->_element->getActionUrl()) + || !$this->_element->getValue()) return $content; - } - return $content - . $this->_element->getView()->tagAnchor( - $this->_element->getActionUrl(), - $this->_element->getView()->traduire('Supprimer').'<br/>', - array('onclick' => "return confirm('Êtes-vous sur ?');") - ); + return $content . '<br />' + . $this->_element->getView() + ->tagAnchor($this->_element->getActionUrl(), + $this->_element->getView()->_('Supprimer').'<br/>', + ['onclick' => "return confirm('Êtes-vous sur ?');"]); } } ?> \ No newline at end of file diff --git a/tests/application/modules/admin/controllers/AlbumControllerTest.php b/tests/application/modules/admin/controllers/AlbumControllerTest.php index f83269f2b6562a2fd2399ca61bc2189e340ffb61..abd74144f98173be03e6024d3814876aae91cf8b 100644 --- a/tests/application/modules/admin/controllers/AlbumControllerTest.php +++ b/tests/application/modules/admin/controllers/AlbumControllerTest.php @@ -18,16 +18,15 @@ * along with BOKEH; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -require_once 'AdminAbstractControllerTestCase.php'; abstract class Admin_AlbumControllerTestCase extends Admin_AbstractControllerTestCase { + protected $_storm_default_to_volatile = true; protected $_category_wrapper; public function setUp() { parent::setUp(); $time_source = new TimeSourceForTest('2013-12-14 09:00:00'); - Storm_Model_Loader::defaultToVolatile(); $this->fixture('Class_IntBib', ['id' => 1, 'libelle' => 'La Bib']); @@ -133,7 +132,6 @@ abstract class Admin_AlbumControllerTestCase extends Admin_AbstractControllerTes public function tearDown() { Class_Album::setTimeSource(null); - Storm_Model_Loader::defaultToDb(); parent::tearDown(); } } @@ -584,7 +582,6 @@ class Admin_AlbumControllerAddAlbumToPatrimoineTest extends Admin_AlbumControlle public function setUp() { parent::setUp(); $this->dispatch('/admin/album/add_album_to/id/38'); - } @@ -1817,28 +1814,30 @@ class Admin_AlbumControllerDeleteAlbumMesBDTest extends Admin_AlbumControllerTes abstract class Admin_AlbumControllerAlbumHarlockTestCase extends Admin_AlbumControllerTestCase { public function setUp() { parent::setUp(); - $harlock = $this->fixture( - 'Class_Album', - ['id' => 999, - 'titre' => 'Harlock', - 'status' => Class_Album::STATUS_VALIDATED, - 'id_origine' => 'HL22', - 'type_doc_id' => Class_TypeDoc::DIAPORAMA, - 'categorie' => $this->fixture('Class_AlbumCategorie', ['id' => 999, 'libelle' => '']), - 'ressources' => [$this->fixture('Class_AlbumRessource', - ['id' => 1, - 'titre' => 'Arcadia', - 'description' => 'Le vaisseau spatial', - 'fichier' => '1.png', - 'link_to' => '/afi-opac3/cms/viewarticle/id/2', - 'matiere' => '999', - 'ordre' => 5]), - $this->fixture('Class_AlbumRessource', - ['id' => 2, - 'titre' => 'Nausica', - 'fichier' => '2.png', - 'folio' => '4R', - 'ordre' => 1])]]); + $harlock = $this + ->fixture('Class_Album', + ['id' => 999, + 'titre' => 'Harlock', + 'status' => Class_Album::STATUS_VALIDATED, + 'id_origine' => 'HL22', + 'type_doc_id' => Class_TypeDoc::DIAPORAMA, + 'categorie' => $this->fixture('Class_AlbumCategorie', ['id' => 999, 'libelle' => '']), + 'ressources' => [$this->fixture('Class_AlbumRessource', + ['id' => 1, + 'titre' => 'Arcadia', + 'description' => 'Le vaisseau spatial', + 'fichier' => '1.png', + 'link_to' => '/afi-opac3/cms/viewarticle/id/2', + 'matiere' => '999', + 'ordre' => 5]), + + $this->fixture('Class_AlbumRessource', + ['id' => 2, + 'titre' => 'Nausica', + 'fichier' => '2.png', + 'folio' => '4R', + 'ordre' => 1]) + ]]); } } @@ -1855,7 +1854,8 @@ class Admin_AlbumControllerAlbumHarlockPreviewAlbumTest extends Admin_AlbumContr /** @test */ public function pageShouldContainsInputToModifyBoxHeight() { - $this->assertXPath("//input[@id='op_hauteur_boite'][@value=400]"); + $this->assertXPath("//input[@id='op_hauteur_boite'][@value=400]", + $this->_response->getBody()); } @@ -2008,7 +2008,9 @@ class Admin_AlbumControllerAlbumHarlockEditImagesActionTest extends Admin_AlbumC -class Admin_AlbumControllerAlbumHarlockEditRessourceOneActionTest extends Admin_AlbumControllerAlbumHarlockTestCase { +class Admin_AlbumControllerAlbumHarlockEditRessourceOneActionTest + extends Admin_AlbumControllerAlbumHarlockTestCase { + public function setUp() { parent::setUp(); $this->dispatch('/admin/album/edit_ressource/id/1'); @@ -2046,25 +2048,25 @@ class Admin_AlbumControllerAlbumHarlockEditRessourceOneActionTest extends Admin_ /** @test */ - function textAreaDescriptionShouldContainsLeVaisseauSpatial() { + public function textAreaDescriptionShouldContainsLeVaisseauSpatial() { $this->assertXPathContentContains('//textarea[@name="description"]', 'Le vaisseau spatial'); } /** @test */ - function inputFileShouldBeVisible() { + public function inputFileShouldBeVisible() { $this->assertXPath('//input[@type="file"]'); } /** @test */ - function inputLinkToShouldContainsViewArticleTwo() { + public function inputLinkToShouldContainsViewArticleTwo() { $this->assertXPath('//input[@name="link_to"][contains(@value, "cms/viewarticle/id/2")]'); } /** @test */ - function formShouldHaveTagSuggestForMatiere() { + public function formShouldHaveTagSuggestForMatiere() { $this->assertXPath("//input[@name='matiere'][@value='999']"); } @@ -3134,4 +3136,96 @@ class Admin_AlbumControllerConfigActionTest extends Admin_AbstractControllerTest } } -?> + + + +abstract class Admin_AlbumControllerWebsiteWithPosterTestCase + extends Admin_AlbumControllerTestCase { + + public function setUp() { + parent::setUp(); + + $this + ->fixture('Class_Album', + ['id' => 17, + 'titre' => 'Framasoft', + 'status' => Class_Album::STATUS_VALIDATED, + 'id_origine' => 'FRAMA17', + 'type_doc_id' => Class_TypeDoc::WEBSITE, + 'categorie' => $this->fixture('Class_AlbumCategorie', + ['id' => 17, 'libelle' => '']), + 'ressources' => [$this->fixture('Class_AlbumRessource', + ['id' => 1, + 'titre' => 'Framasoft.org', + 'description' => 'Un site qu\'il est bien', + 'url' => 'http://framasoft.org', + 'poster' => 'framasoft.org.png', + 'ordre' => 1]) + ]]); + } +} + + + +class Admin_AlbumControllerWebsiteWithPosterEditResourceTest + extends Admin_AlbumControllerWebsiteWithPosterTestCase { + public function setUp() { + parent::setUp(); + $this->dispatch('/admin/album/edit_ressource/id/1', true); + } + + + /** @test */ + public function posterInputShouldBePresent() { + $this->assertXPath('//input[@type="file"][@name="poster"]'); + } + + + /** @test */ + public function posterDeleteLinkShouldBePresent() { + $this->assertXPath('//a[contains(@href, "admin/album/resource-delete-poster/id/1")]'); + } +} + + + +class Admin_AlbumControllerWebsiteWithPosterResourceDeletePosterTest + extends Admin_AlbumControllerWebsiteWithPosterTestCase { + protected $_file_system; + + public function setUp() { + parent::setUp(); + + $this->_file_system = $this->mock() + ->whenCalled('file_exists')->answers(true) + ->whenCalled('unlink')->answers(null) + + ->whenCalled('pathinfo') + ->with('http://framasoft.org') + ->answers(['extension' => 'org']) + ; + + Class_AlbumRessource::setFileSystem($this->_file_system); + $this->dispatch('/admin/album/resource-delete-poster/id/1', true); + } + + + public function tearDown() { + Class_AlbumRessource::setFileSystem(null); + parent::tearDown(); + } + + + /** @test */ + public function resourceShouldNotHavePosterAnymore() { + $this->assertEquals('', Class_AlbumRessource::find(1)->getPoster()); + } + + + /** @test */ + public function fileShouldHaveBeenDeleted() { + $this->assertTrue($this->_file_system + ->methodHasBeenCalledWithParams('unlink', + ['./userfiles/album/17/big/media/framasoft.org.png'])); + } +}